GitHub - meta-llama/llama-models:Llama模型实用指南

GitHub - meta-llama/llama-models:Llama模型实用指南

技术背景

Llama是一个面向开发者、研究人员和企业的可访问的开源大语言模型(LLM),作为基础系统的一部分,它为全球社区的创新提供了基石。其具有开放访问、广泛的生态系统以及注重信任与安全等特点。开放访问使得开发者、研究人员和组织能够轻松获取前沿的大语言模型,促进了合作与进步;其模型被下载数亿次,有数千个基于Llama的社区项目,且得到了从云提供商到初创公司等广泛的平台支持;同时,Llama模型是信任与安全综合方法的一部分,致力于推动生成式AI信任与安全工具开发和使用的标准化。

实现步骤

下载模型权重和分词器

  1. 访问Meta Llama网站,阅读并接受许可证。
  2. 申请获批后,会通过电子邮件收到签名URL。
  3. 安装Llama CLI:pip install llama-stack
  4. 运行llama model list显示最新可用模型,确定要下载的模型ID。若需旧版本模型,运行llama model list --show-all
  5. 运行llama download --source meta --model-id CHOSEN_MODEL_ID,提示时输入提供的URL开始下载。注意链接在24小时和一定下载量后会过期,出现403错误可重新申请链接。

运行模型

  1. 检出仓库后安装依赖:在合适的Python环境(如uv、conda或virtualenv)中运行pip install .[torch]
  2. 示例脚本位于models/{ llama3, llama4 }/scripts/子目录。Llama4系列模型在全(bf16)精度下推理至少需要4个GPU。
1
2
3
4
5
6
NGPUS=4
CHECKPOINT_DIR=~/.llama/checkpoints/Llama-4-Scout-17B-16E-Instruct
PYTHONPATH=$(git rev-parse --show-toplevel) \
torchrun --nproc_per_node=$NGPUS \
-m models.llama4.scripts.chat_completion $CHECKPOINT_DIR \
--world_size $NGPUS

对于基础模型,更新CHECKPOINT_DIR路径并使用models.llama4.scripts.completion脚本。

使用FP8和Int4量化进行推理

可通过FP8或Int4量化减少模型内存占用,同时精度损失极小。使用--quantization-mode标志指定量化模式:

  • fp8_mixed:部分权重使用FP8,激活使用bfloat16进行混合精度推理。
  • int4_mixed:部分权重使用Int4,激活使用bfloat16进行混合精度推理。
1
2
3
4
5
6
7
8
9
10
11
12
MODE=fp8_mixed  # or int4_mixed
if [ $MODE == "fp8_mixed" ]; then
NGPUS=2
else
NGPUS=1
fi
CHECKPOINT_DIR=~/.llama/checkpoints/Llama-4-Scout-17B-16E-Instruct
PYTHONPATH=$(git rev-parse --show-toplevel) \
torchrun --nproc_per_node=$NGPUS \
-m models.llama4.scripts.chat_completion $CHECKPOINT_DIR \
--world_size $NGPUS \
--quantization-mode $MODE

从Hugging Face下载

  1. 访问仓库,如meta-llama/Llama-4-Scout-17B-16E,阅读并接受许可证。获批后可访问所有Llama 3.1模型及以前版本。
  2. 若要下载原始本地权重,点击“Files and versions”标签,下载原始文件夹内容。也可通过命令行下载:huggingface-cli download meta-llama/Llama-4-Scout-17B-16E-Instruct-Original --local-dir meta-llama/Llama-4-Scout-17B-16E-Instruct-Original
  3. 使用transformers下载和缓存权重:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from transformers import AutoTokenizer, Llama4ForConditionalGeneration
import torch

model_id = "meta-llama/Llama-4-Scout-17B-16E-Instruct"

tokenizer = AutoTokenizer.from_pretrained(model_id)

messages = [
{"role": "user", "content": "Who are you?"},
]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
)

model = Llama4ForConditionalGeneration.from_pretrained(
model_id, device_map="auto", torch_dtype=torch.bfloat16
)

outputs = model.generate(**inputs.to(model.device), max_new_tokens=100)
outputs = tokenizer.batch_decode(outputs[:, inputs["input_ids"].shape[-1] :])
print(outputs[0])

运行:torchrun --nnodes=1 --nproc_per_node=8 inference.py

安装

可通过pip install llama-models将此仓库作为包安装。

最佳实践

  • 运行模型前,确保Python环境和依赖正确安装,特别是对于Llama4系列模型,要保证有足够的GPU资源。
  • 下载模型时,注意链接的有效期和下载量限制,若出现错误及时重新申请链接。
  • 使用量化推理时,根据实际需求选择合适的量化模式,在内存占用和精度之间进行权衡。

常见问题

  • 模型下载链接过期:重新申请链接。
  • 运行模型时出现软件“bug”或其他问题:通过以下方式报告:
  • 常见问题可查看FAQ,该文档会随新问题出现不断更新。

GitHub - meta-llama/llama-models:Llama模型实用指南
https://119291.xyz/posts/github-meta-llama-llama-models-guide/
作者
ww
发布于
2025年5月20日
许可协议