首页 > 其他分享 >llama factory LoRA微调qwen大模型 | 新手炼丹记录(1)

llama factory LoRA微调qwen大模型 | 新手炼丹记录(1)

时间:2024-09-05 16:52:56浏览次数:5  
标签:模型 微调 factory qwen llama 可以 我们 下载

        之前用本地机器微调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&Predict”,选择模型权重,训练得到的lora权重以及数据集,点击start开始评估:

评估结束后,我们可以看到详细的评分:

当然我们也可以进入到保存的评估文件夹中查看,同样在saves文件夹中可以找到:

6、模型测试

当模型评估完以后我们也可以手动对微调完的模型进行测试,回到前端微调界面,点击“chat”,配置好权重文件后,加载模型,我们就可以测试lora权重合并后的模型效果:

我们输入语句进行测试,可以看到identity.json中的数据已经习得:

再次,我们询问它有关jokes.json中的问题,可以看到回答的也是很精准:

那么就证明我们的微调基本上是成功了。如果此时你还是对结果不满意,可以回到第二步重新准备微调数据集,再次微调;如果已经满意那就进入最后一步——模型导出。

7、模型导出

在/autodl-tmp中新建一个exports文件中(绝对路径:/root/autodl-tmp/exports)用于存储我们导出的合并模型:

回到前端微调界面,点击“Export”,设置参数后,点击导出:

成功导出:

在exports文件夹下我们可以查看导出后的合并模型:

三、结束

到这里我们就完成了模型的微调,如果还有疑惑可以在下面评论,让大家一起解决,下一篇我们要将模型使用llama.cpp转化为gguf格式并量化导出到本地

标签:模型,微调,factory,qwen,llama,可以,我们,下载
From: https://blog.csdn.net/m0_73365120/article/details/141872756

相关文章

  • linux 部署Ollama本地大模型
    简介llama是一个大模型的管理框架,其作用类似于Docker:如果将每一个标准化的大模型视为“镜像”,那么Ollama就能够通过一行命令快速拉取并运行这些大模型。然而,Ollama本身是基于命令行的服务,所以为了方便我们对大模型进行微调和使用,还需要引入maxkb。maxkb提供了一个......
  • 初始化BeanFactory专项:obtainFreshBeanFactory16
    一、IOC容器的刷新环节快速回顾publicabstractclassAbstractApplicationContextimplementsApplicationContext{@Overridepublicvoidrefresh()throwsBeansException,IllegalStateException{synchronized(this.startupShutdownMonitor){......
  • 本地ollama的LLM模型运行微软GraphRAG
    pipinstallgraphragpipinstallollama1、ollama安装直接从modelscope下载ollama安装包modelscopedownload--model=modelscope/ollama-linux--local_dir./ollama-linux#运行ollama安装脚本sudochmod777./ollama-linux/ollama-modelscope-install.shsh./ollam......
  • 魔乐社区体验:探索Llama 3.1模型微调之旅
    在2024年的AI领域,Meta发布的Llama3.1模型无疑成为了研究者和开发者的新宠。我有幸通过魔乐社区提供的资源,对这一模型进行了深入的学习和实践。在这个过程中,魔乐社区的资源和支持给我留下了深刻的印象。环境准备的便捷性魔乐社区提供的实践指导非常详尽,从安装AscendCANNToolkit和......
  • 魔乐社区体验:探索Llama 3.1模型微调之旅
    在2024年的AI领域,Meta发布的Llama3.1模型无疑成为了研究者和开发者的新宠。我有幸通过魔乐社区提供的资源,对这一模型进行了深入的学习和实践。在这个过程中,魔乐社区的资源和支持给我留下了深刻的印象。环境准备的便捷性魔乐社区提供的实践指导非常详尽,从安装AscendCANNToolki......
  • LLaMA-Factory
    LLaMA-Factory是一个高效的大型语言模型(LLM)微调平台,旨在简化和加速模型的微调过程。以下是一些关键特点:多样的模型支持:LLaMA-Factory支持多种预训练模型,包括LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi等等12。多种训练方法:平台集......
  • 基于Mindformers+mindspore框架在升腾910上进行qwen-7b-chat的lora微调
    基于Mindformers+mindspore框架在昇腾910上进行qwen-7b-chat的8卡lora微调主要参考文档:https://gitee.com/mindspore/mindformers/tree/r1.0/research/qwenSTEP1:环境准备我使用mindformers官方提供的docker镜像进行微调,下载指令:dockerpullswr.cn-central-221.ovaijisuan.......
  • Meta Llama模型下载量突破3.5亿次
    ......
  • 阿里重磅开源Qwen2-VL:超越人类的视觉理解能力,从医学影像到手写识别,这款开源多模态大模
    阿里重磅开源Qwen2-VL:超越人类的视觉理解能力,从医学影像到手写识别,这款开源多模态大模型究竟有多强?(附本地化部署教程)模型介绍最近呢,阿里巴巴开源了Qwen2-VL,在多模态大模型展现了在实际应用中的巨大潜力,尤其是在处理跨模态数据方面表现出众。以下是该模型的几大应用亮点:智......
  • BeanFactory和FactoryBean
    BeanFactory和FactoryBean先说结论:BeanFactory和FactoryBean都是接口。BeanFactory:是IOC容器,并且提供方法支持外部程序对这些Bean的访问,在程序启动时根据传入的参数产生各种类型的Bean,并添加到IOC容器(实现BeanFactory接口的类)的SingletonObject属性中。FactoryBean:首先是个Bea......