完整文档索引见 llms.txt。 在任意 URL 后追加 `.md` 即可查看该页面的 Markdown 版本。
选择合适的模型
在构建 AI 应用时,选择合适的 LLM 是最早需要做出的决策之一。
不同模型是为不同目的设计的。有些模型专注于文本生成,有些针对遵循指令进行了优化,还有一些强调效率或多模态任务能力。
什么是基础模型?
基础模型(base models),也称 foundation models,是大多数 LLM 的起点。它们通常通过无监督学习在海量文本语料上训练,而这种训练不需要标注数据。
在这个被称为预训练的初始阶段中,模型会学习通用语言模式,例如语法、句法、语义和上下文。它会获得预测下一个词(或 token)的能力,也能执行简单的 few-shot learning(只看少量示例后就处理任务)。不过,它此时还不理解如何遵循指令,也没有针对特定任务进行开箱即用的优化。
为了真正变得可用,这些模型通常还会在经过整理的数据集上继续微调,例如通过 instruction fine-tuning。基于基础模型,你可以得到:
- Instruction-tuned models
- Chat models
- Fine-tuned domain models
- RLHF aligned models
基础模型示例:Qwen3.5-0.8B-Base、DeepSeek-V3-Base、GPT 风格的预训练模型
Instruction-tuned 模型 vs. chat 模型
Instruction-tuned 模型构建在基础模型之上。在初始预训练阶段之后,这些模型会进入第二阶段训练,使用由指令及其对应响应组成的数据集。
这个过程会教会模型更可靠地遵循用户的 prompts, 从而更好地与人类预期对齐。它们能够理解任务意图,并更连贯地响应如下命令:
- “总结这篇文章。”
- “解释 LLM 推理是如何工作的。”
- “列出远程办公的优点和缺点。”
这使它们在聊天机器人、虚拟助手,以及直接与用户交互的 AI 工具等真实应用中更实用。
如果你在某个 LLM 名称中看到 “Instruct”,通常意味着该模型经过了 instruction-tuned。不过,“Instruct” 模型并不一定就是完整的聊天机器人。它们被优化来完成给定任务或遵循指令,而不是维持多轮对话。
相比之下,chat 模型通常还会进一步针对交互式聊天场景进行调优(通常使用对话数据以及 RLHF/DPO)。人们期望它们能跨轮次处理上下文,并与多个参与者交互。你可以阅读 Instruction and Chat Fine-Tuning 了解更多。
Instruct 模型示例:Meta-Llama-3-8B-Instruct、Qwen3-4B-Instruct-2507、Kimi-K2-Instruct-0905
Dense 模型 vs. Mixture of Experts (MoE) 模型
大多数传统 LLM 都是 dense 模型。这意味着在推理期间,网络中的每一个参数都会被用于每一个 token。
Mixture of Experts (MoE) 模型,例如 DeepSeek-V4 Pro, 则采用了与传统 dense 模型不同的方法。它们不会对每个输入都使用全部模型参数,而是包含多个专门化的子网络,也就是 experts,每个 expert 侧重于不同类型的数据或任务。
在推理期间,只有其中一部分 expert 会根据输入特征被激活。这种选择机制使模型能够更有选择性地路由计算,根据内容或上下文调用不同的 expert。结果是,MoE 模型能够通过在大规模网络中分配工作负载,在保持单次推理计算成本可控的同时,实现更强的可扩展性与效率。
| 模型类型 | 工作方式 | 优点 | 缺点 |
|---|---|---|---|
| Dense | 使用全部参数 | 架构简单 | 规模化成本高 |
| MoE | 选择性激活 experts | 扩展效率高 | 路由更复杂 |
将 LLM 与其他模型结合使用
现代 AI 应用很少只使用单一 LLM。许多高级系统依赖将 LLM 与其他类型的模型组合起来,每种模型分别专注于不同模态或任务。这使它们能够超越纯文本生成,变得更强大、更多模态、更理解任务。
常见例子包括:
- Small Language Models (SLMs)。适用于延迟和资源约束都重要的轻量任务。它们可以作为回退模型,或作为端侧助手,在不依赖完整 LLM 的情况下处理基础交互。
- Embedding models。它们将输入(如文本、图像)转换为向量表示,因此适用于语义搜索、RAG 流水线、推荐系统和聚类。
- Image generation models。Stable Diffusion 等模型可以根据文本提示词生成图像。与 LLM 配合后,它们可以支持更高级的文生图工作流,例如创意助手、内容生成器或多模态 agent。
- Vision language models (VLMs)。NVLM 1.0 和 Qwen2.5-VL 等模型结合了视觉和文本理解,支持图像描述、视觉问答,或对截图和图表进行推理等任务。
- Text-to-speech (TTS) models。它们可以将文本转换为自然语音。与 LLM 集成后,可用于语音 agent、无障碍界面或沉浸式体验。
进一步了解 multi-model inference pipelines。
去哪里获取模型
当你知道自己需要哪一类模型后,下一个问题就很简单了:你到底去哪里找它们?
如今大多数团队并不会从头训练模型。它们会从开放模型中心获取模型、进行适配,然后部署。
Hugging Face
Hugging Face 是大多数团队的默认起点。它托管了数十万个开放模型,涵盖文本、视觉、音频和多模态任务。你可以在那里找到基础模型、instruct 模型、chat 变体、embedding 模型和 diffusion models。Hugging Face 还提供许多 fine-tuned 和 quantized model 变体,让你无需自己微调,就能轻松试验 instruction-tuned 模型或低 VRAM 模型。
人们使用它的原因:
- 庞大的生态和社区采用度
- 清晰的 model card,说明许可证、基准测试和适用场景
- 大多数推理框架中的原生支持(例如 vLLM、SGLang、TensorRT-LLM)
- 便于获取权重、配置和 tokenizer
需要注意的是,并不是 Hugging Face 上的所有模型都同样易于获取。有些模型完全开放,无需认证即可下载。另一些则是 gated 的,这意味着你必须接受特定许可条款,并使用 Hugging Face API token 才能访问权重。
通常会在以下情况下发生:
- 模型带有限制性或自定义许可证
- 作者希望知道是谁在使用模型
- 模型仅面向研究用途或受控商业用途发布
在实践中,这意味着你可能需要:
- 创建一个 Hugging Face 账户
- 生成一个 API token
- 将该 token 传递给你的
inference framework
或部署环境(例如通过
HF_TOKEN这样的环境变量)
需要 gated 访问的模型通常伴随着更严格的使用条款、更少的运维打磨,或较弱的长期可用性保证。
一个简单经验法则是:如果某个模型需要 token 和人工审批,请在基于它构建之前,仔细确认它是否符合你的生产和法律约束。
其他还需要留意的事项:
- 许可证差异(Apache-2.0、MIT、自定义)
- 参数规模背后隐藏的 VRAM 需求
- 有些模型是研究级的,并未准备好投入生产
在测试前务必阅读 model card。它会告诉你这个模型真正擅长什么,以及它不擅长什么。
ModelScope
ModelScope 是由阿里巴巴运营的大型开放模型中心。它在以下方向上覆盖尤其强:
- 中文与多语言 LLM
- 视觉语言模型
- 语音与多模态模型
- 针对本地和区域化用例优化的模型
对于面向中文用户构建产品的团队,或在 Hugging Face 访问较慢或受限地区部署的团队,ModelScope 通常是首选。许多在这里发布的模型最终也会出现在 Hugging Face 上,但有些模型会在一段时间内优先出现在 ModelScope,甚至只在 ModelScope 提供。
OpenRouter
OpenRouter 与其说是传统的“模型中心”,不如说它是一个模型访问层。
与其下载权重并自己运行模型,不如通过 OpenRouter:
- 通过一个统一 API 访问许多开源和专有模型
- 对比不同模型的行为、延迟和成本
- 在模型之间动态路由流量
这对于早期原型开发、A/B 测试,或在决定是否自托管前评估模型都很有帮助。不过,如果你需要在规模化场景下严格控制性能、数据或成本,它并不能替代你自己掌握推理栈。
模型权重格式
下载开源 LLM 时,你通常下载的是它的权重。模型权重是训练中学习得到的参数,存储了模型获取的知识。它们通常以可由推理框架加载的文件形式分发。
在 LLM 生态中,常见的权重格式有几种。
PyTorch checkpoints
许多模型最初以 PyTorch checkpoint 文件形式发布,常见扩展名包括:
pytorch_model.bin
model.pt
这些文件以 PyTorch 可直接加载的序列化格式存储模型参数。不过,传统 checkpoint 格式存在一些缺点:
- 加载速度可能较慢
- 可能需要反序列化步骤
- 某些格式允许任意代码执行,这会带来安全风险
由于这些限制,许多现代模型发布会使用更安全的替代方案。
Safetensors
Safetensors 现在已成为分发 LLM 权重最广泛使用的格式之一。它由 Hugging Face 推出,作为 PyTorch checkpoints 的安全且快速的替代方案。
关键特性:
- 避免任意代码执行,实现安全加载
- 支持快速 memory mapping,从而高效加载权重
- 获得 vLLM、TensorRT-LLM 和 SGLang 等推理框架的广泛支持
示例文件:
model-00001-of-00004.safetensors
model-00002-of-00004.safetensors
model-00003-of-00004.safetensors
model-00004-of-00004.safetensors
大型模型通常会被切分为多个文件,以便于下载和管理。
当模型以多个 safetensors 分片形式发布时,你通常还会看到一个名为
model.safetensors.index.json
的文件。这个文件充当映射索引,告诉加载器每个参数张量存储在哪个位置。对于大多数用户而言,这一过程由推理框架自动处理。不过,理解这个索引文件在以下情况下会有帮助:
- 排查模型加载问题
- 修改模型权重
- 处理自定义 checkpoint
GGUF
GGUF 是一种为高效本地推理设计的模型格式,尤其适合 llama.cpp 这样的工具。GGUF 模型通常具有以下特征:
- 经过量化以减少内存使用
- 针对 CPU 或小型 GPU 环境做了优化
- 常用于本地运行模型
示例文件:
model.Q4_K_M.gguf
量化类型(例如 Q4、Q5 或 Q8)表明模型权重被压缩的激进程度。
常见问题
基础模型和 instruct 模型有什么区别?
基础模型在原始文本上完成预训练,学习语言模式。Instruct 模型则经过微调,能够遵循 prompts 并完成任务。
如何理解 LLM 命名约定
有些 LLM 的名字很长、很难懂,但其中通常编码了关于模型架构、规模和能力的有用信息。一旦你学会如何阅读这些名字,比较模型并选择合适模型就会容易得多。
- 数字通常表示模型的参数数量。字母 B 代表十亿参数。
- “Instruct” 表示该模型经过了 instruction-tuned。“Chat” 模型则针对多轮对话做了优化。
- 有些模型提供“quantized” versions,意味着模型权重经过压缩,以减少内存占用。
- 有些模型名称中包含年份、月份或日期,用来表示模型发布时间或更新时间。这有助于用户快速识别模型代际。
- MoE 模型有时会在名称中包含两个数字,用来描述 expert 系统的工作方式,例如
Qwen3.5-35B-A3B。这些数字通常表示:
- expert 的总数
- 推理期间被激活的 expert 数量
