大家好,本视频将会讲解RWKV-Runner的LoRA微调使用方法
RWKV-Runner中的微调功能基于项目RWKV-LM-LoRA,这是它的github链接: https://github.com/Blealtan/RWKV-LM-LoRA
RWKV-Runner训练功能所做的事情只是为此项目封装了一套简单的GUI,并提供了自动的WSL训练环境配置,如果你不想要使用GUI训练,仍然可以使用finetune目录下的脚本进行训练
在windows上使用GUI进行LoRA微调时,你需要先打开RWKV-Runner的训练页面,然后点击训练按钮,如果你是初次使用,那么此时尚未安装好python环境,将会提示你进行python下载和安装,跟随指引,点击下载,在下载完成后,再次点击训练,会继续要求你进行安装依赖
在依赖安装完毕后,你可以从模型页面选择一个你想要微调的基底模型下载,对于中文用户,通常建议使用3B,7B中文增强模型,对于初次训练要确认环境可用,则建议先使用开销较低的0.1B模型,如果下载速度为0,你可以点击打开网页按钮,手动下载,并放置在models目录,目前推荐使用World系列模型进行微调,如果你希望使用Raven系列模型,需要自行前往RWKV官方的huggingface页面,下载rwkv-4-pile基底模型,并将词表路径改为backend-python/rwkv_pip/20B_tokenizer.json,使用World模型则直接使用默认值即可
下载完模型后,在训练参数一栏,选择你要使用的基底模型,然后点击训练,初次执行时,会提示你数据需要转换,点击上方的转换按钮,将训练数据转换为更适合训练的格式
此时再次点击训练,将会尝试开启windows WSL功能,激活Linux环境,此操作会要求管理员权限,你需要点击确认,在弹出的窗口完成激活后,会建议你重启电脑,如果你先前已经开启过WSL功能,则可以不进行重启
接着,会自动查询是否安装了Ubuntu系统,如果没有找到该系统,将会提示你进行安装,对于一般使用windows家庭版或专业版的用户,点击安装后,Microsoft Store将会自动打开并跳转至Ubuntu安装界面
使用商店安装前,建议你先在命令行执行一次wsl --update进行更新,并执行wsl --set-default-version 2将默认版本设为2,然后点击商店的安装按钮,安装完毕后,再点击打开,让其执行初始化配置
如果你使用的是服务器版Windows系统,通常该系统没有商店组件,请使用命令行自行安装Ubuntu系统
之后,继续点击训练按钮,现在将会为Linux配置训练环境,软件界面将会出现一系列命令文本,并下载多个组件,此阶段请保证你的网络畅通,环境配置只需要执行一次
在环境配置完毕后,将自动开始训练,当你见到这个图形化Loss曲线时,意味着训练已正式开始,根据你设置的保存间隔轮次,在LoRA模型一栏,将会出现多个训练完成的LoRA权重,你可以选择一个权重,并点击合并模型,将会生成一个直接可用的完整模型,并可在配置页面选择,正常启动
如果你希望从某个LoRA权重继续训练,也可以在LoRA模型一栏选择,并点击训练,如果你希望从头开始进行LoRA微调,则这里选择“空”
关于训练数据,你可以点击这里的帮助按钮,目前支持两种格式
一种是在这里填写一个文件夹路径,文件夹内的所有txt文件,在你点击转换按钮后,会自动处理成训练数据,txt文件的内容,根据你的应用场景而定,你可以在续写页面查看这里的各类预设,这些文本直接保存为txt,就可以用作对应的训练数据。例如一整本小说,保存为txt,用作训练数据;又或者这样的对话形式,用作训练数据,训练聊天模型;也可以是代码,指令,或者特定的翻译格式,由你自己决定。总之,训练数据是什么样的,使用的时候就用一样的方式使用
另一种训练数据是直接填写jsonl格式文件的路径,点击转换,然后开始训练,你可以点击这里查看jsonl格式文件示例,自己将数据处理成这种格式
接下来是这里的一些训练参数介绍,除去之前已经提到的,这里还有的常用参数包括以下内容,以下没有提到的则不建议用户修改:
显卡数量:你有几张Nvidia显卡,就填几
精度:通常推荐bf16,这也是RWKV官方训练所用的精度
上下文长度:训练的模型所能够进行对话/续写的上下文长度,注意目前不建议太长,如果你的数据量足够长,那么可以适当增加,但不建议超过4096 (需要更长上下文长度,甚至无限长度的,后面会提到另一个训练项目)
训练步数:一轮训练的步数,Loss曲线中,一个节点就是一轮,更小的步数会有更细粒度的Loss节点和权重
训练轮次:一共训练多少轮后停止
保存间隔轮次:每训练多少轮存一个LoRA权重
学习率:懂的都懂,一般没必要改,改的话不要大于1e-4
LoRA R:可训练的参数量,如果你正在使用一个较大的模型,或/且有较多的训练数据,那么可以适当增加LoRA R,例如增加到16,32
微批次大小:懂的都懂,如果你训练时,显存有富裕,且数据较多,可以适当增大此项,例如设为2,4,8
如果训练过程中提示你内存不足,请注意,你可能需要自己配置.wslconfig文件,分配更多的内存空间
训练停止后,如果内存空间没有释放,可以使用wsl --shutdown终止wsl,强制释放
最后是另一个RWKV无限上下文训练的项目,如果你有更高的训练/微调需求,可以使用此项目:https://github.com/RWKV/RWKV-infctx-trainer
你也可以在这个网址查看一些相关说明:https://github.com/SynthiaDL/TrainChatGalRWKV
由于这个项目有比较详细的介绍,这里就不多赘述了,此外RWKV-Runner已经自动进行了环境部署,你可以很轻松地通过命令行在WSL跑起这个项目