Ubuntu 微调训练ChatGLM3大语言模型

news2024/9/20 2:46:39

Ubuntu 微调训练ChatGLM3大语言模型

LLaMA Factory 的 LoRA 微调提供了 3.7 倍的加速比,同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术,LLaMA Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。

https://github.com/hiyouga/LLaMA-Factory/tree/main


微调步骤

1.服务器配置

Ubuntu 20.04

8核(vCPU) 32GiB 5Mbps GPU NVIDIA T4 16GB 硬盘 100GiB

CUDA 版本 12.2.2/Driver 版本 535.161.07/CUDNN 版本 8.9.4

查看CUDA版本:nvidia-smi

2.程序和预训练模型文件

程序:

程序保存目录/home/ubuntu/LLaMA-Factory,注意目录权限要可写

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

预训练模型:

chatglm3-6b

sudo apt-get install git-lfs
#git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

数据集格式参考:

https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md

测试数据集:test_identity.json 需要上传到data目录下

dataset_info.json中需要增加数据集配置

 "test_identity": {
    "file_name": "test_identity.json",
    "file_sha1": "b4520c447cf95fa0dd2191b79aac23b3702ad58c"
  }

test_identity.json 数据格式

[
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是 Robert,一个由 天马行空 开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"
  },
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是 Robert,一个由 天马行空 打造的人工智能助手,请问有什么可以帮助您的吗?"
  }
]

3.Python环境

方式一、安装conda,创建虚拟环境

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

创建Python3.10虚拟环境

conda create -n llama_factory python=3.10
conda activate llama_factory

方式二、安装virtualenv,创建虚拟环境(本教程采用这种)

cd /home/ubuntu/LLaMA-Factory
#安装虚拟环境依赖
pip install virtualenv

#*创建虚拟环境
virtualenv venv
#*激活虚拟环境
source venv/bin/activate

#退出虚拟环境
deactivate

4.安装依赖包

进入虚拟环境进行操作

cd /home/ubuntu/LLaMA-Factory
#设置pip源设置为清华大学的镜像,如果已设置就不用设置查看镜像源使用命令pip config get global.index-url
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#如果版本是24.0就不用更新
python -m pip install --upgrade pip

pip install -r requirements.txt

5.运行测试

#进入虚拟环境后执行
CUDA_VISIBLE_DEVICES=0 python src/train_web.py

http://1.14.74.209:7860/

6.训练参数

微调模型:ChatGLM3-6B-Chat

模型路径:/home/ubuntu/THUDM/chatglm3-6b

训练方式:Supervised Fine-Tuning

数据集:test_identity.json

训练轮数:

50 “loss”: 0.805 效果一般

80 “loss”:0.1893 效果还行

100 “loss”:0.0354 效果很好

120 “loss”:0.0216 效果和100轮差不多,所以训练100轮就可以了

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage sft \
    --do_train True \
    --model_name_or_path /home/ubuntu/THUDM/chatglm3-6b \
    --finetuning_type lora \
    --template chatglm3 \
    --dataset_dir data \
    --dataset test_identity \
    --cutoff_len 1024 \
    --learning_rate 5e-05 \
    --num_train_epochs 80.0 \
    --max_samples 100000 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --max_grad_norm 1.0 \
    --logging_steps 5 \
    --save_steps 100 \
    --warmup_steps 0 \
    --optim adamw_torch \
    --report_to none \
    --output_dir saves/ChatGLM3-6B-Chat/lora/train_2024-04-17-17-19-32 \
    --fp16 True \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0.1 \
    --lora_target query_key_value \
    --plot_loss True

7.训练截图

请添加图片描述
请添加图片描述

8.测试模型

训练完成后,刷新选择适配器,切换到Chat,加载模型进行测试操作,下图测试可知大模型已经完成了自我认知的训练。
在这里插入图片描述

9.导出微调后模型

导出路径:/home/ubuntu/THUDM/chatglm3-6b-robert

10.测试导出的模型

在项目ChatGLM3Test2中更改模型地址来体验微调后的效果。
参考:https://blog.csdn.net/luobowangjing/article/details/137821901
在这里插入图片描述

通过以上的微调,已成功训练出了一个新的大语言模型,完全改变了自我认知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1612023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天星金融(原小米金融)履行社会责任,提高社保政策知晓度

二十大报告指出“为民造福是立党为公、执政为民的本质要求“,人民幸福安康是推动高质量发展的最终目的。社会保障作为维护社会公平、增进人民福祉的基本制度,既是“安全网”也是“稳定器”,发挥着改善民生的重要作用。为进一步提升人民群众对…

接雨水 , 给定二维图,能容多少水

42. 接雨水 - 力扣(LeetCode) 看着就是非常常规的题目,所以非常有必要掌握。 最少也把O(n^2)的方法写出来吧。力扣官方题解的三种方法O(n)都挺好,不过可能有点难读,在此…

淘宝购物更智能:taobao.item_search API接口实现关键字精准匹配

随着电子商务的飞速发展,淘宝作为中国最大的网络购物平台之一,为亿万消费者提供了便捷、丰富的购物体验。然而,在海量商品中快速找到符合自己需求的商品,一直是消费者面临的挑战。为了提升购物体验,淘宝开放平台提供了…

渐进式交付实践:通过 Argo Rollouts 和 FSM Gateway 实现金丝雀发布

渐进式交付(Progressive delivery)是一种软件发布策略,旨在更安全、更可控地将新版本软件逐步推出给用户。它是持续交付的进一步提升,允许开发团队在发布新版本时拥有更细粒度的控制,例如可以根据用户反馈、性能指标和…

树莓派3B长时间不操作屏幕息屏无信号处理

树莓派外接显示器,需长时间展示某个网页,经过一段时间,显示器屏幕会黑掉显示无信号。 需修改 /etc/lightdm/lightdm.conf 配置文件中新增如下两行并重启。 xserver-commandX -s 0 dpms sleep-inactive-timeout0

系统架构设计精华知识

数据流风格:适合于分阶段做数据处理,交互性差,包括:批处理序列、管理过滤器。调用/返回风格:一般系统都要用到,包括:主程序/子程序,面向对象,层次结构(分层越…

图像分类:Pytorch实现Vision Transformer(ViT)进行图像分类

图像分类:Pytorch实现Vision Transformer(ViT)进行图像分类 前言相关介绍ViT模型的基本原理:ViT的特点与优势:ViT的缺点:应用与拓展: 项目结构具体步骤准备数据集读取数据集设置并解析相关参数定…

人工智能论文GPT-3(3):2020.5 Language Models are Few-Shot Learners;架构;训练数据集;开源

2.1 模型与架构 我们使用了与GPT-2相同的模型和架构,包括其中描述的改进初始化、预归一化和可逆分词技术,但有所不同的是,我们在Transformer的各层中使用了交替的密集和局部带状稀疏注意力模式,类似于Sparse Transformer 。为了研…

RocketMQ异步消息发送失败重试DEMO

producer.setRetryTimesWhenSendAsyncFailed(3); 都知道通过设置,尝试是在MQClientAPIImpl 中完成 其重试是通过MQClientAPIImpl的onExceptionImpl方法来实现,它会先判断重试次数,然后重新调用sendMessageAsync方法进行重试,调用…

【氧化镓】Ga2O3 MOSFET器件的单SEB机制TCAD研究

本文是一篇关于氧化镓(Ga2O3)金属氧化物半导体场效应晶体管(MOSFET)在单粒子烧毁(single event burnout, SEB)事件中的机制研究的文章。文章通过使用技术计算机辅助设计(TCAD)模拟来探究侧向耗尽型氧化镓MOSFET设备在SEB中的敏感区域和安全操作电压,并提出了辐射损伤…

Linux环境变量深度解析

文章目录 一、引言二、环境变量的基本概念1、环境变量的定义2、环境变量的作用与意义 三、环境变量的导入1、导入所需文件2、登陆时的导入 四、环境变量的设置方法1、查看环境变量的方式2、使用export命令临时设置环境变量3、修改配置文件以永久设置环境变量 五、命令行参数与环…

用户的流失预测分析

项目背景 随着电信行业的持续发展,运营商们开始更加关注如何扩大他们的客户群体。研究表明,获取新客户所需的成本要远高于保留现有客户的成本。因此,在激烈的竞争中,保留现有客户成为了一个巨大的挑战。在电信行业中,…

ADSP-21479的开发详解五(AD1939 C Block-Based Talkthru 48 or 96 kHz)音频直通

硬件准备 ADSP-21479EVB开发板: 产品链接:https://item.taobao.com/item.htm?id555500952801&spma1z10.5-c.w4002-5192690539.11.151441a3Z16RLU AD-HP530ICE仿真器: 产品链接:https://item.taobao.com/item.htm?id38007…

AI大模型日报#0420:开源模型击败GPT-4、西湖大学蛋白质通用大模型、GPT的七条经验

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 开源模型打败GPT-4!LLM竞技场最新战报,Cohere Command R上线 摘要: GPT-4在LLM竞技场被开源模型Cohere的…

算法课程笔记——集合set

3复杂度不稳定 删一个和删除全部 注意iter是类 遍历是无序的

AI时代,操作系统交互的革命性变革

AI时代对操作系统交互的影响 对于2024年的智能手机厂商们来说,在冲击高端市场的路上有一场绝对输不起的硬仗,那就是AI大模型的落地之战。 OpenAI的ChatGPT引爆了全球AIGC(生成式人工智能)热潮,短短一年时间里&#xff…

使用Python爬取易车网汽车信息(含x-sign参数逆向分析)

文章目录 1. 写在前面2. 接口分析3. 断点分析3. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致…

【论文精读】Attention is all you need

摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络,其中包括一个编码器和一个解码器。性能最好的模型还通过一种注意力机制将编码器和解码器连接起来。我们提出了一种新的简单的网络架构,Transformer,完全基于注意机制,完全…

C++设计模式:适配器模式(十四)

1、定义与动机 定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。 动机: 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境…

SpringBoot3 + Vue3 + Element-Plus + TS 实现动态二级菜单级联选择器

SpringBoot3 Vue3 Element-Plus TS 实现动态二级菜单选择器 1、效果展示1.1 点击效果1.2 选择效果1.3 返回值1.4 模拟后端返回数据 2、前端代码2.1 UnusedList.vue2.2 goodsType.ts2.3 http.ts 3、后端代码3.1 GoodsCategoryController.java3.2 GoodsCategoryService.java3.…