Llama 2 发布与 Hugging Face 集成
Meta 发布了 Llama 2,这是一个最先进的开放获取大型语言模型 (LLM) 系列,可用于商业用途。此次发布为社区提供了预训练和微调模型,为闭源聊天机器人提供了一个高性能的开放替代方案。
Llama 2 模型规格与改进
Llama 2 由一系列参数量从 7B 到 70B 的模型组成(具体包括 7B、13B 和 70B)。这些模型在原始 Llama 1 系列的基础上引入了几项技术改进:
- 增加训练数据: 预训练模型的训练 Token 数量比 Llama 1 增加了 40%。
- 扩展上下文窗口: 上下文长度已增加到 4k tokens。
- 优化推理: 70B 模型利用 grouped-query attention 来实现更快的推理。
Llama 2-Chat:对话优化
Llama 2-Chat 模型是基础模型的微调版本,专门通过人类反馈强化学习 (RLHF) 针对对话应用进行了优化。根据人类评估,Llama 2-Chat 模型的性能可与 ChatGPT 媲美,并在各种安全性和帮助性基准测试中优于大多数其他开放模型。
Hugging Face 集成与部署
Hugging Face 已将 Llama 2 集成到其生态系统中,以促进部署和微调。可用的集成包括:
- Transformers Library: 从 4.31 版本开始提供全面支持,允许用户利用
safetensors、通过bitsandbytes进行 4-bit 量化,以及参数高效微调 (PEFT)。 - Text Generation Inference (TGI): 一个生产级容器,支持连续批处理 (continuous batching)、Token 流式传输以及针对多 GPU 设置的张量并行 (tensor parallelism)。
- Inference Endpoints: 带有推荐硬件配置的托管部署选项:
- 7B 模型: 1x Nvidia A10G (GPU medium)。
- 13B 模型: 1x Nvidia A100 (GPU xlarge)。
- 70B 模型: 2x Nvidia A100 配合
bitsandbytes量化 (GPU 2xlarge) 或 4x Nvidia A100 (GPU 4xlarge)。
使用 PEFT 和 QLoRA 进行高效微调
使用 QLoRA 和来自 trl 库的 SFTTrainer,可以在消费级硬件上对 Llama 2 进行微调。例如,7B 变体可以在 Google Colab 上提供的单个 NVIDIA T4 GPU (16GB) 上进行指令微调。此过程允许用户将 LoRA 权重合并到模型权重中,并将其保存为 safetensor 权重,以便通过 TGI 或 Inference Endpoints 进行生产部署。
Llama 2-Chat 的提示词框架
Llama 2-Chat 需要特定的提示词模板,以保持与其训练过程的一致性。该模板使用特殊 Token 将系统指令与用户消息分开:
第一轮对话模板:
`[INST] <
{{ user_message }} [/INST]`
多轮对话模板:
`[INST] <
{{ user_msg_1 }} [/INST] {{ model_answer_1 }} [INST] {{ user_msg_2 }} [/INST]`
由于 Llama 2 是一个开放获取模型,用户可以完全控制 system_prompt,从而能够在没有闭源 API 限制的情况下定义助手的个性和行为。这种能力对于研究不同提示词对模型行为和安全性影响的研究人员特别有用。