LlamaFactory是一个开源框架,支持多种流行的语言模型,及多种微调技术,同时,以友好的交互式界面,简化了大语言模型的学习。
本章内容,从如何拉取,我已经搭建好的Llamafactory镜像开始,以及构建webui界面,在到加载模型推理、私有化模型的训练及其验证,最后模型的导出。全程都有截图流程,一站式服务,无需你懂代码,无需你拥有高大上的AI基础知识,任何小白都可尝试训练属于自己的私有模型,并部署在自己的服务器上。
一、拉取镜像
大家可点击下方链接,使用Autodl算力云平台
AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLhttps://www.autodl.com/home
注册登录充值后,在算力市场上,就可以选择租赁的机器了。
提供多种计费方式,注意下方的显卡数量,初次尝试,选择单卡即可.大家按需选择。
机器确定后,选择社区镜像,然后搜索 Llamafactory-webui ,就会出现下方镜像,注意辨别账号名称为 HuiFei-AI。
我的镜像,大约15个G,初次拉取镜像会有点慢,不过还好并不计费,他会在拉取镜像成功之后,自动开机。大家完全可以去干别的事,成功后会以短信的形式通知你。
给大家展示下,我这次选择的机器,为了测试多卡训练,我这里选择了2个 32GB vGPU。另外,大语言模型一般都不会小,所以这里我就付费扩容了数据盘的大小。
大家首次拉取镜像时,如果选择的GPU配置太低,带不起来训练的,又或者磁盘太小,不够下载模型的。别慌,进入容器实例中,找到你现在运行的机器,点击查看详情,可以升降配置,以及扩充磁盘。但必须得在关机状态下修改,在重新开机就行。
二、构建webui界面
开机后,如何链接到租赁的服务器呢?有多种方式...
1、使用平台提供的JupyterLab。容器实例中,快捷工具,如下图中右上角
2、Xshell,Xftp工具,一般配套使用。使用平台提供的登录指令及其密码。不知道如何使用这两个工具的,可自行百度。
我选择搭配使用,平台快捷工具,使用终端,xftp用来拷贝文件
打开JupyterLab后,直接选择终端,进入服务器的命令行窗口
终端下,按下面两条指令依次键入即可
cd LLaMA-Factory
llamafactory-cli webui
上述指令执行后,终端会出现如下字样,生成可访问的链接。
租赁的服务器不具备打开web界面的能力,所以需要做端口暴漏至本机,这里也有两种方式:
1、使用平台上的快捷工具,点击自定义服务
他会让你下载一个压缩包到本机,按照图中步骤去做,没啥难度。
2、第二种方式,我比较常用,使用ngrok工具。官网链接如下
Setup - ngrokhttps://dashboard.ngrok.com/get-started/setup/linux这里需要用到 Authtoken,所以需要你注册和登录ngork账号,获取属于你自己的认证密钥。
在服务器的终端上(一台服务器上可同时打开多个终端),键入以下指令,安装ngrok工具。
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
| sudo tee /etc/apt/sources.list.d/ngrok.list \
&& sudo apt update \
&& sudo apt install ngrok
安装后,终端键入如下指令 ,确认安装是否成功,以及版本。
ngrok version
接下来就是配置你的认证密钥,服务器终端下,键入如下指令,记得切换你的认证密钥。
ngrok authtoken <你的auth token>
配置好以后,执行端口暴漏命令,llamafactory默认使用的端口号为7860。
ngrok http 7860
暴漏成功后,会生成一个链接,点击链接,即可在本机上,打开llamafactory的webui界面了 。
此时,就正式开启了我们的训练大语言模型的奇妙之旅了。
三、下载模型
Llamafactory默认会根据你选择的模型名称,从huggingface中现下载模型,这个过程需要外网,所以一般会下载失败,不建议这种方式。
这里推荐使用 modelscope,内网就可直接下载,官网链接如下。
ModelScope魔搭社区https://community.modelscope.cn/
进入官网后,大家可直接从模型库,搜索你想要的模型。市面上流行的模型,这里一般都有。
找到你要的模型后,这里假设准备使用deepseek-1.5b的模型,点进该模型后,找到模型文件。
右侧会有个下载模型按钮,点击
modelscope 支持多种下载方式,我这里选择的是SDK下载方式。
服务器终端,键入python,进入交互式编程界面
粘贴我下方的命令,会指定下载路径,官网给的代码默认会将模型下载到系统盘,模型太大,会爆的,建议大家将模型都下到数据盘中(autodl-tmp),数据盘可随便扩容,也可在克隆实例时,连同数据盘一起克隆,避免在不同机器上重复下载,非常方便。
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B',cache_dir='/root/autodl-tmp')
接下来就是等待时间了,建议大家早上(8点之前)或者夜晚下载,速度很快。大白天下载,速度慢到怀疑人生。
四、加载模型推理
模型下载好以后,大家可在webui界面,加载本地模型进行推理聊天了,如下图所示:
模型路径 ->填写你下载到服务器上的模型位置
选择 chat 模式,然后点击加载模型
模型加载成功后的界面如下,右侧是推理时的超参调节。
切记:模型不用时,记得先卸载模型。因为模型是要加载到内存中的,而模型本身又很大,占用相当大的内存空间。
五、加载数据集
接下来就是调用我们自己的私有数据,微调基础模型,首先就是如何加载数据集:
llamafactory指定了数据路径,图中data,大家不用修改
数据集下拉选项,有一些 llamafactory 自带的数据集
比如 alpaca_zh_demo 这个中文数据集,选中后,可预览
那大家如何加载到自己的数据集呢 ?请看Llama-factory目录下的data目录,下图是我在本地机器上打开的,大家可在平台快捷工具,或者xftp中查看。
这里就有我们刚选中的 alpaca_zh_demo 数据集,是一个 json 文件。
大家可以将自己的数据集文件放到该目录下
这里有个注意事项:llamafactory 并不会自动检索data目录下的文件,而是通过一个配置文件,叫dataset_info,也是一个json格式的:
定义key为 “alpaca_zh_demo”,即webui界面,下拉选项中的数据集名称
value为{ "file_name": "alpaca_zh_demo.json"},记录的是数据集在data目录下的真实文件名
六、微调模型
选择 Trian 模式,即训练模式
基础模型还是选择本地路径,数据集选择自带的 alpaca_zh_demo 数据集。剩下的就是微调方式选择,以及超参数的设置,这里不过多讲解,整体都放到第八章,参数详解中说。
如果大家选择的显卡配置较低,建议 批处理大小为1,截断长度 1024,这些都会降低对机器的要求,保证能训练起来。
模型、数据集、参数都配置好后,点击下方的预览命令,会出现一串指令,是llamafactory 训练的指令集,其中,一些参数就是根据我们上面配置而生成的。
这串指令,可以键入到终端下,执行训练,也可以点击 webui 界面上的 开始按钮。
保存训练参数,保存至服务器中,路径自动生成。
载入训练参数,保证模型训练被中断后,可从断点开始训练,而不用重新开启训练。
保存检查点,是模型训练完以后,保存的重要文件,根据时间自动生成文件名。整体路径,会根据上方模型名,以及微调方式,自动生成,具体可看预览命令中的 output_dir。为了方便管理训练后的模型,建议大家除了从本地导入模型路径,还应将模型名称修改为对应名称,这样训练后保存的检查点,大家也知道是基于那个基础模型训练的。
开始训练后,webui 上会出现损失曲线,也会在下方打出日志。
当然,在终端也能查看训练进度,如下图所示。
超参中,有个设备数量,这个不需要自己填写,程序会自动识别你当前用的GPU数量。
DeepSpeed stage 是一种加速器,后续参数详解会说,感兴趣的可以直接跳转。
我用的是2卡,直接训练后,终端查看英伟达显卡的使用情况。
nvidia-smi
也可以使用平台的快捷工具,实例监控,查看GPU的使用情况。
平台上的实例监控,能展示的信息太少了。
这里推荐一个好用的工具 wandb,首先得在官网注册登录账号,我是直接使用github登录的。然后,获取个人密钥。
服务器新开一个终端窗口,安装以及登录wandb
#安装依赖包
pip install wandb
#登录
wandb login
上述指令执行成功后,终端会让你 填入密钥,复制你的个人密钥,粘贴进去,回车即可。
wandb认证成功后,在启用 webui 的训练功能时,其他参数设置选项中,启用外部记录面板,选择wandb就行。
此时在开启训练时,终端会弹出链接,直接点进去就进入到你的wandb帐号了。
这里记录的训练日志信息,比较全面。
七、模型验证及导出
训练结束后,就可以直接加载训练后的模型,进行推理了。
该工具训练后,只会保存检查点,不是一个完整的模型格式。如果大家直接在该webui上加载模型,采用如下图的方式
- 选中本地模型路径,即训练用的基础模型
- 选中保存后的检查点
加载模型,此时就是我们微调后的模型了。此时,可以用训练数据集中的问题,和模型聊天了。
下图就是我们刚才用到的数据集:
同样的问题,提问训练后的模型。
接下来就是将训练后的模型导出来,刚才说了,训练后只保存检查点,需要搭配原模型文件使用。
- 模型路径,检查点,确定都无语后
- 选中 export 模式
- 模型一般较大,分块是指每一个文件的大小,可将模型分为几块保存
- 选择导出目录,开始导出
这个也可以去终端看导出流程,页面上可能长时间没动静,后台依然在工作。
这是我导出来的模型文件,和基础模型的文件配置是一样的
八、参数详解
稍等,稍后会补充