Best Small Language Models on Hugging Face Right Now!

TL;DR · AI 摘要
This article highlights the advancements in small language models, specifically those with under 7 billion parameters, which can now run on consumer GPUs or even laptops. It emphasizes that these models are now capable of performing tasks that were previously only achievable by much larger models, thanks to improvements in training data quality, distillation techniques, and architectural innovations like Mixture-of-Experts (MoE). The article provides a curated list of the best small language models available on Hugging Face, along with their capabilities and benchmark scores.
核心要点
- Small language models under 7 billion parameters are now capable of performing complex tasks previously reserved for much larger models.
- Advancements in training data quality, distillation techniques, and architectural improvements have significantly enhanced the capabilities of small models.
- Models like Gemma 3 and Phi-4-mini are leading the way in small model performance, achieving high scores on benchmarks like GSM8K and ARC-C.
结构提纲
按章节快速跳转。
Introduces the concept of small language models and their increasing capabilities, challenging the notion that larger models are always necessary.
Explains the recent improvements in small models due to better training data, distillation techniques, and architectural advancements.
Discusses how focusing on the quality of training data has led to significant improvements in model performance.
Explains how distilling knowledge from larger models into smaller ones enhances their capabilities without increasing their size.
Highlights innovations like Mixture-of-Experts (MoE) that allow small models to have the capacity of larger ones without the parameter count.
Provides definitions for parameters and commonly referenced benchmarks like MMLU-Pro, GSM8K, and HumanEval.
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Best Small Language Models
金句 / Highlights
值得收藏与分享的关键句。
A 4-billion-parameter model released in early 2025 is now outscoring models that were 7x larger on standard reasoning benchmarks.
The honest reason most people ignored small models until recently is that they were not good enough.
Three things changed the trajectory: better training data, not more of it; distillation from frontier models; and architectural improvements.
#简介
这里有一个观点可能会改变你对AI模型大小的看法:2025年初发布的一个40亿参数模型现在在标准推理基准测试中的表现超过了7倍大的模型。Google的Gemma 3 4B在GSM8K数学推理上达到了89.2%的准确率。Microsoft的Phi-4-mini 3.8B在ARC-C上达到了83.7%,这是其整个规模类别中的最高分。这些数字以前属于300亿参数以上的模型。因此,“我真需要一个700亿参数的模型来完成这个任务吗?”这个问题值得重新考虑。
对于本文而言,“小”模型指的是参数量低于70亿的模型,这些模型可以在单个消费级GPU、笔记本电脑甚至配备适当设置的现代智能手机上运行。这个阈值很重要,因为它标志着需要大量基础设施的模型和任何人都可以实际部署的模型之间的界限。无需云服务费用,无需等待API速率限制,只需本地运行的模型,就能完成实际工作。
本文将为您提供:Hugging Face上当前最佳的小型语言模型的精选概述,每个模型实际擅长的领域,支持这些说法的基准测试数据,以及开始使用每个模型的代码。
#为什么现在小型语言模型值得您的关注
坦率地说,人们直到最近才忽视小型模型,是因为它们不够好。2022年的一个30亿参数模型在多步推理上会挣扎,在代码生成上会失败,并且在任何微妙的任务上产生的输出都是泛泛的、不值得记忆的。这种声誉一直持续,尽管模型已经悄悄地变得好得多。
有三件事改变了这一轨迹:
- 更好的训练数据,而不仅仅是更多的数据。Microsoft在Phi-4-mini上训练了5万亿个token,但重点是质量。生成的用于密集推理的合成数据、经过筛选的公共网络内容和结构化的教育材料。这个赌注得到了回报。一个经过精心训练的3.8B模型在正确数据上的表现超过了粗放训练的130亿参数模型。Qwen3-0.6B,仅有6亿参数,支持超过100种语言,因为其训练语料库是专门为这个目标构建的,而不是事后考虑的。
- 从前沿模型中提炼。DeepSeek-R1-Distill-Qwen-1.5B是一个15亿参数的模型,通过训练来自更大推理模型的输出来学习推理。结果是一个小型模型,能够像两年前同规模模型无法做到的那样,逐步解决问题。蒸馏现在已成为标准策略:从一个巨大的有能力的教师模型中学习,将它的行为压缩到小得多的参数量中。
- 架构改进。专家混合(MoE)改变了“参数量”所代表的含义。Google的Gemma 3n E4B有80亿总参数,但每个token只激活40亿参数;它具有40亿参数模型的内存占用,同时利用了80亿参数模型的能力。混合注意力机制和更长的上下文窗口(即使是小于50亿参数的模型,128K现在也很常见)进一步推动了能力的提升,而没有增加模型的大小。
如果你在Hugging Face的模型页面上花费过时间,你会知道它们可能很密集。在深入模型列表之前,这里快速解释一下将反复出现的术语。
- 参数。参数是模型内部的数值权重,决定了它如何响应输入。更多的参数通常意味着更大的知识存储能力和处理复杂推理的能力,但并不总是意味着更好的输出。
- 你将看到引用的基准测试。
- [MMLU-Pro](https://huggingface.co/datasets/TIGER-Lab/MMLU-Pro)是经典的大型多任务语言理解(MMLU)测试的更难版本。它涵盖了57个学术科目——法律、医学、历史、物理等——并且答案选项设计得非常具有挑战性。一个低于50亿参数的模型在MMLU-Pro上获得50分以上是值得注意的;超过70分是卓越的。
- [GSM8K](https://huggingface.co/datasets/openai/gsm8k)(小学数学8K)包含8,500个小学数学文字题,需要多步推理来解决。听起来简单,但这些测试一致地区分了能够推理的模型和只能进行模式匹配的模型。得分以正确解决问题的百分比报告。
- [HumanEval](https://huggingface.co/datasets/openai_humaneval/openai_humaneval)测试代码生成。模型会得到一个Python函数签名和一个文档字符串,需要编写通过隐藏测试套件的代码。对于小于50亿参数的模型,超过60%的得分是非常印象深刻的。
- [ARC-C](https://huggingface.co/datasets/allenai/ai2_arc)(AI2推理挑战)是来自标准化考试的科学问题集合,特别是那些其他AI系统难以解决的问题。它测试常识和科学推理。
#模型列表
**1. Google Gemma 3n E4B**
参数量:40亿
特点:
- 推理能力:在GSM8K上达到89.2%的准确率,这通常需要更大规模的模型。
- 多语言支持:虽然主要针对英语,但具有一定的多语言能力。
- 上下文窗口:128K token,适合长文本处理。
适用场景:
- 教育和学习辅助:特别适合需要多步推理的数学和科学问题。
- 内容生成:如文章写作、故事创作等。
使用代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "google/gemma-3n-E4B-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
input_text = "What is the solution to this math problem: 2x + 3 = 7?"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=100, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)**2. Microsoft Phi-4-mini**
参数量:3.8亿
特点:
- 广泛的知识覆盖:在MMLU-Pro上表现出色,涵盖多个学术领域。
- 科学推理:在ARC-C上达到83.7%,是其规模类别中的最高分。
- 指令调优:经过精心设计的指令微调,能够理解并响应复杂的用户指令。
适用场景:
- 知识问答:适用于需要跨学科知识的问题。
- 科学和教育应用:如科学解释、概念教学等。
使用代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "microsoft/Phi-4-mini-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
input_text = "Explain the theory of relativity in simple terms."
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=150, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)**3. Qwen3-0.6B**
参数量:6亿
特点:
- 多语言支持:支持超过100种语言,适合全球用户。
- 通用任务:在多种任务上表现出色,包括文本生成、翻译和摘要。
- 训练数据优化:专门设计的训练语料库,注重语言多样性和质量。
适用场景:
- 多语言应用:如全球性的客户服务、多语言内容生成。
- 通用助手:提供跨语言的通用信息查询和帮助。
使用代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "qwen3-0.6B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
input_text = "Translate 'hello world' into Spanish."
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=50, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)**4. DeepSeek-R1-Distill-Qwen-1.5B**
参数量:15亿
特点:
- 推理能力:通过从更大模型中提炼知识,能够在小规模下实现复杂的推理。
- 代码生成:在HumanEval上表现出色,能够生成高质量的代码。
- 效率:相对于其能力,参数量相对较小,运行效率高。
适用场景:
- 代码辅助:如代码自动完成、调试帮助。
- 技术写作:如文档生成、教程创作。
使用代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
input_text = "Write a Python function to calculate the factorial of a number."
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=100, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)**5. Meta LLaMA 7B**
参数量:70亿
特点:
- 高性能:在多个基准测试中表现出色,包括语言建模和推理任务。
- 开源:社区可以自由使用和进一步开发。
- 多功能性:适用于多种NLP任务,包括翻译、摘要和对话生成。
适用场景:
- 研究和开发:由于其开源性质,适合学术研究和创新项目。
- 企业应用:如客户支持、内容生成和个性化推荐。
使用代码示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "meta-llama/llama-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
input_text = "Tell me a joke."
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=100, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)#结论
小型语言模型的快速发展使得它们在各种应用中变得越来越有吸引力。从教育和科学推理到多语言支持和代码生成,这些模型提供了强大的功能,同时保持了部署的灵活性和效率。通过选择合适的模型并利用其特定的优势,开发者和研究人员可以实现高效、成本效益高的解决方案,而无需依赖大规模的模型和昂贵的基础设施。随着技术的不断进步,小型模型的潜力将继续扩大,为更广泛的应用场景打开大门。
#参考文献
基础模型 vs. 指令模型 vs. 思考模型。基础模型是训练来预测下一个标记的——它生成文本,但不一致地遵循指令。指令模型已经过微调,以在对话格式中对提示做出有用的回答。这是大多数应用程序所需要的。思考或推理模型(如Qwen3的“思考模式”或DeepSeek-R1馏分)更进一步:它们在回答之前生成链式思考推理过程,这提高了复杂问题的准确性,但以较慢的响应时间为代价。此列表中的大多数模型都是指令变体。
量化和GGUF。刚完成训练的模型将其权重存储在16位或32位浮点格式中——精确但体积大。量化压缩这些权重以使用更少的位。Q4表示4位量化:每个权重使用4位而不是16位,将内存使用量减少大约75%。根据社区测试,Q4_K_M量化保留了原始模型输出质量的约90-95%,同时仅需要一小部分内存。GGUF是打包这些量化模型以与[llama.cpp](https://github.com/ggerganov/llama.cpp)一起使用的文件格式,这是最广泛使用的本地推理引擎。如果你看到列表中某个模型被列为“X GB(Q4)”,那就是加载量化版本所需的近似RAM量。
#1. Qwen3.5-4B(阿里云)
在这个列表中,如果有一个模型覆盖了最多的领域,那就是[Qwen3.5-4B](https://huggingface.co/Qwen/Qwen3.5-4B)。它由阿里云于2026年3月发布,是Qwen3.5小型系列的中心——该系列从0.8B到9B不等,所有模型共享相同的架构,并且都带有Apache 2.0许可证,这意味着你可以将其用于商业产品,而不必担心使用限制。
头条数字是上下文窗口。根据官方模型卡片,Qwen3.5-4B支持原生上下文长度为262,144个标记,可扩展到超过一百万个。对于一个4B的模型来说,这是非凡的。大多数同规模的模型上下文长度限制在128K。
该模型默认以思考模式运行,在响应之前生成推理链。当你不需要深度时,可以关闭它以获得更快的直接答案。
最佳用途:跨语言的通用任务、指令遵循、长文档处理,以及未来可能涉及多模态输入的任何应用程序。
代码:加载和运行推理
# 安装:pip install transformers torch accelerate
from transformers import AutoModelForCausalLM, AutoTokenizer
# 指定Hugging Face Hub中的模型ID
model_id = "Qwen/Qwen3.5-4B"
# 加载分词器——处理文本编码和聊天格式化
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 加载模型;torch_dtype="auto"选择最佳精度
# device_map="auto"自动将层放置在可用硬件上
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto"
)
# 构建对话,作为消息字典的列表
messages = [
{"role": "system", "content": "你是一个乐于助人的助手."},
{"role": "user", "content": "用简单的话解释监督学习和无监督学习的区别."}
]
# 使用模型内置的聊天模板格式化消息
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
# 设置enable_thinking=False跳过推理链,以获得更快的输出
# 如果你想让模型在回答前逐步推理,请删除此行
enable_thinking=False
)
# 将输入转换为模型设备上的张量
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# 生成响应——max_new_tokens限制输出长度
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512
)
# 解码仅新生成的标记(不包括输入提示)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):]
response = tokenizer.decode(output_ids, skip_special_tokens=True)
print(response)代码作用:从Hugging Face加载模型和分词器,使用模型内置的聊天模板格式化对话,生成响应,并仅解码新生成的标记,以避免重复回传提示。enable_thinking=False标志将模型置于直接响应模式——如果想要模型先进行逐步推理再回答,请删除此行。
#2. Microsoft Phi-4-mini-instruct(3.8B)
Phi-4-mini是微软对正确训练数据胜过原始规模的赌注。它有3.8B个参数,在5万亿个标记的精心过滤和合成数据上训练,ARC-C得分为83.7%——在不到100亿参数的模型中,这是最高的。其GSM8K得分为88.6%,SimpleQA事实准确性为91.1%,与两到三倍大小的模型相比,表现相当。
Q4_K_M GGUF文件大小为2.49 GB,这意味着它可以在低至4 GB RAM的机器上运行。对于希望在没有GPU要求的中端笔记本电脑上获得强大AI的任何人来说,Phi-4-mini可能是本列表中最实用的选择。
它所牺牲的是多语言深度和多模态输入。它主要在英语文本上进行训练,因此在非英语任务上表现会较差。如果你的用例是英语语言推理、知识检索或结构化任务,这种权衡是可以接受的。
最佳用途:推理密集型任务、知识丰富的问答,以及在英语工作负载上运行在硬件受限环境中的任何人。
代码:使用transformers的基本推理调用
#3. Google Gemma 3 4B IT
[Gemma 3 4B IT](https://huggingface.co/google/gemma-3-4b-it) 是一个令人惊喜的模型,一旦人们实际运行它,就会被其表现所震撼。在代码和数学任务上,它表现出远超40亿参数模型的能力。在 HumanEval 上达到71.3%的得分,这与参数量两倍的模型相当,而在 GSM8K 数学推理任务上达到89.2%的准确率,使其在处理中小学乃至早期大学水平的数学问题时表现出色。
该模型支持多模态输入(文本和图像),并且拥有128K的上下文窗口,足以处理完整的论文或较大的代码库进行分析。IT代表指令微调,意味着这是经过指令微调的版本,使其在对话中更擅长遵循指令,而不是原始的预训练基础模型。
适用场景: 代码生成、数学密集型任务,以及希望在不超过40亿参数的情况下使用多模态输入的项目。
# 安装:pip install transformers torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "google/gemma-3-4b-it"
# 加载分词器,处理 Gemma 的特定对话格式
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 加载模型;bfloat16将内存需求减半
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# Gemma 使用基于角色的对话模板,始终以这种方式传递消息
messages = [
{"role": "user", "content": "编写一个Python函数,检查字符串是否是回文。”}
]
# 使用模型内置的对话模板对消息进行分词
inputs = tokenizer.apply_chat_template(
messages,
return_tensors="pt",
add_generation_prompt=True
).to(model.device)
# 运行生成
with torch.no_grad(): # 禁用梯度跟踪,加速推理
outputs = model.generate(
inputs,
max_new_tokens=400,
do_sample=True,
temperature=0.7
)
# 剔除输入令牌,仅解码响应部分
response = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)
print(response)代码功能: 加载 Gemma 3 4B IT,将编码提示封装在预期的对话格式中,并生成响应。torch.no_grad() 上下文管理器告诉 PyTorch 在推理期间不跟踪梯度,这可以节省内存并加快速度,在推理时总是值得包含。
#4. Google Gemma 3n E4B(移动端的)
[Gemma 3n E4B](https://huggingface.co/google/gemma-3n-E4B-it) 是一个不同类型的模型。谷歌专门为其在设备上的部署而构建,如手机、边缘硬件和本地应用,其架构与其他列表中的模型有所不同。
关键创新是 [MatFormer](https://developers.googleblog.com/en/introducing-gemma-3n-developer-guide/),一种嵌套的 Transformer 架构,将一个小模型(E2B)嵌入到大模型(E4B)中。E4B 拥有80亿原始参数,但运行时仅需3GB内存,因为 Per-Layer Embeddings (PLE) 将大部分权重保留在CPU上,只有核心 Transformer 层驻留在加速器内存中。净结果是:在40亿参数级别的内存要求下,获得40亿参数级别的性能,而基础模型的容量是其两倍。
适用场景: 设备端和移动部署、多模态应用(文本+图像+音频在一个模型中),以及任何将内存效率作为首要优先级的场景。
#5. Meta Llama 3.2 3B Instruct
[Llama 3.2 3B Instruct](https://huggingface.co/meta-llama/Llama-3.2-3B-Instruct) 在这个列表中的基准测试数字可能不是最闪亮的,但它拥有其他大多数模型所没有的东西:一个庞大且活跃的社区。在 Hugging Face 上有超过218万次下载,它是这里部署最广泛的小微型模型,这意味着更多的微调、更多的集成、更多的社区工具和更多的实际世界测试,比大多数其他替代方案都要多。
#7. DeepSeek-R1-Distill-Qwen-1.5B
大多数1.5B参数的模型主要用于自动完成功能、简单的聊天,以及不多的其他用途。[DeepSeek-R1-Distill-Qwen-1.5B](https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B)是一个值得注意的例外。它是在DeepSeek-R1的输出上训练的,DeepSeek-R1是一个更大规模的前沿推理模型,这意味着它通过观察一个能力更强的教师模型来学习推理。结果是一个1.5B参数的模型,可以在数学和逻辑问题上产生多步推理链,而在相同规模的其他模型往往会在这些任务上放弃并猜测答案。
最佳应用场景:需要在有限资源下进行复杂推理的任务,如教育软件、个人助手或任何需要在小型设备上进行智能交互的场景。
# 安装:pip install transformers torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
# 加载tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 以bfloat16加载模型以保持低内存使用(约2GB)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# 定义对话 —— 系统提示设置模型的行为
messages = [
{"role": "system", "content": "You are a helpful assistant. Be concise and accurate."},
{"role": "user", "content": "Summarize the key differences between REST and GraphQL APIs."}
]
# 应用聊天模板 —— 对于Llama模型至关重要,控制特殊标记
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
# 生成响应
with torch.no_grad():
output = model.generate(
inputs,
max_new_tokens=300,
temperature=0.6, # 较低的温度值产生更专注和确定性的输出
do_sample=True,
pad_token_id=tokenizer.eos_token_id # 防止填充警告
)
# 解码仅模型的响应(不包括输入)
response = tokenizer.decode(output[0][inputs.shape[-1]:], skip_special_tokens=True)
print(response)代码功能:需要注意的是pad_token_id=tokenizer.eos_token_id。Llama模型在生成过程中经常会产生警告,因为tokenizer没有定义单独的填充标记。将它设置为序列结束标记可以干净地抑制该警告,而不会影响输出质量。
#6. HuggingFaceTB SmolLM3-3B
[SmolLM3](https://huggingface.co/HuggingFaceTB/SmolLM3-3B)是Hugging Face自己的模型,其独特之处在于透明度。权重是开放的。训练数据的混合比例是公开文档。训练配置是公开的。评估代码也是共享的。对于研究人员、教育工作者或在模型之上构建并需要确切了解所使用内容的团队来说,这种开放性是罕见的。
该模型本身是通过三阶段课程训练的:第一阶段涵盖11.2万亿训练标记的一般网络文本,第二阶段引入高质量的数学和代码数据,第三阶段专注于推理。这种分阶段的方法模仿了人类教育的实际方式,并且根据SmolLM3博客文章,在知识和推理基准测试中,该模型在3B参数类别中排名第一或第二,包括HellaSwag和ARC。当启用推理模式时,AIME 2025性能从9.3%跃升至36.7%。
它还默认支持工具调用,原生支持6种欧洲语言,并通过YARN扩展到128K上下文。建模代码需要transformers v4.53.0或更高版本。
最佳应用场景:研究、可重复实验、透明度至关重要的开源项目,以及欧洲多语言部署。
# 安装:pip install "transformers>=4.53.0" torch accelerate
# SmolLM3需要transformers v4.53.0或更高版本 —— 较旧的版本会失败
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM3-3B"
# 使用"cuda"进行GPU或"cpu"进行CPU-only推理
device = "cuda"
# 加载tokenizer
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
# 加载模型 —— 对于多GPU设置,使用device_map="auto"
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
# 构建并应用聊天模板
messages = [
{"role": "user", "content": "解释Transformer模型中的注意力概念。"}
]
# SmolLM3使用标准聊天模板 —— 在标记化之前应用它
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
).to(device)
# 生成响应
outputs = model.generate(
inputs,
max_new_tokens=400,
do_sample=True,
temperature=0.7
)
# 解码仅新生成的标记
response = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)
print(response)代码功能:直接加载和生成。需要注意的是transformers版本——SmolLM3的架构需要v4.53.0或更高版本。使用旧版本会抛出错误,而不是产生不良输出,因此很容易捕获。
#5. Meta Llama-3.2-3B-Instruct
在Q4量化下仅2GB,它也是本列表中最小的全功能模型。它干净地处理工具调用和结构化输出——Meta在构建时考虑了代理用例——使其自然适用于模型需要调用外部API或生成另一个系统消费的JSON的管道。
最佳应用场景:工具调用、结构化输出管道、移动应用,以及任何能从广泛社区支持中受益的项目。
# 安装:pip install transformers torch
# 注意:在从Hugging Face下载之前,您需要接受Llama 3.2的许可
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "meta-llama/Llama-3.2-3B-Instruct"
# 加载tokenizer —— Llama 3.2使用自己的特殊聊天标记
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 以bfloat16加载以保持低内存使用(~2GB在此精度下)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# 定义对话 —— 系统提示设置模型的行为
messages = [
{"role": "system", "content": "You are a helpful assistant. Be concise and accurate."},
{"role": "user", "content": "总结REST和GraphQL API之间的关键差异。"}
]
# 应用聊天模板 —— 对于Llama模型至关重要,控制特殊标记
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
# 生成响应
with torch.no_grad():
output = model.generate(
inputs,
max_new_tokens=300,
temperature=0.6, # 较低的温度值产生更专注和确定性的输出
do_sample=True,
pad_token_id=tokenizer.eos_token_id # 防止填充警告
)
# 解码仅模型的响应(不包括输入)
response = tokenizer.decode(output[0][inputs.shape[-1]:], skip_special_tokens=True)
print(response)代码功能:需要注意的是pad_token_id=tokenizer.eos_token_id。Llama模型在生成过程中经常会产生警告,因为tokenizer没有定义单独的填充标记。将它设置为序列结束标记可以干净地抑制该警告,而不会影响输出质量。
以下是将上述英文Markdown文章翻译成中文的结果:
在大约1GB的Q4量化下,它是列表中具有真正推理能力的最小模型。它几乎可以适应任何硬件——具有足够RAM的树莓派、旧笔记本、嵌入式设备。这种小尺寸结合推理行为,使其适用于任何需要在结构化问题上进行轻量级推理的场景,且无法承担更大模型的负担。
权衡:它不是通用的聊天机器人。它的优势在于数学、逻辑和推理。对于创造性任务或开放性对话,相对于其尺寸类别,它的表现会较差。
最适合的场景: 边缘设备、嵌入式系统、轻量级推理管道,以及任何项目中1GB模型大小是硬性要求的情况。
#8. Qwen3-0.6B
[Qwen3-0.6B](https://huggingface.co/Qwen/Qwen3-0.6B)处于当前被称为语言模型的边缘。拥有6亿参数,它运行在大多数人甚至不会考虑用于AI的硬件上,但仍能完成有用的任务。在Hugging Face上,它有1910万次下载,这表明很多人已经找到了它的实际用途。
它与Qwen3家族的其他成员一样,具有双模式架构:思考模式用于需要推理的问题,非思考模式用于快速直接的响应。支持超过100种语言。对于文本分类、短文本自动补全、基本摘要或移动应用中的轻量级设备功能等任务,相对于其尺寸,它确实具备能力。
不要期望它能编写复杂的代码、处理长输入的多步推理,或在与30亿参数以上的模型进行基准测试时竞争。这不是它设计的目的。它被设计为在任何地方运行——并且它确实做到了。
最适合的场景: 自动补全、文本分类、简单的设备端功能、超约束硬件,以及在更大模型显得过剩的快速原型设计中。
#结论
本文不断强调的故事很简单:小不再意味着受限。一个38亿参数的模型达到了去年看起来像300亿参数领域的基准数字。一个在2GB RAM中运行的模型正在处理以前需要企业级基础设施的推理任务。这不仅仅是营销——这是基准数据实际显示的内容,并且在大多数人已经拥有的硬件上可以重现。
实际影响是,对于越来越多的任务,将前沿API作为默认选择的决定值得质疑。如果你的工作负载是英语推理、代码生成或结构化输出,Phi-4-mini或Gemma 3 4B IT在笔记本电脑上就能覆盖大部分需求。如果你正在构建多语言应用,Qwen3.5-4B是一个商业友好的Apache 2.0许可模型,具有262K的上下文窗口和原生图像理解能力。如果你的目标是移动设备或边缘硬件,Gemma 3n E4B正是为此而设计的——在这个类别中,列表中的其他模型都无法与之匹敌。如果你想确切地知道你所部署的内容——每一个数据源,每一个训练决策——SmolLM3-3B是这个类别中唯一完全透明的选择。
Shittu Olumide是一位软件工程师和技术作家,热衷于利用尖端技术来创作引人入胜的故事,他对细节有着敏锐的眼光,并擅长简化复杂概念。你也可以在Twitter上找到Shittu。
注意: 由于原文中包含了一些链接和特定的模型名称,这些在翻译中保持不变,以确保信息的准确性和完整性。