Llama 2 Github开源地址
我们正在释放大型语言模型的潜力。我们最新版本的 Llama 现在可供个人、创作者、研究人员和各种规模的企业使用,以便他们可以负责任地进行实验、创新和扩展他们的想法。
此发布包括预训练和微调的 Llama 语言模型的模型权重和起始代码,参数范围从 7B 到 70B。
此存储库旨在作为加载 Llama 2 模型并运行推理的最小示例。有关更详细的示例,可查看 llama-recipes。
发布后的更新
请参见 UPDATES.md。另外,有关经常问到的问题的持续列表,请参见此处。
下载
⚠️ 7/18:我们注意到今天有人遇到了许多下载问题。仍然遇到问题的人应删除所有本地文件,重新克隆存储库,并请求新的下载链接。如果您有本地损坏的文件,这一点非常重要。
为了下载模型权重和分词器,请访问Meta 网站 并接受我们的许可协议。
一旦您的请求获得批准,您将通过电子邮件收到一个签名的 URL。然后运行 download.sh 脚本,并在提示时传递提供的 URL 来开始下载。
先决条件:确保您已安装 wget
和 md5sum
。然后运行脚本:./download.sh
。
请注意,链接在 24 小时内会过期,且下载数量有限。如果您开始看到“403: 禁止”等错误,您可以随时重新请求链接。
在 Hugging Face 上访问
我们还提供在Hugging Face 上的下载。您必须首先使用与您的 Hugging Face 帐户相同的电子邮件地址从 Meta 网站请求下载。这样做后,您可以请求访问 Hugging Face 上的任何模型,1-2 天内您的帐户将被授予对所有版本的访问权限。
快速开始
您可以按照以下步骤快速启动并运行 Llama 2 模型。这些步骤将允许您在本地快速进行推理。有关更多示例,请查看 Llama 2 recipes 存储库。
-
在具有 PyTorch / CUDA 的 conda 环境中克隆并下载此存储库。
-
在顶层目录中运行:
pip install -e .
-
访问 Meta 网站 并注册以下载模型。
-
注册后,您将收到一封包含下载模型 URL 的电子邮件。在运行 download.sh 脚本时,您将需要此 URL。
-
收到电子邮件后,导航到您下载的 Llama 存储库并运行 download.sh 脚本。
- 确保为 download.sh 脚本授予执行权限
- 在此过程中,您将被提示输入电子邮件中的 URL。
- 请不要使用“复制链接”选项,而是确保手动从电子邮件中复制链接。
-
一旦您下载了所需的模型,您可以使用以下命令在本地运行模型:
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-7b-chat/
替换为您的检查点目录路径,将tokenizer.model
替换为您的分词器模型路径。 –nproc_per_node
应设置为您正在使用的模型的 MP 值。- 根据需要调整
max_seq_len
和max_batch_size
参数。 - 此示例运行存储库中的 example_chat_completion.py,但您可以将其更改为其他 .py 文件。
推理
不同的模型需要不同的模型并行(MP)值:
模型 | MP |
---|---|
7B | 1 |
13B | 2 |
70B | 8 |
所有模型都支持最多 4096 个标记的序列长度,但我们根据 max_seq_len
和 max_batch_size
值预先分配缓存。因此,请根据您的硬件设置这些值。
预训练模型
这些模型没有为聊天或问答进行微调。它们应该被提示,以便预期的答案是提示的自然延续。
有关一些示例,请参见 example_text_completion.py
。例如,运行以下命令以使用 llama-2-7b 模型运行它(nproc_per_node
需要设置为 MP
值):
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
微调的聊天模型
已经对这些模型进行了对话应用的训练。为了获得它们的预期特性和性能,需要遵循 chat_completion
中定义的特定格式,包括 INST
和 <<SYS>>
标记、BOS
和 EOS
标记,以及它们之间的空格和换行符(我们建议在输入上调用 strip()
以避免双空格)。
您还可以为过滤被视为不安全的输入和输出添加附加的分类器。有关如何在推理代码的输入和输出中添加安全检查器的示例,请参见 llama-recipes 存储库中的示例。
使用 llama-2-7b-chat 的示例:
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 是一项带有潜在风险的新技术。迄今为止进行的测试未能涵盖所有场景。
为了帮助开发者解决这些风险,我们已创建了负责任使用指南。有关更多详细信息,请参见我们的研究论文。
问题
请通过以下一种方式报告与模型有关的软件“bug”或其他问题:
- 报告模型问题:github.com/facebookresearch/llama
- 报告模型生成的风险内容:developers.facebook.com/llama_output_feedback
- 报告错误和安全问题:facebook.com/whitehat/info
模型卡片
请参见 MODEL_CARD.md。
许可
我们的模型和权重适用于研究人员和商业实体,秉承着开放原则。我们的使命是通过这一机会赋予个人和产业力量,同时促进探索和道德人工智能的进展。
请查看 LICENSE 文件,以及我们的附带的可接受使用政策。
引用
常见问题的 FAQ 可在此处找到,随着时间的推移,将根据新问题进行更新。
原始 LLaMA
原始 Llama 版本的存储库位于 llama_v1
分支。