模型选择 #
为什么模型选择重要? #
text
┌─────────────────────────────────────────────────────────────┐
│ 模型选择影响 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 基座模型决定了: │
│ ├── 性能上限 │
│ │ └── 基座能力强,微调后效果好 │
│ ├── 资源需求 │
│ │ └── 模型大小影响显存和推理成本 │
│ ├── 微调难度 │
│ │ └── 不同模型微调难度不同 │
│ └── 许可限制 │
│ └── 商业使用需要考虑许可证 │
│ │
└─────────────────────────────────────────────────────────────┘
主流开源模型 #
模型概览 #
| 模型 | 参数量 | 许可证 | 特点 |
|---|---|---|---|
| LLaMA 2 | 7B-70B | LLaMA 2 License | Meta 开源,社区活跃 |
| LLaMA 3 | 8B-70B | LLaMA 3 License | 最新版本,性能优秀 |
| Qwen2 | 0.5B-72B | Apache 2.0 | 阿里开源,中文友好 |
| Mistral | 7B | Apache 2.0 | 高效架构,性能优秀 |
| Mixtral | 8x7B | Apache 2.0 | MoE 架构,能力强 |
| Yi | 6B-34B | Apache 2.0 | 零一万物,中文优化 |
| Baichuan2 | 7B-13B | Apache 2.0 | 百川智能,中文优化 |
| ChatGLM3 | 6B | Apache 2.0 | 智谱 AI,中文优化 |
LLaMA 系列 #
text
┌─────────────────────────────────────────────────────────────┐
│ LLaMA 系列 │
├─────────────────────────────────────────────────────────────┤
│ │
│ LLaMA 2 │
│ ├── 参数:7B、13B、70B │
│ ├── 许可:LLaMA 2 License(可商用) │
│ ├── 特点: │
│ │ ├── 社区生态最完善 │
│ │ ├── 微调资源丰富 │
│ │ └── 英文能力强 │
│ └── 适用:通用任务、英文场景 │
│ │
│ LLaMA 3 │
│ ├── 参数:8B、70B │
│ ├── 许可:LLaMA 3 License │
│ ├── 特点: │
│ │ ├── 性能大幅提升 │
│ │ ├── 上下文长度增加 │
│ │ └── 训练数据更丰富 │
│ └── 适用:追求最佳性能 │
│ │
└─────────────────────────────────────────────────────────────┘
python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "meta-llama/Llama-2-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
Qwen 系列 #
text
┌─────────────────────────────────────────────────────────────┐
│ Qwen 系列 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Qwen2 │
│ ├── 参数:0.5B、1.5B、7B、72B │
│ ├── 许可:Apache 2.0(完全开源) │
│ ├── 特点: │
│ │ ├── 中文能力优秀 │
│ │ ├── 多语言支持 │
│ │ ├── 尺寸丰富,适合不同场景 │
│ │ └── 完全开源,商用友好 │
│ └── 适用:中文任务、多语言场景 │
│ │
│ Qwen2.5 │
│ ├── 参数:0.5B、1.5B、3B、7B、14B、32B、72B │
│ ├── 许可:Apache 2.0 │
│ ├── 特点: │
│ │ ├── 性能全面提升 │
│ │ ├── 更长的上下文 │
│ │ └── 更好的指令遵循 │
│ └── 适用:追求中文最佳效果 │
│ │
└─────────────────────────────────────────────────────────────┘
python
model_name = "Qwen/Qwen2-7B"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
Mistral 系列 #
text
┌─────────────────────────────────────────────────────────────┐
│ Mistral 系列 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Mistral-7B │
│ ├── 参数:7B │
│ ├── 许可:Apache 2.0 │
│ ├── 特点: │
│ │ ├── 高效架构(Sliding Window Attention) │
│ │ ├── 性能超越 LLaMA 2 13B │
│ │ └── 推理速度快 │
│ └── 适用:资源受限、追求效率 │
│ │
│ Mixtral-8x7B │
│ ├── 参数:8×7B(MoE 架构) │
│ ├── 许可:Apache 2.0 │
│ ├── 特点: │
│ │ ├── MoE 架构,激活参数少 │
│ │ ├── 性能接近 70B 模型 │
│ │ └── 推理效率高 │
│ └── 适用:追求高性能、高效率 │
│ │
└─────────────────────────────────────────────────────────────┘
python
model_name = "mistralai/Mistral-7B-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
模型选择因素 #
1. 任务类型 #
text
文本生成任务:
├── 推荐:LLaMA 3、Qwen2.5、Mistral
├── 特点:生成能力强、流畅度高
└── 示例:文案生成、故事创作
文本分类任务:
├── 推荐:Qwen2、LLaMA 2、Baichuan2
├── 特点:理解能力强、分类准确
└── 示例:情感分析、主题分类
问答任务:
├── 推荐:Qwen2.5、LLaMA 3、ChatGLM3
├── 特点:知识丰富、回答准确
└── 示例:知识问答、客服系统
对话任务:
├── 推荐:Qwen2.5、LLaMA 3-Instruct、Mistral-Instruct
├── 特点:对话流畅、上下文理解
└── 示例:聊天机器人、虚拟助手
代码任务:
├── 推荐:DeepSeek-Coder、CodeLlama、Qwen2.5-Coder
├── 特点:代码理解、生成能力强
└── 示例:代码补全、代码生成
2. 语言支持 #
text
中文任务:
├── 首选:Qwen2.5、Yi、Baichuan2、ChatGLM3
├── 次选:LLaMA 3(中文能力提升)
└── 原因:训练数据中文占比高
英文任务:
├── 首选:LLaMA 3、Mistral、Mixtral
├── 次选:Qwen2.5(英文能力也不错)
└── 原因:训练数据英文占比高
多语言任务:
├── 首选:Qwen2.5、LLaMA 3
├── 特点:支持多种语言
└── 原因:多语言训练数据
3. 资源限制 #
text
显存限制:
8GB 显存:
├── Qwen2-0.5B、Qwen2-1.5B
├── QLoRA 微调 7B 模型
└── 推理:量化后的 7B 模型
16GB 显存:
├── Qwen2-7B、LLaMA 3-8B
├── QLoRA 微调 13B 模型
└── LoRA 微调 7B 模型
24GB 显存:
├── LLaMA 2-13B、Qwen2-7B
├── LoRA 微调 13B 模型
└── QLoRA 微调 70B 模型
80GB 显存:
├── LLaMA 3-70B、Qwen2-72B
├── LoRA 微调 70B 模型
└── 全量微调 7B 模型
4. 许可证考虑 #
text
完全开源(Apache 2.0):
├── Qwen 系列
├── Mistral 系列
├── Yi 系列
├── Baichuan 系列
└── 商用无限制
限制性开源:
├── LLaMA 系列(LLaMA License)
│ └── 商用需要申请
├── ChatGLM 系列
│ └── 需要遵守许可条款
└── 使用前请仔细阅读许可协议
模型评估 #
基准测试 #
text
通用能力测试:
├── MMLU(多任务语言理解)
├── HellaSwag(常识推理)
├── WinoGrande(常识推理)
├── ARC(推理能力)
└── TruthfulQA(真实性)
中文能力测试:
├── C-Eval(中文综合能力)
├── CMMLU(中文多任务)
├── GSM8K-CN(数学推理)
└── HumanEval-CN(代码能力)
代码能力测试:
├── HumanEval(代码生成)
├── MBPP(Python 编程)
└── MultiPL-E(多语言编程)
实际评估 #
python
from transformers import pipeline
import torch
def evaluate_model(model_name, test_cases):
generator = pipeline(
'text-generation',
model=model_name,
torch_dtype=torch.float16,
device_map='auto'
)
results = []
for case in test_cases:
output = generator(
case['prompt'],
max_new_tokens=100,
temperature=0.7
)
results.append({
'prompt': case['prompt'],
'output': output[0]['generated_text'],
'expected': case.get('expected')
})
return results
test_cases = [
{"prompt": "什么是机器学习?", "expected": "机器学习是人工智能的一个分支..."},
{"prompt": "请写一首关于春天的诗。", "expected": None},
]
results = evaluate_model("Qwen/Qwen2-7B", test_cases)
模型下载 #
Hugging Face #
python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2-7B"
tokenizer = AutoTokenizer.from_pretrained(
model_name,
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
ModelScope(国内镜像) #
python
from modelscope import snapshot_download
model_dir = snapshot_download(
'qwen/Qwen2-7B',
cache_dir='./models'
)
本地加载 #
python
model = AutoModelForCausalLM.from_pretrained(
"./local-model-path",
torch_dtype=torch.float16,
device_map="auto"
)
模型对比 #
性能对比 #
text
┌─────────────────────────────────────────────────────────────┐
│ 模型性能对比(MMLU 分数) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 模型 参数量 MMLU 中文能力 推理速度 │
│ ───────────────────────────────────────────────────────── │
│ LLaMA 3-8B 8B 66.7 中等 快 │
│ LLaMA 3-70B 70B 79.5 良好 慢 │
│ Qwen2-7B 7B 70.5 优秀 快 │
│ Qwen2-72B 72B 82.3 优秀 慢 │
│ Mistral-7B 7B 62.5 一般 很快 │
│ Mixtral-8x7B 47B* 70.6 良好 中等 │
│ │
│ * MoE 架构,实际激活参数约 13B │
│ │
└─────────────────────────────────────────────────────────────┘
选择建议 #
text
追求最佳性能:
├── 英文:LLaMA 3-70B
├── 中文:Qwen2-72B
└── 多语言:Qwen2-72B
资源受限:
├── 8GB 显存:Qwen2-1.5B
├── 16GB 显存:Qwen2-7B
└── 24GB 显存:LLaMA 3-8B
追求效率:
├── Mistral-7B
├── Qwen2-7B
└── LLaMA 3-8B
中文场景:
├── 首选:Qwen2 系列
├── 次选:Yi、Baichuan2
└── 通用:LLaMA 3
商业使用:
├── 首选:Qwen2、Mistral(Apache 2.0)
├── 次选:LLaMA 3(需申请)
└── 注意:检查许可证条款
下一步 #
现在你已经了解了如何选择模型,接下来学习 训练配置,掌握微调训练的核心参数!
最后更新:2026-04-05