菜单

概述

相关源文件

本文档介绍了 Llama 2 存储库,其中包含用于处理 Meta Llama 2 大型语言模型(LLMs)的实现代码和实用程序。该存储库提供了一个加载 Llama 2 模型并运行推理的最小示例。有关利用 Hugging Face 的更详细示例,请参阅“参考”部分中提及的 llama-cookbook 存储库。

注意:自 Llama 3.1 发布以来,此存储库已被弃用,取而代之的是一个功能更丰富的整合存储库生态系统。然而,本文档仍涵盖原始 Llama 2 存储库的结构和用法。

什么是 Llama 2?

Llama 2 是 Meta 开发的一系列大型语言模型,参数规模从 70 亿到 700 亿不等。该存储库提供了对以下内容的访问:

  • 预训练模型:在文本数据上训练的基础模型,适用于各种自然语言任务
  • 微调聊天模型:专门针对对话用例优化的模型(称为 Llama-2-Chat)

这些模型有三种参数尺寸:

模型大小参数模型并行值上下文长度
小型7B14096 个词元
中等13B24096 个词元
大型70B84096 个词元

70B 模型采用分组查询注意力(Grouped-Query Attention,GQA)以提升推理可扩展性。

来源:README.md17-82 MODEL_CARD.md1-22

存储库结构

Llama 2 存储库由几个关键组件组成,这些组件旨在支持模型加载和推理。

图示:Llama 2 存储库结构

来源:README.md15-96

系统架构

Llama 2 实现的核心是一个基于 Transformer 的语言模型,其中包含多项针对性能和规模的优化。

图示:Llama 2 架构与数据流

来源:MODEL_CARD.md12-14

用户工作流程

使用 Llama 2 模型的典型工作流程包括下载模型权重、初始化模型和运行推理。

图示:Llama 2 推理用户工作流程

来源:README.md27-112

预训练模型 vs 聊天模型

Llama 2 提供两种不同使用模式的模型:

  1. 预训练模型:

    • 未经对话微调的基础模型
    • 应进行提示,使预期答案是提示的自然延续
    • 用于一般的文本补全任务
    • 通过 text_completion() 函数访问
  2. 微调聊天模型:

    • 专为对话应用训练
    • 需要使用 INST<<SYS>> 标签以及 BOS/EOS 词元进行特定格式化
    • 针对助手式交互进行了优化
    • 通过 chat_completion() 函数访问
    • 包含额外的安全功能

来源:README.md85-112 MODEL_CARD.md33-39

模型下载与初始化

该存储库提供了一个脚本(download.sh),用于在接受许可后获取模型权重。此脚本负责处理模型权重的下载和验证。

模型初始化遵循以下顺序:

  1. 使用 download.sh 下载模型权重
  2. 使用 PyTorch/CUDA 初始化环境
  3. 加载具有相应模型并行配置的模型
  4. 使用示例脚本运行推理

图示:模型下载与初始化过程

来源:README.md27-37 README.md42-71

参考资料

来源:README.md134-142