关于 Llama3
- Introducing Meta Llama 3: The most capable openly available LLM to date
https://ai.meta.com/blog/meta-llama-3/ - github : https://github.com/meta-llama/llama3
- huggingface : https://huggingface.co/collections/meta-llama/meta-llama-3-66214712577ca38149ebb2b6
- 官网:https://llama.meta.com
Meta正在释放大型语言模型的力量。Meta最新版本的 Llama 现在可供个人、创作者、研究人员和各种规模的企业使用,以便他们能够负责任地实验、创新和扩展他们的想法。
此版本包括预训练和指令调整的 Llama 3 语言模型的模型权重和起始代码 - 包括 8B 到 70B 参数的大小。
该存储库旨在作为加载 Llama 3 模型并运行推理的最小示例。有关更详细的示例,请参阅llama-recipes。
下载
方式一:网站申请许可
要下载模型权重和分词器,请访问Meta Llama 网站并接受许可证。
一旦您的请求获得批准,您将通过电子邮件收到签名的 URL。然后运行 download.sh
脚本,并在提示开始下载时传递提供的 URL。
先决条件:确保您已经wget
安装md5sum
。然后运行脚本:./download.sh
。
请记住,链接将在 24 小时和一定下载量后过期。如果开始看到诸如 403: Forbidden
之类的错误,您可以随时重新请求链接。
方式二:通过 Hugging Face
Meta还提供Hugging Face上的下载,包括转换器和本机llama3
格式。要从 Hugging Face 下载权重,请按照以下步骤操作:
- 访问其中一个存储库,例如 meta-llama/Meta-Llama-3-8B-Instruct。
- 阅读并接受许可证。一旦您的请求获得批准,您将有权访问所有 Llama 3 模型。请注意,处理请求最多需要一小时。
- 要下载原始权重以与此repo 一起使用,请单击
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 片段将下载并缓存权重:
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 recipes repository。
- 在具有 PyTorch / CUDA 的 conda 环境中,可以克隆并下载此存储库。
- 在 top-level 目录中运行:
pip install -e .
- 访问Meta Llama 网站并注册以下载模型。
- 注册后,您将收到一封电子邮件,其中包含下载模型的 URL。运行
download.sh
脚本时您将需要此 URL。 - 收到电子邮件后,前往下载的 llama 存储库 并运行 download.sh 脚本。
- 确保授予 download.sh 脚本执行权限
- 在此过程中,系统将提示您输入电子邮件中的 URL。
- 不要使用“复制链接”选项,而应确保手动复制电子邮件中的链接。
- 下载所需的模型后,您可以使用以下命令在本地运行该模型:
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/
为检查点目录的路径和Meta-Llama-3-8B-Instruct/tokenizer.model
分词器模型的路径。 - 应将其
–nproc_per_node
设置为您正在使用的型号的MP 值。 - 根据需要调整
max_seq_len
和max_batch_size
参数。 - 此示例运行在此存储库中的example_chat_completion.py,但您可以将其更改为不同的 .py 文件。
推理
不同的模型需要不同的模型并行 (MP) 值:
模型 | MP |
---|---|
8B | 1 |
70B | 8 |
所有模型都支持高达 8192 个令牌的序列长度,但Meta根据 max_seq_len
和 max_batch_size
值预先分配缓存。因此,请根据您的硬件进行设置。
预训练模型
这些模型未针对聊天或问答进行微调。应该提示他们,以便预期的答案成为提示的自然延续。
请参阅 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
需要遵循中定义的特定格式:
提示以<|begin_of_text|>
特殊标记开始,后面跟随一条或多条消息。
每条消息均以<|start_header_id|>
标签、system
、user
或 assistant
角色和 <|end_header_id|>
标签开头。
在 \n\n
之后是消息的内容。
每条消息的结尾都由 <|eot_id|>
令牌标记。
您还可以部署其他分类器来过滤掉 被认为不安全的输入和输出。
请参阅 llama-recipes 存储库,了解如何向推理代码的输入和输出 添加安全检查器的示例。
使用 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 是一项新技术,使用时存在潜在风险。迄今为止进行的测试尚未(也不可能)涵盖所有场景。
为了帮助开发人员解决这些风险,Meta创建了负责任的使用指南。
其他
问题
请通过以下方式之一报告任何软件“错误”或模型的其他问题:
- 报告模型问题:https://github.com/meta-llama/llama3/issues
- 报告模型生成的有风险内容:developers.facebook.com/llama_output_feedback
- 报告错误和安全问题:facebook.com/whitehat/info
型号卡
请参阅MODEL_CARD.md。
License
Meta的模型和权重已获得研究人员和商业实体的许可,坚持开放原则。
Meta的使命是通过这个机会为个人和行业赋能,同时营造一个发现和道德人工智能进步的环境。
问题
对于常见问题,可以在此处找到常见问题解答,该常见问题解答将随着新问题的出现而不断更新。
2024-04-19(五)