LLAma-Factory框架详细使用方法-0.8.3版本

一、安装 LLaMA Factory

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git #拉取代码到本地

cd LLaMA-Factory #进入目录

conda create -n llamafactory python=3.11 #创建python环境

conda activate llamafactory #进入conda环境

pip install -e ".[torch,metrics]" #下载环境包

可选的额外依赖项:torch、torch-npu、metrics、deepspeed、bitsandbytes、hqq、eetq、gptq、awq、aqlm、vllm、galore、badam、qwen、modelscope、quality

因为我们后续单机多卡会用到deepspeed,所以我们可以提前下载

pip install deepspeed

当我们安装好环境后,可以看一下我们的llama-factory的版本,命令: llamafactory-cli env

二、LLaMA Board

他是一个可视化的web页面,可以手动去配置参数,可进行推理,微调,非常的方便,由gradio驱动。

启动命令:

llamafactory-cli webui

我们也可以在启动之前限制显卡等等数量,启动命令如下:

export CUDA_VISIBLE_DEVICES=1,2,3,4

llamafactory-cli webui

打开链接后的页面展示

每个参数的作用这里我就不具体解释了,网上一搜一大把,如果是新手,我建议去bilibili搜一个LLaMA Board参数讲解视频细心看完!!!

2.1 inference

下面我们来做一个简单的推理测试,我本次的测试模型是qwen2-7b-instruct

1.第一步先点击chat

2.第二部选择你的模型名称

3.粘贴模型路径

2.2 train

首先选择模型和数据还有微调方式

然后选择保存模型的位置
注:如果你的模型比较大,一台显卡无法加载你的模型,你可以选择使用deepspeed单机多卡,DeepSpeed stage选择zero3,如果你一张显卡能够微调,但你有多张显卡的话,这里建议你使用zero2,可以提高接近两倍的训练速度,也就是节省一半的时间

可以看到后台正在训练

前端也可以看到loss在下降,说明模型在正常训练

2.3 train_xinference

当我们训练好模型后,我们可以先测试一下模型的后坏,如果认为模型没问题的话我们再合并模型。

这是我们微调后模型的参数的保存位置

我们进入checkpoint-45,然后复制模型路径,粘贴到检查点路径位置上,然后点击加载模型

2.4 merge_model

我们只需要配置下面箭头指向的几个位置就可以了
注:模型分块不要太大,太大的话会按默认参数,不会按你设置的参数去分块

三、命令形式

3.1 inference

3.1.1 cli-inference

首先进入inference的参数文件配置路径

cd ~/LLaMA-Factory/examples/inference

然后查看llama.yaml文件的内容

然后复制内容,内容如下

model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
template: llama3

再新建一个yaml的文件,把内容换成你的模型路径和template

格式如下
model_name_or_path: 模型路径
template:选择见下图

我还是那Qwen2举例子,下图是我的参数配置

然后运行推理命令

CUDA_VISIBLE_DEVICES=2 llamafactory-cli chat examples/inference/qwen2_7b_instruct.yaml

注:主要执行命令时自己的所在路径!!!!!!

3.1.2 webchat-inference

现在我们来演示一下web推理加载方式

llamafactory-cli webchat examples/inference/qwen2_7b_instruct.yaml

3.2 train

3.2.1 single_train

如果你只要一台显卡,那么就使用单卡训练

首先进入路径,修改单卡训练的文件配置

cd ~/LLaMA-Factory/examples/train_lora

尽量不要在原文件上修改,我们自己创建一个yaml文件,然后按llama3_lora_sft.yaml文件的格式进行修改,这次我们拿glm4-9B-chat举例子

具体参数配置如下,有些参数如果你理解的话也可以自行更改,我这里用的是官方的数据,如果想用自己构建的数据集,需要到data目录下修改dataset_info.json文件

然后启动训练命令

CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_lora/glm4_lora_sft.yaml

下面就开始训练了!

3.2.2 multi_train

如果你的模型参数比较大,一张卡无法加载你的模型参数,那么你就需要使用单机多卡来训练模型,你可选择deepspeed的zero3,如果你的一张显卡能够加载模型参数,你又有多张卡,可以选择zero2,使数据并行,这样可以大大减少训练时间。

加入我现在使用的是qwen2-72b-instruct模型,一张卡无法加载模型参数,这个时候我们必须使用deepspeed的zero3,我们就新建一个yaml文件,参考llama3_lora_sft_ds3.yaml文件内容。

vim glm4_lora_sft_ds3.yaml

然后启动训练命令

export CUDA_VISIBLE_DEVICES=2,3

llamafactory-cli train examples/train_lora/glm4_lora_sft_ds3.yaml

模型开始训练了!

3.3 train_inference

当我们训练好模型参数后,可以先验证一下训练参数的好坏再进行模型合并

进入~/LLaMA-Factory/examples/inference路径下,新建一个yaml文件,参照llama3_lora_sft.yaml修改文件配置

cd ~/LLaMA-Factory/examples/inference

export CUDA_VISIBLE_DEVICES=1,2

llamafactory-cli webchat examples/inference/glm4_lora_sft.yaml

单机url,改成自己的IP就可以打开web页面进行模型测试了

3.4 merge_model

进入~/LLaMA-Factory/examples/merge_lora目录下,参考llama3_lora_sft.yaml文件创建并修改glm4_lora_sft.yaml文件参数,如下图

然后运行合并模型的命令就可以了!!!

llamafactory-cli export examples/merge_lora/glm4_lora_sft.yaml

3.5 api_model

如果想封装model,然后使用模型的接口,可以使用启动 OpenAI 风格的API

llamafactory-cli api examples/inference/glm4_lora_sft.yaml

四、数据格式修改

我们拿两种格式举例,首先我们需要找到dataset_info.json文件的位置,进入~/LLaMA-Factory/data,目录下有个dataset_info.json,我们需要修改他的参数文件。

4.1 Alpaca 格式

如果你的文件是如下图格式

就按官方的例子修改

例子如下:

4.2 Sharegpt 格式

如果你的文件格式如下:

官方的说明如下:

示例:

只需要修改文件名字和文件路径就可以了!

完结!!!

如果后期有什么疑问,欢迎大家评论区留言

相关推荐
江_小_白1 小时前
自动驾驶之激光雷达
人工智能·机器学习·自动驾驶
JunLan~1 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
yusaisai大鱼2 小时前
TensorFlow如何调用GPU?
人工智能·tensorflow
方竞2 小时前
Linux空口抓包方法
linux·空口抓包
LNTON羚通3 小时前
摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
算法·目标检测·音视频·监控·视频监控
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
sun0077003 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
海岛日记3 小时前
centos一键卸载docker脚本
linux·docker·centos
oi774 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器