主流开源大模型逐个手册

0 阅读14分钟

每个模型的"使用说明书":chat template、tokenizer 怪癖、LoRA target_modules、显存预算、典型问题。 配套主指南:LLM部署微调学习指南.md 更新日期:2026-04-27

本手册不重复主指南里的通用方法论,只讲每个模型自己的特异性


目录


通用约定

1. Chat Template 各不相同

Qwen2.5:    <|im_start|>user\n你好<|im_end|>\n<|im_start|>assistant\n
Llama3:     <|start_header_id|>user<|end_header_id|>\n\n你好<|eot_id|>...
GLM-4:      <|user|>\n你好<|assistant|>\n
DeepSeek:   <|begin_of_sentence|>User: 你好\n\nAssistant:

绝对不要手写——用 tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

2. 特殊 Token 表

模型boseos训练时是否要手设 pad
Qwen2.5(无显式)im_end
Llama3begin_of_texteot_id(用 eos 代)
GLM-4gMASK+sopuser 标签
DeepSeekbegin_of_sentenceend_of_sentence
InternLM2s/s
MiniCPM(无显式)/s

通用兜底:

if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

3. LoRA target_modules 速查

模型家族注意力层名FFN 层名
Qwen 系全部q_proj, k_proj, v_proj, o_projgate_proj, up_proj, down_proj
Llama 系全部q_proj, k_proj, v_proj, o_projgate_proj, up_proj, down_proj
GLM-4 老版query_key_value, densedense_h_to_4h, dense_4h_to_h
GLM-4 hf 版(transformers≥4.46)q_proj, k_proj, v_proj, o_projgate_proj, up_proj, down_proj
InternLM2wqkv, wow1, w2, w3
Baichuan2W_pack, o_projgate_proj, up_proj, down_proj
MiniCPMq_proj, k_proj, v_proj, o_projgate_proj, up_proj, down_proj

不确定时打印层名:

for name, module in model.named_modules():
    if 'Linear' in str(type(module)):
        print(name)

Qwen2.5 系列

型号:0.5B / 1.5B / 3B / 7B / 14B / 32B / 72B(每档有 base 和 instruct) 架构:Llama 架构 + GQA(Grouped Query Attention) 许可:Apache 2.0(0.5B-32B);Qwen License(72B 商用申请)

关键参数(7B-Instruct)

参数量7.62B
隐藏维度3584
层数 / 注意力头28 / 28 (Q) + 4 (KV)
词表大小152,064
上下文32K(原生)/ 128K(YaRN 外推)
FP16 推理显存14.6 GB

Chat Template

<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
你好<|im_end|>
<|im_start|>assistant

Tokenizer 特性

  • 中文压缩高:1 汉字 ≈ 1.3 token(Llama3 是 2-3 token)
  • 内置工具调用 token,apply_chat_template 支持 tools 参数

LoRA 配置

LoraConfig(
    r=8, lora_alpha=32, lora_dropout=0.05,
    target_modules=["q_proj","k_proj","v_proj","o_proj",
                    "gate_proj","up_proj","down_proj"],
    task_type="CAUSAL_LM"
)

不同尺寸训练超参

模型rlrbatch×grad_accLoRA 单卡显存
0.5B85e-48×24 GB
1.5B83e-44×48 GB
7B82e-42×820 GB
14B161e-41×1636 GB
32B321e-41×16多卡
72B---多卡 + ZeRO-3

典型问题

  • Tokenizer class Qwen2Tokenizer 加载报错 → transformers>=4.45.0
  • 32K 上下文实际只用到几 K → vLLM 加 --max-model-len 32768
  • 128K 上下文乱码 → config.json 加 YaRN 外推配置:rope_scaling: {factor: 4.0, type: yarn, original_max_position_embeddings: 32768}
  • 微调后说英文为主 → 中文样本占比 ≥ 70%
  • ModelScope 下载路径:Qwen/Qwen2.5-7B-Instruct

该用哪个尺寸

  • 学习/玩:1.5B 或 3B(笔记本能跑)
  • 个人项目/小公司:7B-Instruct(性价比之王)
  • 企业内部:14B / 32B
  • 对标 GPT-4:72B

Qwen3 系列

2025 年发布的新一代,把"思考"和"普通对话"统一在一个模型里。

型号:0.6B / 1.7B / 4B / 8B / 14B / 32B / 235B-A22B(MoE) 关键特性:enable_thinking 切换模式

与 Qwen2.5 的差异

  1. 集成思考能力:默认 enable_thinking=True,会先输出 <think>...</think> 再答
  2. 更强的代码和数学:reasoning benchmark 接近闭源模型
  3. 多语言增强:119 种语言
  4. MoE 版本:235B 总参数,激活 22B,推理成本接近 22B 模型

关闭思考模式

只想要纯回答(节省 token):

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=False
)

或者在用户消息里加 /no_think:

用户:写一个排序函数 /no_think

vLLM 部署

python -m vllm.entrypoints.openai.api_server \
  --model ./Qwen3-8B \
  --max-model-len 32768 \
  --reasoning-parser deepseek_r1

启用 --reasoning-parser 后,API 返回的 JSON 多一个 reasoning_content 字段,前端可以分别展示思考和答案。

微调注意

  • LoRA 配置和 Qwen2.5 完全相同(target_modules 一致)
  • 训练数据要包含 <think> 标签的样本,否则微调后会忘记思考能力
  • 不要思考能力的话,数据纯净即可,推理时统一 enable_thinking=False

典型问题

  • 思考内容混进答案 → 解析 </think> 之后的部分,或用 vLLM 的 reasoning-parser
  • 思考链过长导致 token 超限 → 限制 max_tokens,或在 prompt 里加 "请简洁思考"

DeepSeek-V2 / V3

DeepSeek 通用对话主线。

架构亮点:

  • MLA(Multi-head Latent Attention):压缩 KV Cache 到原来 1/4,长上下文友好
  • MoE 结构:V2 是 236B / 激活 21B;V3 是 671B / 激活 37B
  • 开源彻底,训练数据配比都公开
  • DeepSeek-7B-chat:早期密集模型,普通用户主要用这个

Chat Template(7B-chat,DeepSeek-V2 类似)

DeepSeek 用 User: / Assistant: 字面前缀,而不是像 Qwen 那样的特殊 token 包裹:

  • 开头加 <|begin_of_sentence|>
  • 用户回合:User: ...(后跟两个换行)
  • 助手回合:Assistant: ...<|end_of_sentence|>
  • 多轮直接拼接

实际生成时直接用 apply_chat_template,不要手写。

LoRA 配置

LoraConfig(
    r=8, lora_alpha=32, lora_dropout=0.05,
    target_modules=["q_proj","k_proj","v_proj","o_proj",
                    "gate_proj","up_proj","down_proj"],
    task_type="CAUSAL_LM"
)

训练超参建议(7B-chat)

学习率1e-4(比 Qwen 低,DeepSeek 对 lr 敏感)
epoch3
batch×grad_acc2×8
显存LoRA ~22GB,QLoRA ~6GB

典型问题

  • 输出"User:"或"Assistant:"前缀 → chat_template 没用对,模型把字面前缀又输出了一遍
  • bos_token 重复 → tokenizer 默认会加 bos,如果你手动拼接又加一次,导致两个 bos
  • 7B-chat 显存吃紧 → 强烈推荐 QLoRA(NF4),6GB 即可微调
  • ModelScope 下载路径:deepseek-ai/deepseek-llm-7b-chat

V2 / V3 的部署门槛

  • DeepSeek-V2-236B:激活 21B,但加载时需要全部权重在显存,4×A100-80G 起步
  • DeepSeek-V3-671B:激活 37B,8×H100-80G 起步,不是普通用户能本地跑的
  • 替代方案:用 DeepSeek 官方 API,或用 R1-Distill 系列(下一节)

DeepSeek-R1 蒸馏

R1 原版 671B 太大,日常使用看蒸馏版。

型号:R1-Distill-Qwen-1.5B / 7B / 14B / 32B、R1-Distill-Llama-8B / 70B 性能:7B 蒸馏版数学能力超过 GPT-4o(MATH 基准) 训练方式:用 R1 生成的思考链数据,SFT 到 Qwen / Llama 基座上

关键差异:它是"基于 Qwen / Llama 的模型,带思考能力"

  • chat_template、tokenizer 与对应基座(Qwen2.5 / Llama3.1)一致
  • target_modules 也与基座一致
  • 但输出会自动包含 <think>...</think>

vLLM 部署

python -m vllm.entrypoints.openai.api_server \
  --model ./DeepSeek-R1-Distill-Qwen-7B \
  --max-model-len 32768 \
  --served-model-name r1-distill \
  --reasoning-parser deepseek_r1

参数说明:

  • max-model-len 32768:思考链很长,必须开大上下文
  • --reasoning-parser deepseek_r1:自动把思考和答案分开返回

调用建议

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")
resp = client.chat.completions.create(
    model="r1-distill",
    messages=[{"role": "user", "content": "证明根号2是无理数"}],
    temperature=0.6,        # 官方推荐,不要用 1.0
    max_tokens=8192         # 思考会消耗很多 token
)
print(resp.choices[0].message.reasoning_content)  # 思考过程
print(resp.choices[0].message.content)            # 最终答案

微调注意

  • 不建议微调小尺寸 R1-Distill 的"思考能力"——容易破坏蒸馏出来的推理链
  • 如果只是要让它换个领域回答,微调后的输出会失去 <think> 标签,推理能力下降
  • 建议:R1-Distill 当作"推理专家"直接用,要领域适配走 RAG 而非微调

典型问题

  • 输出没有 <think> 标签 → 模型本身就这样,有时候简单问题不思考。temperature 调到 0.6 后会更稳定
  • 思考链不收敛(无限循环) → 学习率不够低或训练数据污染。停掉重新训
  • 上下文不够 → 把 max-model-len 调到 32K 或 64K

GLM-4

智谱清言开源版。

型号:GLM-4-9B、GLM-4-9B-Chat、GLM-4-9B-Chat-1M(百万 token 上下文)、GLM-4V-9B(视觉版) 架构:RMSNorm + GLU + RoPE,标准 Transformer 许可:GLM 系列许可(免费商用,需登记)

重要分水岭:hf 版 vs 老版

GLM-4-9B 早期发布时,模型代码是自定义的(不在 transformers 主干里)。后来 HuggingFace 把它合并进 transformers 4.46+,同时智谱发布了"hf 版":

  • 老版:THUDM/glm-4-9b-chat,需要 trust_remote_code=True,target_modules 是 query_key_value, dense, dense_h_to_4h, dense_4h_to_h
  • hf 版:THUDM/glm-4-9b-chat-hf,不需要 trust_remote_code,target_modules 改成标准的 q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj

新项目首选 hf 版,需要 transformers>=4.46.0

Chat Template(hf 版)

[gMASK]<sop><|system|>
你是智谱AI<|user|>
你好<|assistant|>

LoRA 配置

# hf 版
LoraConfig(
    r=8, lora_alpha=32,
    target_modules=["q_proj","k_proj","v_proj","o_proj",
                    "gate_proj","up_proj","down_proj"],
    task_type="CAUSAL_LM"
)

# 老版
LoraConfig(
    r=8, lora_alpha=32,
    target_modules=["query_key_value","dense",
                    "dense_h_to_4h","dense_4h_to_h"],
    task_type="CAUSAL_LM"
)

显存

操作显存
FP16 推理(9B)18 GB
LoRA 微调24 GB
QLoRA 微调8 GB
1M 上下文版本推理取决于 KV Cache,实际用 100K 就要 30GB+

典型问题

  • 老代码升级到新 transformers 后报错 → 切到 hf 版,改 target_modules
  • 1M 上下文实际跑不了 → KV Cache 显存爆炸,vLLM 必须配 PagedAttention 才能勉强用
  • 输出多了一段 [gMASK] → tokenizer 设置错了,正确的 chat_template 已自动处理
  • ModelScope 路径:ZhipuAI/glm-4-9b-chat-hf

工具调用强项

GLM-4 在 function calling 基准上表现优秀,如果你的应用要做 Agent / Tool Use,GLM-4 是国产模型里的首选。


InternLM2 / InternLM3

上海 AI 实验室开源,长文本和数学是亮点。

型号:InternLM2-1.8B / 7B / 20B、InternLM2.5-1.8B / 7B / 20B、InternLM3-8B 特点:

  • 200K 原生长上下文(InternLM2.5)
  • 数学和代码强(GSM8K、MATH 接近闭源)
  • 开放性好,商用免费

Chat Template

<s><|im_start|>system
你是书生·浦语<|im_end|>
<|im_start|>user
你好<|im_end|>
<|im_start|>assistant

LoRA target_modules(注意!和 Qwen / Llama 都不同)

LoraConfig(
    r=8, lora_alpha=32,
    target_modules=["wqkv","wo","w1","w2","w3"],
    task_type="CAUSAL_LM"
)

wqkv 是 Q/K/V 三合一的线性层,wo 是输出投影,w1/w2/w3 是 FFN 的三个矩阵(对应 gate/up/down)。

显存(InternLM2-7B)

操作显存
FP16 推理15 GB
LoRA 微调21 GB
QLoRA 微调7 GB

典型问题

  • 模型加载需要 trust_remote_code=True(InternLM2,InternLM3 已合入 transformers)
  • 200K 长上下文不要直接全填进去,实测 64K 内效果最好
  • 数学问题用 InternLM-Math 专用版本(7B/20B)效果更好
  • ModelScope 路径:Shanghai_AI_Laboratory/internlm2_5-7b-chat

Llama3 / Llama3.1

Meta 旗舰系列,英文最强,中文一般。

型号:Llama3-8B/70B、Llama3.1-8B/70B/405B、Llama3.2-1B/3B/11B-Vision/90B-Vision 许可:Llama 3 Community License(月活 ≥ 7 亿要单独申请)

中文能力

  • 8B 中文一般,推荐用社区中文增强版(如 Llama3-Chinese-Chat)
  • 70B 中文能力较好,但仍不如 Qwen2.5-72B
  • 不要用 Llama3 做纯中文应用,选 Qwen 系

Chat Template(3.1)

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>

Hello<|eot_id|><|start_header_id|>assistant<|end_header_id|>


注意结尾 assistant<|end_header_id|> 后有两个换行,这是 chat_template 规定的。

Tokenizer 注意

  • pad_token 默认是 None,训练前必须手动设:tokenizer.pad_token = tokenizer.eos_token
  • 词表 128K,中文字符通常被切成 2-3 个 token(中文压缩比 Qwen 差很多)

LoRA 配置

LoraConfig(
    r=8, lora_alpha=32, lora_dropout=0.05,
    target_modules=["q_proj","k_proj","v_proj","o_proj",
                    "gate_proj","up_proj","down_proj"],
    task_type="CAUSAL_LM"
)

显存(Llama3.1-8B)

操作显存
FP16 推理16 GB
LoRA 微调22 GB
QLoRA 微调7 GB

典型问题

  • 模型权重需要登记申请(HuggingFace 上点 Request access)
  • 国内下载推荐:ModelScope 上 LLM-Research/Meta-Llama-3.1-8B-Instruct 是镜像
  • 中文输出英文穿插 → 微调中文样本至少占 80%
  • 训练 loss 不下降 → 检查 pad_token 是否设置,以及数据是否漏了 <|eot_id|>

MiniCPM

面壁智能 + 清华 NLP 联合开源,端侧部署的代表。

型号:MiniCPM-1B / 2B / 4B、MiniCPM-V(视觉)、MiniCPM-o(全模态) 亮点:

  • 2.4B 非 embedding 参数,在 7B 量级模型中性能领先
  • 端侧友好(手机/边缘设备能跑)
  • INT4 量化后 2GB 显存就能推理

Chat Template(MiniCPM-2B)

<用户>你好<AI>

非常简洁,直接用 <用户><AI> 字面 token 切分。

LoRA 配置

LoraConfig(
    r=8, lora_alpha=32,
    target_modules=["q_proj","k_proj","v_proj","o_proj",
                    "gate_proj","up_proj","down_proj"],
    task_type="CAUSAL_LM"
)

显存(2B)

操作显存
FP16 推理5 GB
INT4 推理2 GB
LoRA 微调8 GB
QLoRA 微调4 GB

典型问题

  • 加载需要 trust_remote_code=True
  • 长文本理解一般(2.4B 毕竟小),不要用它做 RAG 总结超长文档
  • 端侧部署用 llama.cpp 转 GGUF 格式,具体见硬件适配文档
  • ModelScope 路径:OpenBMB/MiniCPM-2B-sft-bf16

何时选 MiniCPM 而非 Qwen2.5-1.5B

  • 想跑在 CPU / 手机上 → MiniCPM(社区生态好,GGUF 全)
  • 想榨最后一点性能 → MiniCPM(同尺寸下基准分数略高)
  • 单纯学习/服务器部署 → Qwen2.5-1.5B(生态更全,文档更多)

Qwen2-VL

开源视觉语言模型代表。

型号:Qwen2-VL-2B / 7B / 72B、Qwen2.5-VL(2025 升级版) 能力:图像理解、视频理解(原生支持任意分辨率/任意长度) 许可:Apache 2.0(2B/7B)

关键特性

  • 原生支持任意分辨率(Naive Dynamic Resolution):不用预先 resize 图片
  • 支持视频:可以输入视频文件,模型自动按帧采样
  • OCR 强:中英文文档识别接近闭源模型

输入格式

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "path/to/image.jpg"},
        {"type": "text", "text": "图里有什么?"}
    ]
}]

# 视频
messages = [{
    "role": "user",
    "content": [
        {"type": "video", "video": "path/to/video.mp4", "max_pixels": 360*640, "fps": 1.0},
        {"type": "text", "text": "视频里发生了什么?"}
    ]
}]

显存(7B)

操作显存
推理(单张图)24 GB
推理(视频,30秒)32-40 GB(取决于采样帧数)
LoRA 微调(只训 LLM)28 GB

LoRA 配置(只微调语言部分)

LoraConfig(
    r=8, lora_alpha=32,
    target_modules=["q_proj","k_proj","v_proj","o_proj",
                    "gate_proj","up_proj","down_proj"],
    # 注意:不要包括 "visual" 开头的模块
    task_type="CAUSAL_LM"
)

重要:VLM 微调要冻结视觉编码器,否则容易破坏图文对齐。peft 默认会按名字匹配 target_modules,如果你的 LLM 部分和视觉部分有同名层(如都叫 q_proj),需要用 modules_to_save=None + 精确名字过滤。

vLLM 部署

python -m vllm.entrypoints.openai.api_server \
  --model ./Qwen2-VL-7B-Instruct \
  --max-model-len 32768 \
  --limit-mm-per-prompt 'image=2,video=1'

--limit-mm-per-prompt 控制单个请求最多多少图/视频,防 OOM。

调用(OpenAI 兼容)

import base64
with open("image.jpg", "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode()

resp = client.chat.completions.create(
    model="qwen2-vl",
    messages=[{
        "role": "user",
        "content": [
            {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}},
            {"type": "text", "text": "图里有什么?"}
        ]
    }]
)

典型问题

  • 大图爆显存 → 在 messages 里加 max_pixels=1280*960 限制图像大小
  • 视频卡顿 → 降低 fps(默认 2.0,改 1.0 或 0.5)
  • 微调后视觉能力消失 → 没冻结视觉编码器,重训
  • ModelScope 路径:Qwen/Qwen2-VL-7B-Instruct

选型快查表

把所有模型按场景归类,5 秒内做决定。

按任务

任务首选备选
中文通用对话Qwen2.5-7B-InstructInternLM2.5-7B、GLM-4-9B-Chat
中文长文本(50K+)InternLM2.5-7B(200K)GLM-4-9B-Chat-1M
数学/逻辑推理DeepSeek-R1-Distill-Qwen-7BInternLM2-Math、Qwen3-8B(thinking)
代码生成DeepSeek-Coder-V2-LiteQwen2.5-Coder-7B
工具调用/AgentGLM-4-9B-ChatQwen2.5-7B-Instruct
图文理解Qwen2-VL-7BMiniCPM-V-2.6
端侧/低显存MiniCPM-2BQwen2.5-1.5B
英文为主Llama3.1-8BGemma2-9B

按显存预算

显存推荐配置
< 6 GBMiniCPM-2B(INT4)、Qwen2.5-0.5B/1.5B
6-12 GBQwen2.5-3B、QLoRA 微调 7B 模型
16-24 GBQwen2.5-7B + LoRA 微调(主力配置)
24-48 GBQwen2.5-14B、Llama3.1-8B 全量微调
80GBQwen2.5-32B、72B 量化部署
多卡Qwen2.5-72B、Llama3.1-70B、DeepSeek-V3

按场景速记

  • 中文小公司全场景 → Qwen2.5-7B-Instruct + LoRA + RAG
  • 想体验"会思考的模型" → DeepSeek-R1-Distill-Qwen-7B 或 Qwen3-8B
  • 公司内部知识库 → Qwen2.5-7B + bge-large-zh + Chroma
  • 给客服做风格适配 → Qwen2.5-7B + LoRA(500-2000 条客服对话)
  • 多模态项目 → Qwen2-VL-7B
  • 给手机/边缘端做小助手 → MiniCPM-2B(GGUF)

通用原则

学完这份手册,记住三件事就够了:

  1. 每个模型的 chat_template、target_modules、特殊 token 都不同——动手前查一遍这份手册
  2. 首选 Qwen2.5 系列——除非有明确理由(纯英文、推理任务、多模态、端侧)
  3. 微调前先 RAG——大多数"模型不知道这个事实"的问题用 RAG 能解决,不要张嘴就微调

具体的可运行代码见配套文档 LLM部署微调-可运行代码.md;硬件平台适配见 LLM部署微调-硬件平台适配.md