llama
Meta 开源的 Llama 3.3 模型包,针对单 GPU 高效推理优化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Meta 开源的 Llama 3.3 模型包,针对单 GPU 高效推理优化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2023年7月,Meta AI 在 AI 开源史上投下了一枚深水炸弹——正式发布 Llama 2 大语言模型,宣布面向研究者和商业用户免费开放使用。这一决定震动业界:在此之前,GPT-4、Claude、PaLM 等顶级大模型均属闭源,商业调用成本高昂。Llama 2 的出现,首次让"在自有服务器上运行接近 GPT-3.5 水平的开源模型"成为可能。
从技术演进角度,Llama 2 经历了从初代 Llama(2023年2月仅面向研究机构开放)到全面开源的跨越。其核心研发团队由 Meta AI 的 Hugo Touvron 等人领导,论文《Llama 2: Open Foundation and Fine-tuned Chat Models》系统阐述了模型训练细节:基于自回归 Transformer 架构,预训练数据量达 2 万亿 token,训练硬件为 A100-80GB GPU,总计算量约 331 万 GPU 小时,碳排放 539 吨(已由 Meta 碳中和项目抵消)。
Llama 2 的出现,本质上是 Meta 在开源社区与 OpenAI/Google 闭源生态之间打出的战略牌——用开源换影响力,用开放换生态主导权。
⚠️ 重要声明: 这个仓库(
meta-llama/llama)在 Llama 3.1 发布时已被 Meta 官方废弃,README 顶部明确标注 "Note of deprecation"。Llama 2 的核心推理代码现在已整合至 llama-models 等新仓库。
这个仓库本质上是 Llama 2 模型的最小推理示例包——它只包含模型加载和推理运行所必需的核心代码,不包含训练代码、预训练数据或完整工具链。
项目目录结构极为精简(仅 16 项),核心只有 4 个 Python 模块:
| 模块 | 职责 |
|---|---|
llama/model.py | Transformer 模型架构定义(自回归解码器) |
llama/generation.py | 文本生成逻辑(采样策略、温度控制) |
llama/tokenizer.py | SentencePiece 分词器封装 |
llama/__init__.py | 包入口,暴露 Llama 主类 |
依赖项也极为克制:torch(PyTorch 张量计算)、fairscale(模型并行)、fire(CLI 参数解析)、sentencepiece(分词)。
使用方式通过两个示例脚本体现:
example_text_completion.py — 纯文本补全(预训练模型用)example_chat_completion.py — 对话补全(微调聊天模型用,遵循特定格式标签)运行方式也非常直接:
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
Llama 2 提供三种参数规模,不同规模对硬件要求差异极大:
| 模型 | 参数量 | 并行进程数 | 推荐显存 | 适用场景 |
|---|---|---|---|---|
| Llama 2 7B | 70亿 | 1 | ≥14GB | 个人开发、研究 |
| Llama 2 13B | 130亿 | 2 | ≥26GB | 小团队、研究 |
| Llama 2 70B | 700亿 | 8 | ≥140GB | 服务器级部署 |
其中 70B 模型使用了 Grouped-Query Attention (GQA) 技术,将 KV 头压缩以提升推理效率——这是后续 Llama 3/4 持续沿用的关键技术决策。
从代码层面分析,Llama 2 推理实现有以下几个技术亮点:
1. 精简的模型架构 代码没有复杂的工程封装,直接暴露 Transformer 解码器的核心实现。对学习大模型内部机制的开发者而言,这是非常干净的参考素材——没有 FastAPI、没有 LangChain、没有多余的中间层。
2. 支持灵活的生成控制
通过 temperature(随机性)、top_p(核采样)、max_gen_len(生成长度上限)等参数,提供了完整的采样控制能力,与生产级推理库的功能对齐完整。
3. 对话格式规范
微调聊天模型要求严格遵循 INST、<<SYS>>、BOS/EOS token 等格式规范,代码中 generation.py 对此有明确实现。这是理解 RLHF/SFT 对齐训练效果的重要入口。
4. 模型并行支持
通过 fairscale 支持多 GPU 并行推理(--nproc_per_node 参数),70B 模型需 8 GPU 并行。代码结构简洁,便于理解分布式推理的通信模式。
获取模型权重是最大门槛。 官方提供两条路径:
download.sh 脚本。链接24小时有效,下载完成后需手动复制 URL。获得权重后,部署流程本身极为简洁:pip install -e . 后直接 torchrun 运行脚本。但实际门槛在于:CUDA 环境配置、GPU 显存充足、以及 PyTorch 版本兼容性问题。
这是一套面向"已具备 ML 工程能力"的开发者的工具,不适合完全没有深度学习经验的从业者。
Llama 2 的历史地位毋庸置疑:它是第一个真正意义上"可商用的开源顶级大模型",直接催生了 Vicuna、Alpaca、LlamaFactory 等大量开源微调生态,Llama 系列模型也成为目前 Hugging Face 上最流行的基础模型族。
然而这个特定仓库(llama 2 推理代码)的局限性也很明显:
Llama 2 的发布是开源大模型运动的关键转折点。在此之前,开源 LLMs 与 GPT-3.5 水平存在明显差距;Llama 2 70B 在多个基准上逼近 GPT-3.5,直接证明了"开源模型可以做到接近闭源水平",推动了 Mistral、Qwen、LLaMA-Factory 等后续生态的爆发。
Meta 的策略也已从"谨慎开放"转向"全面开源生态":Llama 3 引入 128K 超长上下文,Llama 4 推出多模态支持,Llama Agentic System 开始构建 Agent 框架。Llama 2 推理代码仓库作为这段历史的起点代码遗产,虽然已被归档,但它是理解整个 Llama 生态演进不可绕过的起点。
论文参考: Touvron H. et al. "Llama 2: Open Foundation and Fine-tuned Chat Models", arXiv:2307.09288 (2023)