外观
LLaMA 模型改进与微调指南
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. LLaMA 与 LLaMA 2 的区别是什么?
LLaMA 和 LLaMA 2 都是基于 Transformer 的大型语言模型,可用于文本生成、文本摘要、机器翻译、问答等多种自然语言处理任务。
1.1 LLaMA 简介
LLaMA 是一种基于 Transformer 的 seq2seq 模型:
- 使用两种预训练任务:无监督的 Span 级别 mask + 有监督的多任务学习
- 将所有下游任务视为文本到文本的转换问题
- 使用干净的大规模英文语料 C4,包含约 750GB 文本数据
1.2 LLaMA 2 的改进
| 改进维度 | LLaMA | LLaMA 2 |
|---|---|---|
| 数据量和质量 | 750GB C4 语料 | 比 LLaMA 1 多 40% 数据,包含更多高质量和多样性数据(Surge、Scale 等标注公司) |
| 上下文长度 | 2048 | 4096(翻倍) |
| 模型架构 | MHA | GQA(Grouped-Query Attention,34B/70B 模型) |
| 微调方法 | SFT | SFT + RLHF |
| 对话模型 | 无官方对话版 | LLaMA 2-Chat(有用性和安全性显著提升) |
提示:GQA(分组查询注意力)技术可以提高模型的推理速度和质量。
2. LLaMA 2 的四大改进详解
2.1 数据量和质量提升
- 使用比 LLaMA 1 多 40% 的数据进行预训练
- 纳入更多高质量和多样性数据
- 数据来源包括 Surge 和 Scale 等专业数据标注公司
2.2 上下文长度翻倍
LLaMA: 2048 tokens → 适合短文本任务
LLaMA 2: 4096 tokens → 支持更长文本和更复杂逻辑2.3 分组查询注意力(GQA)
LLaMA 2 在 34B 和 70B 参数模型中使用了 GQA 技术:
| 特性 | MHA(LLaMA) | GQA(LLaMA 2) |
|---|---|---|
| Query 头数 | N | N |
| Key/Value 头数 | N | N/G(共享) |
| 推理速度 | 标准 | 更快 |
| 生成质量 | 标准 | 更好 |
| 显存占用 | 较高 | 较低 |
2.4 SFT + RLHF 微调
LLaMA 2-Chat 使用两阶段微调:
阶段1: SFT(监督微调)
→ 使用高质量对话数据进行有监督训练
阶段2: RLHF(人类反馈强化学习)
→ 基于人类偏好优化模型
→ 提升有用性和安全性3. 如何对 LLaMA 2 进行微调?
3.1 微调步骤
| 步骤 | 说明 |
|---|---|
| 1. 准备训练脚本 | 使用 Meta 开源的 llama-recipes 项目,提供快速开始示例和配置文件 |
| 2. 准备数据集 | 选择符合目标任务和领域的数据集(如 GuanacoDataset),支持 alpaca 格式 |
| 3. 准备模型 | 从 Hugging Face Hub 下载 LLaMA 2 权重,转换为 HF 格式 |
| 4. 启动训练 | 单 GPU 或多 GPU 训练,可选 PEFT 或量化加速 |
3.2 数据集格式
使用 alpaca 格式组织数据:
json
[
{
"instruction": "请解释什么是 Transformer 架构",
"input": "",
"output": "Transformer 是一种基于自注意力机制的神经网络架构..."
}
]3.3 常用数据集
| 数据集 | 特点 |
|---|---|
| GuanacoDataset | 多语言对话数据集,支持 alpaca 格式 |
| alpaca_gpt4_en | 英文指令数据集 |
| alpaca_gpt4_zh | 中文指令数据集 |
| 自定义数据集 | 按 alpaca 格式组织即可 |
3.4 微调方式选择
| 方式 | 适用场景 | 资源需求 |
|---|---|---|
| 全量微调(Full Fine-tuning) | 需要最佳效果 | 高(多卡 A100) |
| LoRA 微调 | 资源有限,快速迭代 | 低(单卡即可) |
| QLoRA 微调 | 极低资源部署 | 极低(消费级显卡) |
| PEFT | 通用参数高效微调 | 低 |
提示:使用 PEFT(参数高效微调)或量化技术可以显著加速训练过程并降低资源需求。
4. LLaMA 2 微调最佳实践
4.1 硬件配置建议
| 模型规模 | 全量微调 | LoRA 微调 |
|---|---|---|
| 7B | 2×A100 80GB | 1×A100 40GB |
| 13B | 4×A100 80GB | 1×A100 80GB |
| 70B | 8×A100 80GB | 2×A100 80GB |
4.2 关键训练参数
bash
# 常用训练参数
--learning_rate 5e-5 # 学习率
--num_train_epochs 2.0 # 训练轮数
--per_device_train_batch_size 4 # 每卡batch size
--gradient_accumulation_steps 8 # 梯度累积
--lr_scheduler_type cosine # 学习率调度
--fp16 # 混合精度训练5. 总结
LLaMA 2 相比 LLaMA 在数据质量、上下文长度、模型架构和微调方法四个方面实现了全面升级。微调 LLaMA 2 的关键要点:
- 使用 llama-recipes 项目快速启动
- 数据按 alpaca 格式组织
- 根据资源选择全量微调或 PEFT/LoRA
- SFT + RLHF 两阶段微调可获得最佳对话效果
- 量化技术(QLoRA)可在消费级显卡上完成微调