meta-llama/llama3
GitHub: meta-llama/llama3
Meta 官方 Llama 3 大语言模型仓库,提供预训练和指令微调模型的权重及本地推理代码(已弃用,功能拆分至多个子仓库)。
Stars: 29282 | Forks: 3528
🤗 Hugging Face 上的模型  | 博客  | 网站  | 开始使用 
## **弃用说明**
感谢您使用 Llama 模型进行开发。作为 Llama 3.1 发布的一部分,我们整合了 GitHub 仓库,并随着 Llama 的功能扩展为端到端的 Llama Stack 添加了一些额外的仓库。今后请使用以下仓库:
- [llama-models](https://github.com/meta-llama/llama-models) - 基础模型的核心仓库,包括基本实用程序、模型卡片、许可证和使用政策
- [PurpleLlama](https://github.com/meta-llama/PurpleLlama) - Llama Stack 的关键组件,专注于安全风险和推理时缓解措施
- [llama-toolchain](https://github.com/meta-llama/llama-toolchain) - 模型开发(推理/微调/安全防护/合成数据生成)接口和规范实现
- [llama-agentic-system](https://github.com/meta-llama/llama-agentic-system) - 端到端独立 Llama Stack 系统,带有自带的底层接口,支持创建智能体应用
- [llama-cookbook](https://github.com/meta-llama/llama-recipes) - 社区驱动的脚本和集成
如果您有任何问题,请随时在上述任何仓库中提交 issue,我们将尽力及时回复。
谢谢!
# (已弃用)Meta Llama 3
我们正在释放大型语言模型的力量。最新版本的 Llama 现已向个人、创作者、研究人员和各种规模的企业开放,以便他们能够负责任地进行实验、创新和扩展他们的想法。
本次发布包括预训练和指令微调的 Llama 3 语言模型的模型权重和入门代码——包括 80 亿(8B)到 700 亿(70B)参数的规模。
本仓库是加载 Llama 3 模型和运行推理的极简示例。有关更详细的示例,请参阅 [llama-cookbook](https://github.com/facebookresearch/llama-recipes/)。
## 下载
要下载模型权重和 tokenizer,请访问 [Meta Llama 网站](https://llama.meta.com/llama-downloads/) 并接受我们的许可协议。
一旦您的请求被批准,您将通过电子邮件收到一个签名 URL。然后,运行 download.sh 脚本,并在提示时传入该 URL 以开始下载。
前提条件:确保您已安装 `wget` 和 `md5sum`。然后运行脚本:`./download.sh`。
请记住,这些链接会在 24 小时和一定下载次数后过期。如果您开始看到诸如 `403: Forbidden` 之类的错误,您可以随时重新请求链接。
### 访问 Hugging Face
我们还在 [Hugging Face](https://huggingface.co/meta-llama) 上提供了下载,支持 transformers 和原生 `llama3` 格式。要从 Hugging Face 下载权重,请按照以下步骤操作:
- 访问其中一个仓库,例如 [meta-llama/Meta-Llama-3-8B-Instruct](https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct)。
- 阅读并接受许可协议。一旦您的请求被批准,您将获得所有 Llama 3 模型的访问权限。请注意,请求处理可能需要长达一小时。
- 要下载与本仓库一起使用的原始原生权重,请点击“Files and versions”选项卡并下载 `original` 文件夹中的内容。如果您安装了 `pip install huggingface-hub`,也可以从命令行下载它们:
```
huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --include "original/*" --local-dir meta-llama/Meta-Llama-3-8B-Instruct
```
- 要与 transformers 配合使用,以下 [pipeline](https://huggingface.co/docs/transformers/en/main_classes/pipelines) 代码片段将下载并缓存权重:
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model="meta-llama/Meta-Llama-3-8B-Instruct",
model_kwargs={"torch_dtype": torch.bfloat16},
device="cuda",
)
## 快速开始
您可以按照以下步骤快速启动并运行 Llama 3 模型。这些步骤将允许您在本地运行快速推理。有关更多示例,请参阅 [Llama Cookbook 仓库](https://github.com/facebookresearch/llama-recipes)。
1. 在包含 PyTorch / CUDA 的 conda 环境中克隆并下载此仓库。
2. 在顶级目录中运行:
pip install -e .
3. 访问 [Meta Llama 网站](https://llama.meta.com/llama-downloads/) 并注册以下载模型。
4. 注册后,您将收到一封包含下载模型 URL 的电子邮件。在运行 download.sh 脚本时,您将需要此 URL。
5. 收到电子邮件后,导航到您下载的 llama 仓库并运行 download.sh 脚本。
- 确保授予 download.sh 脚本执行权限
- 在此过程中,系统会提示您输入电子邮件中的 URL。
- 不要使用“复制链接”选项;请手动从电子邮件中复制链接。
6. 一旦您需要的模型下载完成,您可以使用以下命令在本地运行模型:
```
torchrun --nproc_per_node 1 example_chat_completion.py \
--ckpt_dir Meta-Llama-3-8B-Instruct/ \
--tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model \
--max_seq_len 512 --max_batch_size 6
```
**注意**
- 将 `Meta-Llama-3-8B-Instruct/` 替换为您的 checkpoint 目录的路径,并将 `Meta-Llama-3-8B-Instruct/tokenizer.model` 替换为您的 tokenizer 模型的路径。
- `–nproc_per_node` 应设置为您所使用模型的 [MP](#inference) 值。
- 根据需要调整 `max_seq_len` 和 `max_batch_size` 参数。
- 此示例运行本仓库中的 [example_chat_completion.py](example_chat_completion.py),但您可以将其更改为其他 .py 文件。
## 推理
不同的模型需要不同的模型并行 (MP) 值:
| 模型 | MP |
|--------|----|
| 8B | 1 |
| 70B | 8 |
所有模型都支持高达 8192 tokens 的序列长度,但我们会根据 `max_seq_len` 和 `max_batch_size` 的值预先分配缓存。因此,请根据您的硬件进行设置。
### 预训练模型
这些模型没有针对聊天或问答进行微调。应该通过 prompt 让预期的答案成为 prompt 的自然延续。
有关一些示例,请参见 `example_text_completion.py`。为了说明,请参见下面使用 llama-3-8b 模型运行它的命令(`nproc_per_node` 需要设置为 `MP` 值):
```
torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir Meta-Llama-3-8B/ \
--tokenizer_path Meta-Llama-3-8B/tokenizer.model \
--max_seq_len 128 --max_batch_size 4
```
### 指令微调模型
微调后的模型是针对对话应用进行训练的。为了获得预期的特性和性能,需要遵循 [`ChatFormat`](https://github.com/meta-llama/llama3/blob/main/llama/tokenizer.py#L202) 中定义的特定格式
:prompt 以 `<|begin_of_text|>` 特殊 token 开头,然后是一或多条消息。每条消息以 `<|start_header_id|>` 标签、角色 `system`、`user` 或 `assistant` 以及 `<|end_header_id|>` 标签开始。在双换行符 `\n\n` 之后是消息的内容。每条消息的末尾由 `<|eot_id|>` token 标记。
您还可以部署额外的分类器,以过滤掉被认为不安全的输入和输出。有关如何将安全检查器添加到推理代码的输入和输出的[示例](https://github.com/meta-llama/llama-recipes/blob/main/recipes/inference/local_inference/inference.py),请参阅 llama-cookbook 仓库。
使用 llama-3-8b-chat 的示例:
```
torchrun --nproc_per_node 1 example_chat_completion.py \
--ckpt_dir Meta-Llama-3-8B-Instruct/ \
--tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model \
--max_seq_len 512 --max_batch_size 6
```
Llama 3 是一项新技术,其使用伴随着潜在的风险。迄今为止进行的测试尚未——也不可能——涵盖所有场景。
为了帮助开发者应对这些风险,我们创建了[负责任使用指南](https://ai.meta.com/static-resource/responsible-use-guide/)。
## 问题
请通过以下任一方式报告模型相关的任何软件“bug”或其他问题:
- 报告模型问题:[https://github.com/meta-llama/llama3/issues](https://github.com/meta-llama/llama3/issues)
- 报告模型生成的风险内容:[developers.facebook.com/llama_output_feedback](http://developers.facebook.com/llama_output_feedback)
- 报告 bug 和安全问题:[facebook.com/whitehat/info](http://facebook.com/whitehat/info)
## 模型卡片
请参阅 [MODEL_CARD.md](MODEL_CARD.md)。
## 许可协议
我们的模型和权重授权给研究人员和商业实体使用,坚持开放原则。我们的使命是通过这一机会赋能个人和行业,同时促进发现和道德 AI 进步的环境。
请参阅 [LICENSE](LICENSE) 文件,以及随附的[可接受使用政策](USE_POLICY.md)
## 常见问题
对于常见问题,常见问题解答可以在[这里](https://llama.meta.com/faq) 找到,随着新问题的出现,我们将随时间更新这些内容。