项目快照:meta-llama/llama,约 59,627 个 Star,9,768 个 Fork;最新推送时间 2025-01-26T21:42:26Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/meta-llama/llama

项目速览(TL;DR)
llama 是 Meta 发布的 Llama 推理代码仓库,README 将其定位为加载 Llama 2 模型并运行推理的最小示例。仓库资料同时明确标注该项目已弃用,并建议后续开发转向 Llama Stack 相关仓库;因此,评估它时应把“理解旧版 Llama 2 推理流程”和“启动新项目”区分开。
README 所述模型覆盖 7B、13B、70B 参数规模,提供预训练模型与微调对话模型的示例。仓库元信息显示默认分支为 main、主要语言为 Python、Star 数为 59627、Fork 数为 9768;这些数字是提供的仓库资料中的快照,不代表实时统计。
| 项目项 | 资料所示内容 | 阅读时的含义 |
|---|---|---|
| 项目描述 | Inference code for Llama models | 重点在模型推理示例,不是完整的训练或托管平台。 |
| README 当前状态 | 标注 Deprecated | 新开发应先查看 README 推荐的后续仓库。 |
| README 主要对象 | Llama 2 | 快速开始命令面向 Llama 2 检查点和分词器。 |
| 运行入口示例 | example_chat_completion.py、example_text_completion.py | 分别展示对话补全与文本续写路径。 |
| 许可证元信息 | NOASSERTION | 不能仅凭元信息判定许可;应阅读仓库中的 LICENSE。 |
定位与目标用户
该仓库面向希望在本地运行 Llama 2 推理示例的开发者、研究人员和技术评估人员。它展示如何准备模型文件、加载检查点与分词器,并通过命令行启动文本补全或聊天补全程序;README 还明确将 Hugging Face 用法和更详细示例指向其他仓库。
“最小示例”意味着读者需要自行处理模型访问审批、模型文件下载、运行环境和硬件资源。根据 README,模型权重并非通过仓库代码自动获得,下载前要访问 Meta 网站并接受相应许可;Hugging Face 途径也要求在模型卡片中确认许可并填写申请表。
仓库已经给出弃用提示,因此它更适合作为既有 Llama 2 部署的参考、历史代码阅读材料或受控实验入口。若目标是基于 Llama 3.1 及后续能力构建新系统,README 建议使用其列出的模型、工具链、安全和代理系统仓库,而不是把这个仓库当作持续扩展的统一平台。
核心功能
核心能力是加载检查点并执行生成。使用者提供检查点目录、分词器路径、最大序列长度和最大批量大小,示例程序根据模型并行配置启动推理;生成结果取决于模型类型和输入格式。
- 文本补全:由
example_text_completion.py演示,面向预训练模型。README 指出这类模型没有针对聊天或问答进行微调,输入提示应设计成期望答案的自然前文,输出是该提示的延续。 - 聊天补全:由
example_chat_completion.py演示,面向微调对话模型。README 要求遵循特定格式,包括INST与<<SYS>>标记、BOS 与 EOS 词元,以及相应空格和换行;格式不匹配会影响对话输入的解释。 - 模型并行启动:通过
torchrun的--nproc_per_node参数指定进程数。README 给出的模型并行值为 7B 对应 1、13B 对应 2、70B 对应 8;实际启动参数应与所用模型对应。 - 安全分类器集成参考:README 提到可部署额外分类器过滤不安全输入和输出,并指向 llama-cookbook 的示例。该仓库所给资料没有提供分类器实现、规则配置或效果指标,不能据此推断默认示例已内置安全过滤。
从输入到输出的路径可以概括为:用户先获得并准备检查点和分词器,再调用相应示例程序;程序读取模型文件,对输入进行处理并生成文本。README 没有在所给资料中说明内部模块调用顺序、采样策略的接口参数或返回值结构,相关细节应以仓库当前代码为准。
系统架构与关键模块
从 README 可确认的架构边界是一个以 Python 推理代码为核心的示例仓库:下载脚本负责获取模型文件,示例脚本负责运行文本或聊天生成,模型权重与分词器则由使用者单独准备。以下只描述资料明确出现的模块,不把未提供的内部实现细节当作事实。
| 模块或资源 | 资料中可确认的职责 | 输入与输出 |
|---|---|---|
download.sh | 在用户取得授权下载链接后启动模型文件下载流程。 | 输入为邮件提供的签名 URL;README 描述其用于下载模型,但没有给出下载目录布局细节。 |
example_text_completion.py | 演示预训练模型的文本补全。 | 输入为检查点、分词器及提示;用于生成自然语言续写。 |
example_chat_completion.py | 演示微调聊天模型的对话补全。 | 输入为聊天格式文本及模型文件;输出为模型生成的对话文本。 |
llama/generation.py | README 将聊天格式规范链接到该文件中的 chat_completion。 | 资料仅确认其与聊天补全格式有关,未完整描述函数接口。 |
tokenizer.model | 示例命令传入的分词器模型文件。 | 作为运行参数提供;内部编码细节未在所给资料说明。 |
这个结构将获取权重和执行推理分开。下载脚本依赖用户先取得有效授权链接;推理命令依赖检查点目录、分词器文件以及可用的 PyTorch/CUDA 环境。仓库资料没有给出服务端 API、HTTP 路由、持久化层或容器编排定义,因此不能把它描述为开箱即用的在线推理服务。
依赖与运行环境
README 的快速开始要求在具备 PyTorch 和 CUDA 的 Conda 环境中操作,并通过 editable 安装仓库。下载脚本的前置条件是安装 wget 和 md5sum;这两项针对下载流程,不能据此推断它们是 Python 推理代码的完整依赖清单。
资料未提供 Python、PyTorch、CUDA、Conda 或系统发行版的版本约束,也未给出显存、内存或存储的最低要求。README 说明所有模型支持最长 4096 个词元的序列长度,并且缓存会按照最大序列长度和最大批量大小预分配;这说明参数设定会影响资源占用,但具体占用量没有提供。
- 运行 Python 推理示例前,应准备 PyTorch/CUDA 环境,并确认安装过程成功。
- 获取权重前,应满足 Meta 下载流程所需的访问条件;下载脚本需要
wget与md5sum。 - 使用 Hugging Face 下载时,应在对应模型卡片完成许可确认和申请;README 所述审批时间是该文档中的说明,不构成新的访问承诺。
- 需要核实当前依赖版本时,官方仓库未提供该信息,建议以最新 README 为准。
快速开始
最小流程由安装、授权下载和运行组成。下面的命令沿用 README 中的真实用法;其中 URL、检查点目录和分词器路径需替换为你实际获批并下载得到的资源。
- 在 PyTorch/CUDA 可用的 Conda 环境中获取仓库,并安装项目。
- 在 Meta 网站申请模型访问;收到签名 URL 后,执行下载脚本并按提示输入链接。
- 将命令中的检查点目录与分词器路径改为本机实际位置,再运行聊天补全示例。
pip install -e .
chmod +x download.sh
./download.sh./download.sh 会提示输入邮件中的 URL。README 特别提醒不要使用邮件客户端的“Copy Link”选项,而应手动复制邮件中的链接;链接有有效期与下载次数限制,README 给出的有效期为 24 小时。若遇到 403: Forbidden,README 建议重新申请链接。
torchrun --nproc_per_node 1 example_chat_completion.py \
--ckpt_dir llama-2-7b-chat/ \
--tokenizer_path tokenizer.model \
--max_seq_len 512 --max_batch_size 6验证方式是确认命令能够启动示例并生成聊天补全文本;资料没有提供固定测试提示、预期输出或自动化验证命令。上例使用 7B 模型对应的模型并行值 1,且将序列长度设为 512、批量大小设为 6;这些是 README 示例参数,不应视为所有硬件的通用默认值。
配置说明
README 展示的是命令行参数,而不是统一配置文件。下表汇总资料中实际出现的字段;除明确给出的模型并行对照外,README 没有声明默认值,因此以“未提供”标记,不能把示例命令中的取值误读成程序默认值。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
--nproc_per_node | 整数参数 | 未提供 | 指定 torchrun 启动进程数;README 给出的 7B、13B、70B 模型并行值分别为 1、2、8。 |
--ckpt_dir | 路径参数 | 未提供 | 指定模型检查点目录;示例值为 llama-2-7b-chat/ 或 llama-2-7b/。 |
--tokenizer_path | 路径参数 | 未提供 | 指定分词器模型文件;示例值为 tokenizer.model。 |
--max_seq_len | 整数参数 | 未提供 | 设定最大序列长度;README 说明模型支持最长 4096 个词元,并按该值预分配缓存。 |
--max_batch_size | 整数参数 | 未提供 | 设定最大批量大小;缓存会按该值预分配,需结合硬件调整。 |
配置时应先匹配模型与模型并行进程数,再根据可用硬件选择序列长度和批量大小。README 没有提供自动资源估算公式、参数冲突检查规则或环境变量配置说明;官方仓库未提供该信息,建议以最新 README 为准。
进阶用法
进阶使用的关键不是增加未知参数,而是根据模型训练目标选择正确的输入范式。预训练模型用于提示续写,微调聊天模型则要求遵循对话模板;两种路径都使用检查点、分词器和相应的推理示例程序。
预训练模型的文本续写
预训练模型没有针对聊天或问答进行微调。使用者应将提示组织为答案的自然前文,并调用文本补全脚本;README 的示例将最大序列长度设为 128、最大批量大小设为 4,模型并行进程数为 1。
torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir llama-2-7b/ \
--tokenizer_path tokenizer.model \
--max_seq_len 128 --max_batch_size 4聊天模型的输入格式
微调聊天模型需要按仓库定义构造输入,包括 INST、<<SYS>>、BOS、EOS,以及标签之间的空格与换行。README 建议对输入调用 strip(),以避免重复空格;实际模板应核对仓库中与 chat_completion 关联的实现,不能仅凭标签名称自行省略格式元素。
安全检查器的扩展边界
README 提到可在输入和输出侧添加安全检查器,并给出 llama-cookbook 的示例作为参考。该扩展属于调用方自行集成的能力;所给资料没有定义分类器接口、部署方式、审计记录格式或误报漏报指标,实施时需另行验证适用性。
可观测性与运维
所给 README 主要覆盖下载和本地推理示例,没有描述指标采集、结构化日志、分布式追踪、健康检查、服务级目标或故障恢复机制。因而不能据此声称仓库提供生产环境的可观测性或运维控制面。
实际运行时可先围绕资料明确的环节做人工核验:模型下载是否完成,检查点目录和分词器路径是否正确,进程数是否与模型并行配置一致,以及命令能否产出文本。以上属于依据 README 操作步骤给出的检查建议,不代表仓库内置了专用监控组件。
- 下载问题:核实
wget、md5sum是否可用,并检查签名 URL 是否过期或达到下载次数限制。 - 启动问题:检查
--ckpt_dir与--tokenizer_path是否指向已下载文件,并核对模型对应的--nproc_per_node。 - 资源问题:README 指出缓存按
max_seq_len和max_batch_size预分配;应结合目标硬件调整这两个参数。 - 服务化运维:服务端部署、并发策略、日志字段、指标名称和恢复流程均未在所给资料中提供。
安全与合规边界
该项目涉及模型权重访问、生成内容风险和模型材料分发,使用时应同时核对许可条款、可接受使用政策及数据处理边界。README 明确提醒 Llama 2 是带有潜在使用风险的新技术,并提供 Responsible Use Guide;本文不将示例推理代码等同于已完成风险控制的生产系统。
“Llama 2 is a new technology that carries potential risks with use. Testing conducted to date has not — and could not — cover all scenarios.”
来源:README
许可证要求使用遵守适用法律法规,并遵循 Llama Materials 的 Acceptable Use Policy;协议还限制将相关材料及其输出或结果用于改进其他大型语言模型,但对 Llama 2 或其衍生作品作了条款中的例外。部署方应在获授权的环境中处理模型与输入数据,并根据自身适用的隐私、行业和组织要求建立访问控制与数据保留规则;这些控制措施不属于 README 所述内置能力。
下载链接属于访问凭证,应避免公开传播或写入公开日志。模型输出需要按具体用途进行评估;README 提供了输入和输出安全分类器的扩展参考,但没有承诺该检查器覆盖所有风险,也没有给出安全效果保证。
许可证与商用条款
仓库元信息中的许可证字段为 NOASSERTION,但所给 LICENSE 文件正文标题为 LLAMA 2 COMMUNITY LICENSE AGREEMENT,版本发布日期为 2023 年 7 月 18 日。判断具体权利义务时应以仓库 LICENSE 的完整文本及适用的模型材料条款为准,不能把 GitHub 元信息的 NOASSERTION 解读为无许可限制。
协议授予非独占、全球范围、不可转让、免版税的有限许可,涉及使用、复制、分发、制作衍生作品和修改 Llama Materials。协议允许研究和商业实体使用,但这不等于不受条件限制的通用开源许可;使用者仍需遵守协议中的分发、可接受使用政策和其他条款。
- 再分发 Llama Materials 或其衍生作品时,须向第三方提供协议副本。
- 分发的副本须在随附的 Notice 文本文件中保留指定归属声明:
Llama 2 is licensed under the LLAMA 2 Community License, Copyright (c) Meta Platforms, Inc. All Rights Reserved. - 协议规定,若在 Llama 2 发布日,使用者及其关联方产品或服务的前一日历月月活用户超过 7 亿,须向 Meta 申请许可;是否授予由 Meta 决定,在明确授权前不得行使协议项下权利。
- 协议包含免责声明、责任限制、终止条件和适用法律与管辖条款;具体解释以仓库 LICENSE 为准。
因此,商业使用不能只根据仓库的语言、星标或 README 概述判断。应核对实际使用的模型材料版本、分发方式、组织规模与可接受使用政策,并在需要时寻求适当的法律审查。
局限性与已知限制
最重要的项目状态限制是 README 已声明弃用,并提供了后续仓库方向。该仓库的说明主体围绕 Llama 2,不能由此推断它包含 Llama 3.1 的完整能力、模型卡片或统一工具链。
- 资源要求没有量化:资料给出模型规模、最大序列长度及缓存预分配行为,但没有最低显存、内存、磁盘空间或吞吐数据。
- 依赖版本没有列明:所给资料未提供 Python、PyTorch、CUDA 或其他依赖的版本矩阵。
- 运行形态有限:README 展示本地命令行推理,没有说明服务化 API、认证、租户隔离或生产部署方案。
- 安全机制不是默认保证:分类器仅作为可集成的扩展示例被提及,所给资料没有覆盖率或安全效果数据。
- 模型访问有前置条件:Meta 下载需要接受许可并取得邮件链接;链接有效期与下载次数有限制。Hugging Face 途径也需要确认许可并提交申请。
针对维护状态、兼容性或当前下载流程的具体问题,官方仓库未提供该信息,建议以最新 README 为准。仓库弃用提示也意味着后续项目的接口、安装方式和许可不能直接假定与此处一致。
适合谁与不适合谁
是否采用该仓库,应由项目阶段、模型版本、运行环境和合规要求共同决定。下面的判断信号依据 README 所述用途及限制整理;超出明确资料的取舍属于根据本文作者的经验判断。
适合的场景
- 需要复现或理解 Llama 2 本地推理命令,并且团队能自行准备检查点与分词器。
- 项目目标是对比预训练文本续写和微调聊天补全两种输入方式,而不是寻找托管推理服务。
- 运行环境已具备 README 所要求的 PyTorch/CUDA 条件,且团队能够根据模型设置模型并行进程数。
- 组织能够接受并审查 Llama 2 Community License Agreement、Acceptable Use Policy 和相关分发义务。
- 维护既有 Llama 2 代码或进行历史实现评估,需要以旧版示例作为参考。
不适合的场景
- 新系统需要一个仍在此仓库持续演进的统一开发入口;README 已建议将新开发转向其他仓库。
- 项目要求无需申请即可获取权重,或无法接受签名下载链接、模型许可确认等前置步骤。
- 业务要求明确的服务端接口、并发保证、可用性指标或生产支持承诺;所给资料没有提供这些内容。
- 团队无法满足 PyTorch/CUDA 环境要求,或无法为 13B、70B 模型提供与 README 所列模型并行值相对应的运行资源。
- 合规审查要求使用无附加条件的通用开源许可;该仓库所给 LICENSE 是 Llama 2 Community License Agreement,且包含具体限制。
常见问题与排查(FAQ / Troubleshooting)
常见故障集中在模型访问、输入文件路径、进程数与输入格式。以下排查项只复述资料中可核对的条件;对于错误日志的完整解释,官方仓库未提供该信息,建议以最新 README 为准。
运行下载脚本时出现 403
README 指出下载链接会在 24 小时后过期,并受下载次数限制;出现 403: Forbidden 时可重新申请链接。检查复制的是否为邮件中的完整链接,并按 README 提示手动复制,不使用“Copy Link”选项。
推理程序找不到模型或分词器
核对 --ckpt_dir 是否指向所下载模型的检查点目录,且 --tokenizer_path 是否指向实际的分词器文件。README 示例中的目录和文件名只是示例值,需要替换成下载结果对应的路径。
应该设置多少个启动进程
按 README 的模型并行对照设置:7B 使用 1、13B 使用 2、70B 使用 8。所给资料没有说明其他模型变体的映射,官方仓库未提供该信息,建议以最新 README 为准。
为什么序列长度或批量大小影响运行
README 说明缓存按 max_seq_len 与 max_batch_size 预分配,并要求按硬件调整。资料未给出资源估算表或具体错误与参数之间的映射,需在目标环境中验证。
聊天输出格式异常应检查什么
确认输入符合聊天补全模板,包括 INST、<<SYS>>、BOS、EOS 和必要的空白符;README 建议对输入调用 strip() 以避免双空格。预训练模型不针对聊天或问答微调,应改用自然续写式提示并选择文本补全示例。
项目地址与资源
本节集中列出仓库资料中出现的项目与官方资源入口,便于核对代码、模型访问条件、安全说明和后续维护方向。



