在这篇文章中,我们将了解如何使用 Llama Index 微调 Llama3。更棒的是,你只需几个简单的步骤和几行代码就可以实现这一点。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在低成本云 GPU 上构建和扩展 AI 模型。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">目录1.什么是模型微调?
2.为什么使用 LLama-Factory?
3.LLAMABOARD:LLAMAFACTORY 的统一界面
4.在 Paperspace 上微调 Llama 3
5.结论
6.参考文献
引入 Llama Factory,这是一款能够高效且经济地微调 100 多个模型的工具。Llama Factory 简化了模型微调的过程,使其变得易于访问和用户友好。它还提供了 Hiyouga 的 Hugging Face Space,可以用来微调模型。
LLama Board(Huggingface Space)
这个空间还支持 Lora 和 GaLore 配置以减少 GPU 使用。通过一个简单的滑动条,用户可以轻松更改诸如 drop-out、epoch、批量大小等参数。有多种数据集选项可供选择来微调你的模型。如本文所述,Llama Factory 支持众多模型,包括不同版本的 Llama、Mistral 和 Falcon。它还支持先进的算法如 galore、badm 和 Lora,提供了各种功能如闪存注意力、位置编码和缩放。
此外,你可以集成监控工具如 TensorBoard、VanDB 和 MLflow。为了更快的推理,你可以利用 Gradio 和 CLI。总之,Llama Factory 提供了一套多样化的选项来提升模型性能并简化微调过程。
LLAMABOARD 是一个用户友好的工具,帮助人们无需编程知识就能调整和改进语言模型(LLM)的性能。它像一个仪表板一样,可以轻松自定义语言模型的学习和信息处理方式。
以下是一些关键特性:
1.简单定制:你可以在网页上调整设置来改变模型的学习方式。默认设置适用于大多数情况。而且,你还可以在开始之前查看数据在模型中的表现。
2.进度监控:在模型学习过程中,你可以看到更新和图表,这些图表显示了模型的表现。这将帮助你了解模型是否在改进。
3.灵活测试:你可以通过与已知答案对比或直接与模型交互来检查模型对文本的理解能力。这可以帮助你看清模型在语言理解方面的提升。
4.多语言支持:LLAMABOARD 支持英文、俄文和中文,这使得它对不同语言的用户都很有用。未来还可以增加更多语言的支持。
让我们登录平台,选择你喜欢的 GPU,并启动笔记本。你也可以点击文章中的链接来帮助你启动笔记本。
1.我们将先克隆代码库并安装所需库,
!gitclonehttps://github.com/hiyouga/LLaMA-Factory.git
%cdLLaMA-Factory
%ls1.接下来,我们将安装 unsloth,它可以帮助我们有效地微调模型。另外,我们还将安装 xformers 和 bitsandbytes。
#安装所需软件包
!pipinstall"unsloth[colab-new]@git+https://github.com/unslothai/unsloth.git"
!pipinstall--no-depsxformers==0.0.25
!pipinstall.[bitsandbytes]
!pipinstall'urllib3<2'1.安装完成后,我们将检查 GPU 规格,
!nvidia-smi
1.接下来,我们将导入 torch 并检查 CUDA,因为我们使用的是 GPU,
importtorch
try:
asserttorch.cuda.is_available()isTrue
exceptAssertionError:
print("YourGPUisnotsetup!")1.现在我们将导入克隆到 GitHub 代码库中的数据集。我们也可以创建自定义数据集并使用它。
importjson
%cd/notebooks/LLaMA-Factory
MODEL_NAME="Llama-3"
withopen("/notebooks/LLaMA-Factory/data/identity.json","r",encoding="utf-8")asf:
dataset=json.load(f)
forsampleindataset:
sample["output"]=sample["output"].replace("MODEL_NAME",MODEL_NAME).replace("AUTHOR","LLaMAFactory")
withopen("/notebooks/LLaMA-Factory/data/identity.json","w",encoding="utf-8")asf:
json.dump(dataset,f,indent=2,ensure_ascii=False)1.完成上述步骤后,执行以下代码生成 Llama Factory 的 Gradio web 应用链接。
#生成web应用链接
%cd/notebooks/LLaMA-Factory
!GRADIO_SHARE=1llamafactory-cliwebui你可以点击生成的链接并按照提示操作,或者使用你自己的参数规格。
1.模型选择:
•你可以选择任何模型;此处我们选择 8 亿参数的 Llama 3。
2.适配器配置:
•你可以指定适配器路径。
•可用的适配器包括 LoRa、QLoRa、freeze 或 full。
•如果需要,你可以刷新适配器列表。
3.训练选项:
•你可以通过监督微调进行模型训练。
•或者,你可以选择使用 DPU(数据处理单元)或 PPU(并行处理单元)(如果适用)。
4.数据集选择:
•已选择的数据集用于监督微调(SFT)。
•你也可以选择自己的数据集。
5.超参数配置:
•你可以调整超参数,比如训练轮数、最大梯度范数和最大样本大小。
6.Laura 配置:
•可用的详细配置选项可用于 LoRa 模型。
7.开始训练:
•设置完所有配置后,你可以点击“开始”按钮启动训练过程。
这将开始训练。
我们也将使用 CLI 命令开始训练和微调。你可以使用下面的代码来指定参数。
args=dict(
stage="sft",#指定训练阶段。这里设置为“sft”以进行监督微调
do_train=True,
model_name_or_path="unsloth/llama-3-8b-Instruct-bnb-4bit",#使用bnb-4bit-quantizedLlama-3-8B-Instruct模型
dataset="identity,alpaca_gpt4_en",#使用alpaca和identity数据集
template="llama3",#使用llama3模板
finetuning_type="lora",#使用LoRA适配器,以节省内存
lora_target="all",#将LoRA适配器附加到所有线性层
output_dir="llama3_lora",#保存LoRA适配器的路径
per_device_train_batch_size=2,#指定批量大小
gradient_accumulation_steps=4,#梯度累积步数
lr_scheduler_type="cosine",#使用余弦学习率调度器
logging_steps=10,#每10步记录一次
warmup_ratio=0.1,#使用预热调度器
save_steps=1000,#每1000步保存一次检查点
learning_rate=5e-5,#学习率
num_train_epochs=3.0,#训练轮数
max_samples=500,#每个数据集使用500个示例
max_grad_norm=1.0,#最大梯度范数剪裁值
quantization_bit=4,#使用4位QLoRA量化
loraplus_lr_ratio=16.0,#使用lambda=16.0的LoRA+
use_unsloth=True,#使用UnslothAI的LoRA优化以加速2倍训练速度
fp16=True,#使用float16混合精度训练
)
json.dump(args,open("train_llama3.json","w",encoding="utf-8"),indent=2)接下来,打开终端并运行以下命令
!llamafactory-clitraintrain_llama3.json
这将启动训练过程。
1.模型训练完成后,我们可以使用该模型进行推理。让我们尝试这样做,并检查模型的工作情况。
args=dict(
model_name_or_path="unsloth/llama-3-8b-Instruct-bnb-4bit",#指定用于推理的预训练模型的名称或路径。在本例中,设置为"unsloth/llama-3-8b-Instruct-bnb-4bit"。
#adapter_name_or_path="llama3_lora",#加载保存的LoRA适配器
finetuning_type="lora",#指定微调类型。这里设置为"lora"以使用LoRA适配器。
template="llama3",#指定用于推理的对话模板。这次设置为"llama3"。
quantization_bit=4,#指定量化位数。这次设置为4。
use_unsloth=True,#使用UnslothAI的LoRA优化,实现2倍生成速度
)
json.dump(args,open("infer_llama3.json","w",encoding="utf-8"),indent=2)
在这里,我们定义了带有已保存适配器的模型,选择了聊天模板,并指定了用户-助手的交互过程。 接下来,在终端中运行以下代码,
!llamafactory-clichatinfer_llama3.json
我们建议用户尝试 Llama-Factory,进行各种模型实验和参数调整。
有效的微调已经成为大语言模型(LLMs)适应特定任务的必要条件之一。然而,这需要一定的努力,有时还相当具有挑战性。LLama-Factory 的引入提供了一个综合框架,该框架整合了先进的高效训练技术,用户无需编码即可轻松自定义超过 100 种 LLMs 的微调。 许多人现在对大语言模型(LLMs)变得更好奇,他们会倾向于使用 LLama-Factory 来调整自己的模型。这有助于开源社区的成长和活跃。LLama-Factory 正逐渐出名,甚至在 Awesome Transformers3 中被强调为高效微调 LLMs 的领先工具。 我们希望这篇文章能鼓励更多开发者使用此框架构建对社会有益的 LLMs。请记住,在使用 LLama-Factory 微调 LLMs 时,遵守模型许可证的规定非常重要,以防止潜在的滥用。 到这里,我们结束了这篇文章,我们看到了现在微调任何模型是多么容易,可以在几分钟内完成。我们还可以使用 hugging face CLI 将此模型推送到 hugging face hub。 为您的机器学习工作流程增添速度和简便性,今天就开始吧
•LLAMAFACTORY: Unified Efficient Fine-Tuning of 100+ Language Models
•GithubLLaMA-Factory
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |