论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
人工智能
›
人工智能
›
llama factory LoRA微调qwen大模型 | 新手炼丹纪录(1) ...
llama factory LoRA微调qwen大模型 | 新手炼丹纪录(1)
杀鸡焉用牛刀
论坛元老
|
2024-10-6 20:36:28
|
显示全部楼层
|
阅读模式
楼主
主题
2046
|
帖子
2046
|
积分
6138
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
往期回顾
llama factory LoRA微调qwen大模型 | 新手炼丹纪录(1)-CSDN博客
大模型使用llama.cpp转换gguf格式并量化 | 新手炼丹纪录(2)-CSDN博客
ollama本地部署qwen微调大模型 | 新手炼丹纪录(3)-CSDN博客
之前用本地机器微调qwen大模型,结果由于显存不够或者其他设置问题,总是无法正常训练,莫名其妙报错。只能去实验一些参数很小的模型,qwen2:0.5b、gemma:2b之类的,实在不够看。
今天实验使用了算力平台AutoDL算力云租赁盘算资源来跑微调以及量化,实验了qwen1.5:7b,效果还可以。末了微调、转化、量化完后将得到gguf模型下载到本地ollama部署。
本次炼丹纪录大抵分为三个部门: LoRA微调qwen大模型过程、llama.cpp转换格式并量化以及Ollama部署微调模型。接下来我将分三期具体报告全过程,本次主要纪录使用
llama factory提供的webui,使用lora方法来对qwen1.5:7b模型进行微调。
一、前期准备
1、算力租赁
一样平常家用电脑或者条记本没有足够的显存、内存来进行模型微调,因此我们需要租借第三方提供的算力资源,本次我使用的是AutoDL算力云。
首先我们来确认想要微调的模型需要多少资源才气跑起来,下面是llama factory官方的保举图:
对于我们的7b模型进行LoRA微调大概是需要16GB的显存。
其次我们还需要留意需要依赖的Python环境、库版本,尤其是CUDA的版本,因为我们要使用显卡加速微调速度,如下:
下面根据我们的需求来设置算力资源:
这里我选择了1GPU,24GB左右的显存。如果微调的参数更多可以选择显存更高,GPU数更多的。然后我们来设置基础的Python微调环境:
点击立刻创建,我们就得到了一台高算力盘算机:
2、微调环境搭建
点击JupyterLab进入,打开终端
输入下面指令进行学术资源加速
source /etc/network_turbo
复制代码
再输入命令克隆llama factory项目源码:
git clone https://github.com/hiyouga/LLaMA-Factory.git
复制代码
完成后如下:
由于AutoDL在创建资源实例的时候帮我们预装好了许多需要的第三方库,包罗conda,因此我们只需要直接使用。
新建假造环境,安装其他需要的第三方库,防止污染环境:
conda create -n llama_factory python=3.10
复制代码
中心需要确认的直接无脑输入y确认就行。然后初始化conda(留意:每次新建终端的时候也要重新初始化conda,否则会报conda命令无法找到的错误)
source /root/miniconda3/etc/profile.d/conda.sh
复制代码
激活创建的假造环境
conda activate llama_factory
复制代码
出现以下的提示表示创建、激活乐成:
下面安装依赖的其他第三方库。进入项目地点的目录,输入以下代码安装依赖:
cd LLaMA-Factory
pip install -r requirements.txt
pip install -e .[metrics] #下载llama factory命令
复制代码
再多安装一个modelscope,modelscope也叫魔塔社区(类似huggingface),在这个平台上我们可以找到许多大模型的源码,包罗ollama、qwen和gemma等,也包罗许多训练的数据集,我们下载的是它的python库,可以方便的帮我们下载各种文件:
pip install modelscope -U
复制代码
一切依赖下载完毕以后,我们就可以启动llama factory的前端微调界面了(留意:要在/LLaMA-Factory的项目路径下),否则会找不到llamafactory-cli的指令,如下:
CUDA_VISIBLE_DEVICES=0 llamafactory-cli webui
复制代码
特别留意这里“7860”的端口,后面需要用到。
但是由于项目是启动在长途服务器上的,因此我们想要访问到微调界面还需要设置代理:
返回AutoDL,点击自定义服务
根据本地盘算机环境,下载对应的SSH隧道工具,下载完后直接解压即可,解压后双击执行exe文件:
点击开始代理,从给出的网址访问,我们就可以在本地直接长途操控微调了:
进入到微调页面就是如许的:
到这里前期准备就可以了,下面我们就可以开始微调我们自己的大模型了。
二、微调模型
1、熟悉界面
进入到微调界面我们可以看到许多的参数,但是许多实在我们也用不着不用改,下面我来主要先容一下界面以及一些常用的参数。
模型权重文件设置
训练参数设置
评估参数设置
模型对话设置
导出模型设置
2、下载大模型
这里我们使用前面提到的modelscope第三方库帮助我下载模型文件。新建py文件,定名为download.py,输入以下代码:
from modelscope import snapshot_download
model_path="qwen/Qwen1.5-7B-Chat" #选择想要微调的大模型,这里我选择qwen
cache_path="/root/autodl-tmp" #云平台建议下载到这个目录,是数据盘,可以扩增
snapshot_download(model_path, cache_dir=cache_path)
复制代码
model_path可以更换为huggingface或者modelscope上的模型目录。在终端中运行该文件即可下载:
python download.py
复制代码
下载完成后我们可以在autodl-tmp/qwen/Qwen1___5-7B-Chat文件夹下(绝对路径为/root/autodl-tmp/qwen/Qwen1___5-7B-Chat)找到我们的模型,如下:
3、准备微调数据集
项目中使用到的数据集一样平常都存放在工程下的data文件夹中(绝对路径:/root/LLaMA-Factory/data),如下:
在llama factory中我们对于数据集的格式也是有要求的,我们可以在data文件夹下的README_zh.md中可以看到,分别是alpaca和sharegpt格式,我在这使用的是alpaca的微调数据格式:
我们来细致看一下alpaca数据格式的要求:
在这里我主要使用两个数据集,一个是项目自带的identity.json数据集,另一个是我从modelscope上下载的脑经急转弯数据集。
identity.json数据集如下,我们可以修改此中{{name}}以及{{author}}的值让他可以或许成我们自己的大模型。我对它做如下修改:
另一个脑经急转弯数据集如下,主要是一些问题等,方便我们测试它的微调结果是否学习到了这些问题。点击下载我们可以将数据集下载到我们本地。
点击上传可以将我们下载的数据集传到服务器上,这里我将它定名成了jokes.json。
切记
:当我们自己上传数据集以后要去dataset_info.json文件中注册数据集,要不然再前端页面无法选择该数据集。
我们可以看到这里注册了许多项目提供测试的数据集,此中就包罗了我们的一个数据集identity.json,但是我们的jokes.json还没有注册进去。我们仿照它的格式写入我们的jokes.json,如下:
如今我们就可以在前端页面中选择我们上传的数据集了:
点击Preview dataset可以预览到我们选择的数据集。
4、开始微调
回到我们的前端微调界面,设置参数如下:
留意这里模型的下载路径我设置为了模型的绝对路径,从/root开始。
留意这里我们的epochs设置为了30,一样平常epochs设置在20~50左右。对于参数较少的模型,我们可以设置一个较小的epochs;而对于参数多的模型则需要较大的epochs来让模型充分习得我们的数据集。(留意:对于一个模型设置过多的epochs大概会导致模型过拟合,结果产生的效果并不好。)
点击start开始训练我们就可以等候lora权重文件的生成。
训练中的界面:
训练完后的界面:
根据Output dir我们可以找到训练后的lora权重文件、训练日记以及loss图表等训练过程内容。
在saves文件夹中,保存了我们每一次训练后的结果:
打开train_results.json我们可以看到,我们的train_loss为0.44已经接近0了。
5、模型评估
当我们训练完模型得到lora权重以后,可以对模型权重和lora权重合并进行测试。我们回到前端微调界面,点击“Evaluate&
redict”,选择模型权重,训练得到的lora权重以及数据集,点击start开始评估:
评估竣事后,我们可以看到具体的评分:
当然我们也可以进入到保存的评估文件夹中查察,同样在saves文件夹中可以找到:
6、模型测试
当模型评估完以后我们也可以手动对微调完的模型进行测试,回到前端微调界面,点击“chat”,设置好权重文件后,加载模型,我们就可以测试lora权重合并后的模型效果:
我们输入语句进行测试,可以看到identity.json中的数据已经习得:
再次,我们询问它有关jokes.json中的问题,可以看到回答的也是很精准:
那么就证明我们的微调基本上是乐成了。如果此时你照旧对结果不满意,可以回到第二步重新准备微调数据集,再次微调;如果已经满意那就进入末了一步——模型导出。
7、模型导出
在/autodl-tmp中新建一个exports文件中(绝对路径:/root/autodl-tmp/exports)用于存储我们导出的合并模型:
回到前端微调界面,点击“Export”,设置参数后,点击导出:
乐成导出:
在exports文件夹下我们可以查察导出后的合并模型:
三、竣事
到这里我们就完成了模型的微调,如果还有疑惑可以在下面评论,让各人一起解决,下一篇我们要将模型
使用llama.cpp转化为gguf格式并量化导出到本地
。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
杀鸡焉用牛刀
论坛元老
这个人很懒什么都没写!
楼主热帖
ElasticSearch-高级查询
手把手带你通过API创建一个loT边缘应用 ...
一、kotlin基础语法学习
第4章 复合类型
背八股文的都是什么水平
揭秘 ChunJun:如何实现 e2e&session ...
生产事故-记一次特殊的OOM排查 ...
Apache Hudi 在袋鼠云数据湖平台的设计 ...
开源轻量级工作流WorkflowCore介绍 ...
源码解析 Handler 面试宝典
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Java
快速回复
返回顶部
返回列表