本文档介绍了 Llama 2 存储库,其中包含用于处理 Meta Llama 2 大型语言模型(LLMs)的实现代码和实用程序。该存储库提供了一个加载 Llama 2 模型并运行推理的最小示例。有关利用 Hugging Face 的更详细示例,请参阅“参考”部分中提及的 llama-cookbook 存储库。
注意:自 Llama 3.1 发布以来,此存储库已被弃用,取而代之的是一个功能更丰富的整合存储库生态系统。然而,本文档仍涵盖原始 Llama 2 存储库的结构和用法。
Llama 2 是 Meta 开发的一系列大型语言模型,参数规模从 70 亿到 700 亿不等。该存储库提供了对以下内容的访问:
这些模型有三种参数尺寸:
| 模型大小 | 参数 | 模型并行值 | 上下文长度 |
|---|---|---|---|
| 小型 | 7B | 1 | 4096 个词元 |
| 中等 | 13B | 2 | 4096 个词元 |
| 大型 | 70B | 8 | 4096 个词元 |
70B 模型采用分组查询注意力(Grouped-Query Attention,GQA)以提升推理可扩展性。
来源:README.md17-82 MODEL_CARD.md1-22
Llama 2 存储库由几个关键组件组成,这些组件旨在支持模型加载和推理。
图示:Llama 2 存储库结构
Llama 2 实现的核心是一个基于 Transformer 的语言模型,其中包含多项针对性能和规模的优化。
图示:Llama 2 架构与数据流
使用 Llama 2 模型的典型工作流程包括下载模型权重、初始化模型和运行推理。
图示:Llama 2 推理用户工作流程
Llama 2 提供两种不同使用模式的模型:
预训练模型:
text_completion() 函数访问微调聊天模型:
INST 和 <<SYS>> 标签以及 BOS/EOS 词元进行特定格式化chat_completion() 函数访问来源:README.md85-112 MODEL_CARD.md33-39
该存储库提供了一个脚本(download.sh),用于在接受许可后获取模型权重。此脚本负责处理模型权重的下载和验证。
模型初始化遵循以下顺序:
download.sh 下载模型权重图示:模型下载与初始化过程
来源:README.md27-37 README.md42-71