掘金 人工智能 11小时前
LLaMA Factory:让大模型微调变得更简单
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

LLaMA-Factory是一个统一框架,旨在解决有限资源下高效微调大规模语言模型的问题。它整合了多种前沿高效训练方法,支持100多种大型语言模型的微调,简化了微调流程,并减少了模型和数据集的依赖。用户可以通过该框架灵活定制微调过程,支持LoRA、QLoRA、全参数微调等多种方式。文章详细介绍了LLaMA-Factory的安装、数据准备、模型微调、推理以及导出流程,为研究者和开发者提供了一个易于使用的大模型微调平台。

🛠️LLaMA-Factory是一个统一的微调框架,整合多种高效训练方法,旨在简化和加速大规模语言模型(LLMs)的微调过程,支持超过100种模型。

📚数据准备方面,LLaMA-Factory支持alpaca和sharegpt格式的数据集,用户可以通过修改`dataset_info.json`文件来添加和使用自定义数据集,灵活适应不同的微调需求。

⚙️模型微调过程支持LoRA、QLoRA以及全参数微调等多种方式。以LoRA为例,用户可以通过修改YAML配置文件来调整参数,并通过命令行工具启动微调过程。微调后的适配器参数可以与原始模型合并用于推理。

🚀模型推理通过指定原始模型路径和微调后的适配器路径,使用命令行工具进行。用户还可以将微调后的模型导出,以便后续部署和应用。

引言

    在当今人工智能领域,大型语言模型(LLMs)已经展示了其在推理、问答、机器翻译等多种应用中的出色能力。随着越来越多的开放源代码语言模型的发布,如何在有限资源下高效地进行大规模语言模型的微调成为了研究和开发的关键问题。尤其是当涉及到数以百计的模型时,手动进行微调的复杂性和计算成本变得不可忽视。

    针对这一挑战,LLaMA-Factory应运而生,作为一个统一的框架,它将多种前沿的高效训练方法整合在一起,为用户提供了一个灵活且易于定制的微调平台。LLaMA-Factory不仅支持100多种大型语言模型的微调,而且简化微调流程,减少模型和数据集的依赖,并且支持多种高效的微调技术。

Part1 前期准备

软件依赖(推荐)

python==3.10  torch==2.6.0  transformers==4.50.0  datasets==3.2.0  accelerate==1.2.1peft==0.15.1  trl==0.9.6

下载安装

git clone --depth1 [项目地址](https://github.com/hiyouga/LLaMA-Factory.git)conda create -n llama_factory python=3.10 conda activate llama_factory cd LLaMA-Factorypip install -e '.[torch,metrics]'

Part2 数据准备

在"./data/dataset_info.json"中包含了所有可用的数据集,如果希望使用自己的数据集对模型进行微调,那么需要在"./data/dataset_info.json"文件中添加数据集描述,并通过修改“dataset:数据集名称”配置来使用数据集。目前来说,LLaMA-Factory支持alpaca格式和sharegpt格式的数据集。

以alpaca格式为例,整个数据集是一个json对象的列表,具体数据格式为:

[      {          "instruction": "用户指令(必填)",           "input": "用户输入(选填)",                   "output": "模型回答(必填)",                 "system": "系统提示词(选填)",              "history": [                 ["第一轮指令(选填)", "第一轮回答(选填)"],      ["第二轮指令(选填)", "第二轮回答(选填)"]         ]       }]

对于上述格式的数据,"./data/dataset_info.json"中的数据描述应为:

"数据集名称": {    "file_name": "data.json",    "columns": {         "prompt": "instruction",         "query": "input",         "response": "output",      "system": "system",       "history": "history"        } }

复制该数据集到 data目录下,这样一来,我们用于大模型微调的数据集就已经构造完毕。此外,还可以构造预训练数据集、偏好数据集、多模态数据集等。

Part3 模型微调

LLaMA-Factory支持多种形式的微调,包括LoRA微调、QLoRA微调、全参数微调等。在此以LoRA微调为例进行说明。

首先将下载好的模型放置在"LLaMA-Factory"所在目录中。在"LLaMA-Factory/examples/train_lora/llama3_lora_sft.yaml"文件中,我们可以通过该配置文件修改具体的参数以实现微调。配置完该文件执行下面的命令以进行模型微调:

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml

或者我们也可以通过编写脚本,具体内容示例如下:

其中model_name_or_path是我们预先下载好的模型权重所在的路径,output_dir为经过微调后适配器存放的位置,用于后续与原模型参数合并并进行推理。

Part4 模型推理

现在我们已经对模型进行了LoRA微调并存放了微调后的适配器参数,接下来就可以将该适配器参数与原模型进行合并从而进行模型推理。

用于推理的yaml文件位于"LLaMA-Factory/examples/inference/llama3_lora_sft.yaml"中。示例命令行参数如下:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat \    --model_name_or_path /Meta-Llama-3-8B-Instruct \    --adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  \    --template llama3 \    --finetuning_type lora

其中model_name_or_path即为原始下载的模型路径,adapter_name_or_path即为上一步模型微调中的output_dir。

Part5 模型导出

经过模型微调以及推理后,我们可以将最终微调后的模型进行导出,yaml文件路径如下:"LLaMAFactory/examples/merge_lora/llama3_lora_sft.yaml"

示例命令行参数如下:

CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \    

--model_name_or_path /Meta-Llama-3-8B-Instruct \    

--adapter_name_or_path ./saves/LLaMA3-8B/lora/sft  \    

--template llama3 \    

--finetuning_type lora \    

--export_dir megred-model-path \   

 --export_size 2 \    

--export_device cpu \    

--export_legacy_format False

至此,我们完成了从数据集构建、模型微调、模型推理、模型导出的流程。

参考资料:github.com/hiyouga/LLa…

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LLaMA-Factory 大语言模型 模型微调 LoRA QLoRA
相关文章