文章目录
一、关于 llama-recipes
使用可组合的FSDP和PEFT方法 微调Meta Llama3,以覆盖单/多节点GPU的脚本。
支持用于摘要和问答等应用程序的默认和自定义数据集。
支持许多直接的推理解决方案,例如用于本地或云部署的 HF TGI、VLLM。
展示WhatsApp 和 Messenger 的 Meta Llama3的演示应用程序。
"llama-recipes"存储库是Meta Llama 3模型的伴侣。
该存储库的目标是 提供一个可扩展的库,用于微调Meta Llama模型,以及一些示例脚本和笔记本,以便在各种用例中 快速开始使用模型,包括 域适应微调 以及使用Meta Llama和LLM生态系统中的其他工具 构建基于LLM的应用程序。
此处的示例展示了如何在本地、云端和本地运行Meta Llama。
Meta Llama 2也支持此存储库。我们强烈建议大家使用Meta Llama 3,因为它增强了功能。
Meta Llama 3有一个新的提示模板和特殊token (基于TikTokenizer)。
token | 描述 |
---|---|
`< | begin_of_text |
`< | end_of_text |
`< | eot_id |
`< | start_header_id |
Meta Llama 3的多伦对话遵循以下提示模板:
shell
<|begin_of_text|><|start_header_id|>system<|end_header_id|>
{{ system_prompt }}<|eot_id|><|start_header_id|>user<|end_header_id|>
{{ user_message_1 }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
{{ model_answer_1 }}<|eot_id|><|start_header_id|>user<|end_header_id|>
{{ user_message_2 }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
在启动新标头之前,每条消息都会被一个<|eot_id|>
标记跟踪,发出角色更改的信号。
有关新标记器和提示模板的更多详细信息,请参见此处。
注意:最近重新构造了llama recipes库,以促进开发人员更好地使用示例。一些文件已移动到新位置。
src/
文件夹未被修改,因此此repo和包的功能不受影响。
通过运行 git pull origin main
确保您更新您的本地克隆
二、入门
这些说明将为您提供项目的副本,并在本地计算机上运行,以用于开发和测试目的。
有关如何在实时系统上部署项目的说明,请参阅部署。
1、先决条件
PyTorch Nightlies
如果您想使用PyTorch Nightlies 而不是稳定版,请转到本指南以检索平台上pip install
命令的正确--extra-index-url URL
参数。
2、安装
Llama-recipes提供了一个pip发行版,便于在其他项目中安装和使用。
或者,它可以从源代码安装。
注:确保在安装PyTorch轮子时使用正确的CUDA版本(来自nvidia-smi
)。
这里我们使用11.8作为cu118
。 H100 GPU 在 CUDA>12.0时工作得更好
1、使用pip安装
shell
pip install llama-recipes
2、使用可选依赖项安装
Llama-recipes提供可选包的安装。
有三个可选的依赖组。
要运行单元测试,我们可以使用以下方式安装所需的依赖项:
shell
pip install llama-recipes[tests]
对于vLLM示例,我们需要可以安装的附加要求:
shell
pip install llama-recipes[vllm]
要使用敏感主题安全检查器安装:
shell
pip install llama-recipes[auditnlg]
可选依赖项也可以与[option1, option2]结合使用。
3、从源代码安装
要从源代码安装,例如开发使用这些命令。
我们使用hatchling作为我们的构建后端,它需要最新的pip以及setuptools包。
shell
git clone git@github.com:meta-llama/llama-recipes.git
cd llama-recipes
pip install -U pip setuptools
pip install -e .
为了开发和贡献骆驼recipes,请安装所有可选依赖项:
shell
git clone git@github.com:meta-llama/llama-recipes.git
cd llama-recipes
pip install -U pip setuptools
pip install -e .[tests,auditnlg,vllm]
3、得到 Meta Llama 模型
你可以在 Hugging Face 中心这里找到 Meta Llama 模型,其中名称中带有hf
的模型已经转换为 Hugging Face checkpoint ,因此不需要进一步转换。
下面的转换步骤仅适用于托管在 Hugging Face 模型中心上的元模型权重。
模型转换为 Hugging Face
此文件夹中的 recipes 和笔记本使用了 Hugging Face 的变形金刚库提供的 Meta Llama 模型定义。
鉴于原始 checkpoint 位于模型/7B,您可以安装所有要求并将 checkpoint 转换为:
shell
## Install Hugging Face Transformers from source
pip freeze | grep transformers ## verify it is version 4.31.0 or higher
git clone git@github.com:huggingface/transformers.git
cd transformers
pip install protobuf
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
--input_dir /path/to/downloaded/llama/weights --model_size 7B --output_dir /output/path
三、存储库组织
处理Llama用法的大部分代码被组织在两个主文件夹中:recipes/
和src/
。
1、recipes/
包含的示例按主题组织在文件夹中:
子文件夹 | 说明 |
---|---|
快速入门 | 使用Llama的"Hello World",如果您不熟悉使用Llama,请从此处开始。 |
use_cases | 显示Meta Llama3常见应用程序的脚本 |
3p_integrations | 合作伙伴拥有的文件夹显示Meta Llama3的常见应用程序 |
responsible_ai | 使用PurpleLlama保护模型输出的脚本 |
2、src/
包含支持示例recipes的模块:
子文件夹 | 描述 |
---|---|
配置 | 包含PEFT方法、FSDP、数据集、权重和偏差实验跟踪的配置文件。 |
数据集 | 包含要下载和处理的每个数据集的单独脚本。注意 |
推理 | 包括用于微调模型的推理模块。 |
model_checkpointing | 包含FSDP checkpoint 处理程序。 |
策略 | 包含FSDP脚本以提供不同的策略,例如混合精度、变压器包装策略和激活 checkpoint 以及任何精度优化器(用于以纯bf16模式运行FSDP)。 |
实用程序 | 实用程序文件: -train_utils.py 提供训练/eval循环和更多训练实用程序。 -dataset_utils.py 以获取预处理的数据集。 -config_utils.py 覆盖从CLI接收的配置。 -fsdp_utils.py 为PEFT方法提供FSDP包装策略。 -memory_utils.py 上下文管理器以跟踪训练循环中的不同内存统计信息。 |
贡献
请阅读CONTRIBUTING.md,了解我们的行为准则以及向我们提交拉取请求的流程。
伊织 + NMT
2024-07-13(六)