Llama食谱:使用Meta的Llama模型入门示例
“llama-recipes”仓库是Meta Llama模型的配套资源库。我们在此仓库中支持最新版本的Llama 3.1。我们的目标是提供一个可扩展的库,用于微调Meta Llama模型,以及一些示例脚本和笔记本,以便快速入门,在各种使用场景下使用这些模型,包括用于领域适应的微调以及使用Llama和LLM生态系统中的其他工具构建基于LLM的应用程序。这里的示例展示了如何在本地、云端和本地服务器上运行Llama。
[!重要] Meta Llama 3.1具有新的提示模板和特殊标记。
标记 描述 <|begin_of_text|>
指定提示的开始。 <|eot_id|>
该标记表示一个回合的结束,即模型与用户或工具执行器的交互结束。 <|eom_id|>
消息结束。消息表示一个可能的停止点,模型可以在此时通知执行环境需要调用工具。 <|python_tag|>
在模型的响应中使用的特殊标记,用于表示工具调用。 <|finetune_right_pad_id|>
用于在批次中填充文本序列以使其长度相同。 <|start_header_id|>{role}<|end_header_id|>
这些标记包含了特定消息的角色。可能的角色包括:系统、用户、助手和ipython。 <|end_of_text|>
这相当于EOS标记。在多回合对话中通常不使用,预计该标记仅由基础模型生成。
包含工具调用的Meta Llama 3.1多回合对话遵循以下结构:
系统 {{ system_prompt }}用户 {{ user_message_1 }}助手 {{ model_tool_call_1 }}ipython {{ tool_response }}助手 {{model_response_based_on_tool_response}}
每条消息在启动新头部之前都会附加一个``标记,表示角色切换。
更多有关新分词器和提示模板的详细信息请参考这里。
[!注意] llama-recipes仓库最近进行了重构,以改善使用示例的开发者体验。一些文件已移动到新位置。
src/
文件夹未被修改,因此该仓库和包的功能不受影响。请确保通过运行
git pull origin main
更新您的本地克隆。
目录
快速入门
这些说明将帮助您在本地计算机上获得项目的副本并使其运行,以用于开发和测试。有关如何在实时系统上部署该项目的说明,请参阅部署部分。
先决条件
PyTorch Nightlies
如果您希望使用PyTorch Nightlies而不是稳定版本,请转到此指南以获取适合您平台的--extra-index-url URL
参数,以用于pip install
命令。
安装
Llama-recipes提供了一个pip发行包,便于在其他项目中安装和使用。或者,它也可以从源代码安装。
[!注意] 安装PyTorch轮子时,请确保使用正确的CUDA版本(通过
nvidia-smi
查看)。这里我们使用11.8作为cu118
。 H100 GPU在CUDA >12.0的版本下效果更好。
使用pip安装
pip install llama-recipes
带可选依赖项的安装
Llama-recipes提供可选包的安装。有三个可选依赖项组。 要运行单元测试,我们可以通过以下命令安装所需的依赖项:
pip install llama-recipes[tests]
对于vLLM示例,我们需要安装额外的依赖项,可以通过以下命令进行安装:
pip install llama-recipes[vllm]
要使用敏感话题安全检查器,请通过以下命令安装:
pip install llama-recipes[auditnlg]
可选依赖项也可以通过[option1,option2]进行组合安装。
从源代码安装
要从源代码安装,例如用于开发,请使用以下命令。我们使用hatchling作为构建后端,这需要最新版本的pip和setuptools包。
git clone git@github.com:meta-llama/llama-recipes.git
cd llama-recipes
pip install -U pip setuptools
pip install -e .
对于开发和对llama-recipes的贡献,请安装所有可选依赖项:
git clone git@github.com:meta-llama/llama-recipes.git
cd llama-recipes
pip install -U pip setuptools
pip install -e .[tests,auditnlg,vllm]
获取Meta Llama模型
您可以在Hugging Face hub上找到Meta Llama模型这里,其中名称中带有hf
的模型已经转换为Hugging Face检查点,因此不需要进一步转换。以下转换步骤仅适用于Meta在Hugging Face模型hub上托管的原始模型权重。
模型转换为Hugging Face格式
此文件夹中的食谱和笔记本使用了由Hugging Face的transformers库提供的Meta Llama模型定义。
假设原始检查点位于models/7B下,您可以安装所有需求并使用以下命令转换检查点:
## 从源代码安装Hugging Face Transformers
pip freeze | grep transformers ## 确认版本为4.31.0或更高
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/
。
recipes/
包含的示例按主题分类存放在文件夹中:
子文件夹 | 描述 |
---|---|
quickstart | 使用Llama的“Hello World”,如果您是Llama的新手,请从这里开始。 |
use_cases | 显示Meta Llama3常见应用的脚本 |
3p_integrations | 合作伙伴维护的文件夹,显示Meta Llama3的常见应用 |
responsible_ai | 使用PurpleLlama保障模型输出的脚本 |
experimental | Meta Llama实验性LLM技术的实现 |
src/
包含支持示例食谱的模块:
子文件夹 | 描述 |
---|---|
configs | 包含PEFT方法、FSDP、数据集、Weights & Biases实验跟踪的配置文件。 |
datasets | 包含各个数据集的单独脚本,用于下载和处理。 |
inference | 包括用于微调模型推理的模块。 |
model_checkpointing | 包含FSDP检查点处理程序。 |
[policies](src/llama |