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(六)

相关推荐
打工仔折腾 AI20 小时前
LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张
人工智能·后端·python·深度学习·langchain·llama
倔强的石头1061 天前
LLaMA系列架构详解_Meta开源大模型的技术演进
开源·大模型·llama
Web3&Basketball2 天前
用 SGLang 决策端点做毫秒级 Agent 路由
python·大模型·agent·强化学习·多模态·推理
梅雅达编程笔记6 天前
开源模型的安全悖论——越开放,越危险?
llama·qwen·开源大模型·ai安全·模型越狱·权重投毒·大模型治理
白萝卜弟弟7 天前
【大模型Qwen3.8 27B】llama.cpp 本地大模型部署与使用
ai·大模型·agent·llama·qwen3.8
仙人掌_lz7 天前
3090 上的部署两种基于Qwen3.5-4B 判别模型open jev:llama.cpp和 vLLM ,谁更快、谁更准
人工智能·llm·llama·vllm·判别模型·jev
代数狂人7 天前
异构双卡大模型部署指南:18GB显存突破单卡瓶颈 llama.cpp 层并行部署
llama
写bug如流水7 天前
【LLM】Qwen3.5 35B A3B 单卡 RTX 3090 部署教程
人工智能·llama
程序猿编码8 天前
C++/CUDA 手写 LLM 推理引擎:拆解 vLLM 核心 PagedAttention 与连续批处理
开发语言·c++·深度学习·神经网络·推理·vllm
promanz8 天前
llamap.cpp 和 llama-index连接
人工智能·llama