开源大语言模型Llama 2

Llama 2

Github开源地址

我们正在释放大型语言模型的潜力。我们最新版本的 Llama 现在可供个人、创作者、研究人员和各种规模的企业使用,以便他们可以负责任地进行实验、创新和扩展他们的想法。

此发布包括预训练和微调的 Llama 语言模型的模型权重和起始代码,参数范围从 7B 到 70B。

此存储库旨在作为加载 Llama 2 模型并运行推理的最小示例。有关更详细的示例,可查看 llama-recipes

发布后的更新

请参见 UPDATES.md。另外,有关经常问到的问题的持续列表,请参见此处

下载

⚠️ 7/18:我们注意到今天有人遇到了许多下载问题。仍然遇到问题的人应删除所有本地文件,重新克隆存储库,并请求新的下载链接。如果您有本地损坏的文件,这一点非常重要。

为了下载模型权重和分词器,请访问Meta 网站 并接受我们的许可协议。

一旦您的请求获得批准,您将通过电子邮件收到一个签名的 URL。然后运行 download.sh 脚本,并在提示时传递提供的 URL 来开始下载。

先决条件:确保您已安装 wgetmd5sum。然后运行脚本:./download.sh

请注意,链接在 24 小时内会过期,且下载数量有限。如果您开始看到“403: 禁止”等错误,您可以随时重新请求链接。

在 Hugging Face 上访问

我们还提供在Hugging Face 上的下载。您必须首先使用与您的 Hugging Face 帐户相同的电子邮件地址从 Meta 网站请求下载。这样做后,您可以请求访问 Hugging Face 上的任何模型,1-2 天内您的帐户将被授予对所有版本的访问权限。

快速开始

您可以按照以下步骤快速启动并运行 Llama 2 模型。这些步骤将允许您在本地快速进行推理。有关更多示例,请查看 Llama 2 recipes 存储库

  1. 在具有 PyTorch / CUDA 的 conda 环境中克隆并下载此存储库。

  2. 在顶层目录中运行:

    pip install -e .
    
  3. 访问 Meta 网站 并注册以下载模型。

  4. 注册后,您将收到一封包含下载模型 URL 的电子邮件。在运行 download.sh 脚本时,您将需要此 URL。

  5. 收到电子邮件后,导航到您下载的 Llama 存储库并运行 download.sh 脚本。

    • 确保为 download.sh 脚本授予执行权限
    • 在此过程中,您将被提示输入电子邮件中的 URL。
    • 请不要使用“复制链接”选项,而是确保手动从电子邮件中复制链接。
  6. 一旦您下载了所需的模型,您可以使用以下命令在本地运行模型:

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_lenmax_batch_size 参数。
  • 此示例运行存储库中的 example_chat_completion.py,但您可以将其更改为其他 .py 文件。

推理

不同的模型需要不同的模型并行(MP)值:

模型 MP
7B 1
13B 2
70B 8

所有模型都支持最多 4096 个标记的序列长度,但我们根据 max_seq_lenmax_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>> 标记、BOSEOS 标记,以及它们之间的空格和换行符(我们建议在输入上调用 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”或其他问题:

模型卡片

请参见 MODEL_CARD.md

许可

我们的模型和权重适用于研究人员和商业实体,秉承着开放原则。我们的使命是通过这一机会赋予个人和产业力量,同时促进探索和道德人工智能的进展。

请查看 LICENSE 文件,以及我们的附带的可接受使用政策

引用

  1. 研究论文
  2. Llama 2 技术概述
  3. 开放创新人工智能研究社区

常见问题的 FAQ 可在此处找到,随着时间的推移,将根据新问题进行更新。

原始 LLaMA

原始 Llama 版本的存储库位于 llama_v1 分支。

posted @ 2023-11-11 17:24  ryan-Z  阅读(260)  评论(0编辑  收藏  举报