Meta Llama Models:Llama 4 单卡量化推理与选型指南
【免费下载链接】llama-modelsUtilities intended for use with Llama models.项目地址: https://gitcode.com/GitHub_Trending/ll/llama-models
显存只有 1 张 80GB,却要跑 Llama-4-Scout-17B:Meta 官方参考仓库llama-models,从 checkpoint 到输出 token 的完整推理实现,让你不依赖第三方框架跑通官方模型。
80GB 显存部署 Llama 4 的参考实现:项目全景
llama-models 解决什么问题:拿到.pth权重后,从格式化成 prompt、tokenize、进模型、采样到流式吐字,一条链路全在仓库内闭环,llama-model命令负责权重的 list/download/verify。
核心组成:llama-modelCLI 管权重与校验;llama_models/llama4/generation.py 做批量推理与采样;quantize_impls.py实现 FP8/Int4 混精;chat_format.py套官方 prompt 模板;checkpoint.py负责按 GPU 数重切分权重。
与同类最大的差异:它是官方参考实现而非推理引擎——官方 benchmark 即由此代码跑出,prompt 格式、分词、量化行为与 Meta 评测完全一致。
数据流:从量化加载到 top-p 采样的 5 个环节
一条 chat 请求的完整路径:ChatFormat把对话编码成 token;若含图片,占位符<|patch|>位置在首步被视觉编码器输出替换;token 经并行嵌入进入 N 层 Transformer,KV 缓存只追加不重算,注意力按层在 RoPE/NoPE 间切换(iRoPE 设计);logits 经温度缩放做 top-p 采样;每步yield一个 token,天然流式。
采样环节,做了什么:裁剪概率质量到 p 再重归一化抽样,并判断 stop token。为什么:nucleus 采样控制生成多样性,stop 位掩码保证不覆盖 prompt。
# llama_models/llama4/generation.py if temperature > 0: probs = torch.softmax(logits[:, -1] / temperature, dim=-1) # 温度缩放 next_token = sample_top_p(probs, top_p) # nucleus 采样 else: next_token = torch.argmax(logits[:, -1], dim=-1) ... eos_reached |= (~input_text_mask[:, cur_pos]) & (torch.isin(next_token, stop_tokens))量化环节,做了什么:BF16 权重在模型构建时加载,随后被原地替换为 FBGEMM 的 FP8 行级或 Int4 分组(128 一组)权重。为什么:激活保持 BF16 计算,权重减半到四分之,精度损失换显存。
# llama_models/quantize_impls.py def bmm_nt(x, w, num_tokens=None): if isinstance(w, Fp8ScaledWeights): xq, x_scale = torch.ops.fbgemm.quantize_fp8_per_row(x, num_tokens, w.activation_scale_ub) return torch.ops.fbgemm.f8f8bf16_rowwise_batched(xq, w.weight, x_scale, w.scale) elif isinstance(w, Int4ScaledWeights): return torch.ops.fbgemm.bf16i4bf16_rowwise_batched(x, w.weight, w.scale, torch.zeros_like(w.scale))三条推理路径差异(以 Scout-17B-16E 为准,README 实测配置):
| 路径 | 权重精度 | 最低配置 | 特点 |
|---|---|---|---|
| 纯 BF16 | bf16 | 4×80GB | 精度基准 |
| fp8_mixed | FP8 行级 | 2×80GB | 激活保持 BF16 |
| int4_mixed | Int4 分组 | 1×80GB | group_size=128 |
| 视觉输入 | bf16 | 4×80GB | <\|patch\|>占位换图像嵌入 |
Llama 2 到 Llama 4 演进:能力矩阵与 2 个转折点
| 能力 | 2 | 3 | 3.1 | 3.2-V | 4 |
|---|---|---|---|---|---|
| 上下文 | 4K | 8K | 128K | 128K | 1M/10M |
| MoE | ❌ | ❌ | ❌ | ❌ | ✅16E/128E |
| 图像理解 | ❌ | ❌ | ❌ | ✅ | ✅原生 |
| FP8/Int4 推理 | ❌ | ✅ | ✅ | ✅ | ✅ |
| iRoPE/NoPE 层 | ❌ | ❌ | ❌ | ❌ | ✅ |
转折点在 2024-09:3.2-Vision 把视觉编码器内置进官方参考实现,而不是外挂;2025-04:Llama 4 用 MoE 加 iRoPE 把上下文从 128K 推到 10M,同时把单专家压到 17B 让量化部署可行。下图是仓库自带的视觉示例:两张图输入,模型输出融合两图内容的俳句。
最少 GPU 数量跑通 Llama 4 的最短路径
环境要求:
| 项 | 要求 |
|---|---|
| Python | 3.10+ |
| GPU | NVIDIA;int4 单张 80GB,bf16 需 4×80GB |
| 存储 | ≥120GB(Scout 权重) |
| 依赖 | torch + fbgemm-gpu-genai(量化必装) |
# 1. 克隆并装 torch 依赖(含 fairscale/fbgemm) git clone https://gitcode.com/GitHub_Trending/ll/llama-models && cd llama-models pip install .[torch] # 2. 在官方站点接受协议后,用 CLI 下载权重 llama-model list --show-all # 查看模型 ID llama-model download --source meta --model-id Llama-4-Scout-17B-16E-Instruct # 3. 四卡 int4 混合精度跑 chat 示例 NGPUS=4 PYTHONPATH=$(git rev-parse --show-toplevel) torchrun --nproc_per_node=$NGPUS \ -m models.llama4.scripts.chat_completion ~/.llama/checkpoints/Llama-4-Scout-17B-16E-Instruct \ --world_size $NGPUS --quantization-mode int4_mixed看到 "Loaded in X seconds" 后模型流式打印示例回答即成功。
| 现象 | 原因 | 解法 |
|---|---|---|
| 下载报 403 Forbidden | 签名链接 24 小时过期 | 重新申请新链接 |
| 量化模式报错 | fbgemm-gpu-genai 未装或架构不支持 | 改跑 bf16 或换 CUDA 环境 |
| vocab_size 断言失败 | 权重目录不完整 | llama-model verify-download校验后重下 |
llama-models vs Transformers vs vLLM 开源选型对比
| 维度 | llama-models | Hugging Face Transformers | vLLM |
|---|---|---|---|
| 模型覆盖 | Llama 2/3 全系 | Llama 2/3 全系+社区 | 以 Llama 为主 |
| 量化 | FP8/Int4 原生 | 需 bitsandbytes 等外挂 | 内建多档 |
| 上下文 | 官方上限(10M) | 受社区实现限制 | 视版本 |
| 服务框架 | 无(纯推理脚本) | 无 | 内建高并发引擎 |
| 行为一致性 | 与官方评测一致 | prompt 需手动对齐 | 采样/模板可能漂移 |
如果你要复现官方 benchmark 或核对量化行为,选 llama-models;如果你要在 5 分钟内跑通验证想法,选 Transformers;如果你要上生产扛并发,选 vLLM,llama-models 只用来当正确性基准。
边界与下一步:llama-models 目前不做什么
不擅长三点:仓库只有推理,没有任何训练与微调代码;Llama 4 全精度推理硬性要求 4×80GB,小显存只能走量化;FP8/Int4 依赖 fbgemm-gpu-genai,非 NVIDIA 平台基本跑不了量化路径。维护状态:包版本 0.2.0,Llama 4 于 2025-04-05 上架后仓库仍在滚动合入量化加载与 iRoPE 相关代码。按 models/llama4/USE_POLICY.md 的更新节奏与量化方案(Int4 已落地、FP8 已可用)推断,下一步大概率是更小的 group_size 量化与更多 3.2 视觉能力回填,而非训练侧。
【免费下载链接】llama-modelsUtilities intended for use with Llama models.项目地址: https://gitcode.com/GitHub_Trending/ll/llama-models
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考