Llama3-8B+ LLaMA-Factory 中文微调

ops/2024/12/1 8:57:50/

Llama3-8B+ LLaMA-Factory 中文微调

Llama3是目前开源大模型中最优秀的模型之一,但是原生的Llama3模型训练的中文语料占比非常低,因此在中文的表现方便略微欠佳!

本教程就以Llama3-8B-Instruct开源模型为模型基座,通过开源程序LLaMA-Factory来进行中文的微调,提高Llama3的中文能力!LLaMA-Factory是一个开源的模型训练工具

Llama3-8B-Instruct模型下载地址:

魔搭社区(境内):https://modelscope.cn/models/LLM-Research/Meta-Llama-3-8B-Instruct/files

huggingface(境外):https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct/tree/main

LLaMA-Factory项目地址:https://github.com/hiyouga/LLaMA-Factory

下载模型

中国大陆境内可以通过魔搭社区下载模型,境外可以在huggingface上去下载模型!

从魔搭社区下载

点击“下载模型”

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

复制git链接

git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

在模型存放的文件空白处点击鼠标右键,选择“Git Bash Here”,会打开一个git命令窗口

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

将刚刚复制的模型地址粘贴到git命令窗口,回车,即可进入到下载过程!

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

模型比较大,需要耐心等待模型下载完成!

从Huggingface下载

如果是中国大陆境外的朋友,可以从huggingface进行下载!方法与魔搭社区下载方法类似!

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

如果是第一次从huggingface通过命令下载模型,可以先运行下面的命令安装 git-lfs

git lfs install

然后再复制模型的git链接

git clone https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

在文件夹中的下载步骤与魔搭社区的步骤一样,都是通过git命令窗口来进行下载!

安装LLaMA-Factory

克隆项目到本地

首先访问LLaMA-Factory项目的GitHub主页,点击绿色的“Code”下拉按钮,点击“复制”按钮复制项目链接!

git clone https://github.com/hiyouga/LLaMA-Factory.git

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

在文件夹空白处点击鼠标右键,选择“Git Bash Here”,打开一个git窗口

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

输入刚刚复制的git链接,回车,将项目克隆到本地文件夹

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

新建虚拟环境

进入到刚刚下载的项目文件夹中,在路径栏输入“cmd”,打开一个新的cmd命令窗口

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

在cmd命令窗口输入下面的命令,新建一个虚拟环境

conda create -n llama_factory python=3.10 -y

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

输入如下命令,激活该虚拟环境!

conda activate llama_factory

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

当命令输入行前面是一个括号包括的虚拟环境名称的时候,就表示已经进入到了该新建的虚拟环境中了!

安装项目依赖

继续在虚拟环境中运行下面的命令,安装各种项目依赖!

pip install -e .[metrics,modelscope,qwen]

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

因为安装的有点多,所以还是比较慢的

image-20240423113338896

pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

安装tensorboard

pip install tensorboard

设置环境变量

Set USE MODELSCOPE HUB=1

到这一步,LLaMA-Factory项目的安装就基本上完成了!

运行LLaMA-Factory

输入下面的命令,会自动打开一个web页面

python src/train_web.py

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

下面就是web页面初始的样子

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

我们先可以设置一下,设置成中文,当然也可以不设置

image-20240423131113826

微调Meta-Llama-3-8B-Instruct模型

微调模型

在“Model name”中选择“LLaMA3-8B”,将“Model path”中的路径修改为你本地存放Meta-Llama-3-8B-Instruct文件夹的路径!

image-20240423131545498

切换到“Chat”选项卡,点击“Load model”

image-20240423131608634

刚开始会提示模型正在加载

image-20240423131641356

稍等片刻,系统就会提示“Model loaded,now you can chat with your model!”

此时,当我们用中文询问大模型问题的时候,出现英文回复的几率会比较高!(但不是绝对,毕竟Meta-Llama-3-8B-Instruct模型训练的时候也有部分中文语料)

image-20240423135337491

下面,我们将开始进行模型的微调,将选项卡从“Chat”,切换回“Train”

在“Dataset”中,选择若干个“_zh”结尾的数据集,为了节约显存“Cutoff length”可以修改为“512”,其他参数可以参照如下的截图!

点击“Start”将进入到模型微调的进程中!

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

训练的时间会比较长,像本人的3090 24G显卡,下面显示的时间是14个多小时!

选择了数据集后,我们也可以点击旁边的预览功能,从而预览数据

image-20240423135515793

如果中途像终止退出的话,点击“Abort”

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

导出模型

1.微调训练结束之后,点击“Export”选项卡,切换到导出功能区!

2.点击“Refresh adapters”按钮,刷新lora模型,在左侧的下拉列表中选择刚刚训练好的模型!

3.在“Max shard size(GB)”中设置好每个拆分模型的最大size,案例中我设置为5;

4.在“Export dir”中设置模型保存的路径;

5.点击“Export”按钮,开始导出模型(需要点时间等待);

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程

模型导出完成之后,你就可以在前面指定的路径中看到微调后的新模型了!使用方法与其他模型一样!

Llama3-8B-Instruct + LLaMA-Factory 中文微调 | 本地部署教程


http://www.ppmy.cn/ops/10691.html

相关文章

代码随想录算法训练营day4 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、160.链表相交、142.环形链表II

24. 两两交换链表中的节点 使用哑结点,两个指针交换时多声明几个变量,不容易出错 class Solution:def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:dummy_head ListNode(0, head)cur dummy_headwhile cur.next and cur.nex…

Matplotlib官网查阅资料

Matplotlib官网详细的地址: 英文文档:https://matplotlib.org/stable/contents.html中文文档:https://www.matplotlib.org.cn/ Matplotlib英文官网: 查找属性: 1.进入官网。 2.查找参数属性。 Matplotlib中文官网: 查找属性:…

使用阿里云试用Elasticsearch学习:sentence-transformers 包使用

环境:centos8,windows坑太多。 一、检查linux环境openssl哪个版本(如果是OpenSSL 1.1.1k 直接跳过) [roothecs-334217 python39]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017原因后续会出麻烦,遇到这种情况最…

网络IO模型 select poll epoll的区别

epoll与select、poll的对比 1. 用户态将文件描述符传入内核的方式 select:创建3个文件描述符集并拷贝到内核中,分别监听读、写、异常动作。这里受到单个进程可以打开的fd数量限制,默认是1024。 poll:将传入的struct pollfd结构…

48-PCIE转串口和并口电路设计

视频链接 PCIE转串口和并口电路设计01_哔哩哔哩_bilibili PCIe转串口和并口电路设计 1、PCIe转串并口电路设计基本介绍 2、PCIe转串口和并口的方案(京东) 2.1、PCIe转串口 2.1.1、ASIX (亚信)MCS9922-PCIe转2路RS232扩展卡 2.1.2、ASIX (亚信)MCS9900-PCIe转4路RS232扩展卡…

论文阅读:BEVBert: Multimodal Map Pre-training for Language-guided Navigation

BEVBert:语言引导导航的多模态地图预训练 摘要 现存的问题:目前大多数现有的预训练方法都采用离散的全景图来学习视觉-文本关联。这要求模型隐式关联全景图中不完整、重复的观察结果,这可能会损害智能体的空间理解。 本文解决方案&#xf…

web前端练习三

一.随机点名程序 1.点击点名按钮&#xff0c;名字界面随机显示&#xff0c;按钮文字由点名变为停止 2.再次点击点名按钮&#xff0c;显示当前被点名学生姓名&#xff0c;按钮文字由停止变为点名 <!DOCTYPE html> <html lang"en"> <head><meta…

大数据——Zookeeper 安装(集群)(二)

Zookeeper 补充 CountDownLatch&#xff1a;闭锁。会对线程进行计数&#xff0c;在计数归零之前&#xff0c;之前的线程会被阻塞&#xff1b;当计数归零之后&#xff0c;被阻塞的线程就会自动放开继续执行CyclicBarrier&#xff1a;栅栏。会对线程进行计数&#xff0c;在计数…