llama-recipes

文章目录


一、关于 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(六)

相关推荐
wx74085132618 小时前
小琳AI课堂:LLaMA 3.1 开源大模型的全新里程碑
人工智能·llama
YueTann18 小时前
大模型入门3:理解LLAMA
android·llama
William.csj18 小时前
大模型——LLaVA和LLaMA的介绍和区别
llama·llava
Elastic 中国社区官方博客18 小时前
使用 Elastic 和 LM Studio 的 Herding Llama 3.1
大数据·人工智能·elasticsearch·搜索引擎·ai·语言模型·llama
再不会python就不礼貌了19 小时前
一步步教你利用大模型开发个性化AI应用,告别‘人工智障’!
人工智能·学习·算法·oracle·llama
磐石区1 天前
游戏、网关等服务借助Docker容器化并使用Kubernetes部署、更新等
docker·kubernetes·部署·efk·更新
心心喵1 天前
[linux] 报错 ModuleNotFoundError: No module named ‘llama‘
llama
码狂☆2 天前
源码编译llama.cpp 、ggml 后端启用自定义BLAS加速
人工智能·llama
Zilliz Planet2 天前
使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用
llama·milvus
人工智能MOS2 天前
Qwen1.5模型文本分类微调实战教程
人工智能·计算机视觉·数据挖掘·大模型·llm·微调·llama