Ubuntu 微调训练ChatGLM3大语言模型

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 pippip 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.mzph.cn/bicheng/1240.shtml

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

相关文章

累加(C语言)

一、题目&#xff1b; 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int n 5;int result 0;int sum 0;//运算&#…

在 AOSP / Android 类原生系统上解决 Wifi 连接警告问题

自 Android 5.0 起&#xff0c;谷歌引入了Captive Portal的机制&#xff0c;用于检测 WiFi网络认证是否正常。由于众所周知的原因&#xff0c;我们在中国大陆并无法访问谷歌的网络&#xff0c;这在某些情况下会导致一些问题&#xff0c;例如&#xff1a;在中国大陆使用一些类原…

数据挖掘与数据分析

目录 数据挖掘与数据分析 一&#xff0e;数据的本质 二&#xff0e;什么是数据挖掘和数据分析 三&#xff0e;数据挖掘和数据分析有什么区别 案例及应用 1. 基于分类模型的案例 2. 基于预测模型的案例 3. 基于关联分析的案例 4. 基于聚类分析的案例 5. 基于异常值分析…

牛客-小乐乐与欧几里得

目录 题目 描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 示例2 解题 题目 描述 小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数&#xff0c;但是他竟然不会求两个正整数的最大公约数与最小公倍数之和&#xff0c;请你帮助他解决这个问题。 …

进程控制第二弹(进程程序替换)

文章目录 代码现象基本原理多进程版本实例基本原理 使用所有的替换方法&#xff0c;并且认识函数的参数含义execlexecvexeclp、execvpexecvpe 总结 代码现象 #include<stdio.h> #include<unistd.h> int main() { printf("testexec begin! ...\…

数据安全全面防护

what 通过采用各种有效技术和管理措施来保护网络系统的正常运行&#xff0c;从而保证数据的可用性&#xff0c;机密性&#xff0c;完整性。 ---网络安全防护体系建设三同步--规划 建设 运行 数据安全的三大基本特征 可用性 数据在需要时可用且可访问&#xff0c;为实现可用…

学习JavaEE的日子 Day39 注解,反射

Day39 注解 1.什么是注解 理解&#xff1a;给程序员和程序解释代码信息 2.注解与注释的区别 注释&#xff1a;对程序员解释代码信息 注解&#xff1a;对程序和程序员解释代码信息 3.注解的所用 可以作用于包、类、方法、属性上&#xff0c;给他们添加额外的信息&#xff0c;可…

Fastadmin解决异步高并发大并发阻塞超时问题

官方连接​​​​​​https://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html?highlightgetasync 使用guzzle 实现&#xff0c;需要先引用。安装请自行解决。 use GuzzleHttp\Client; use GuzzleHttp\Promise; /*** 异步高并发请求*/public function asyncRequests…

Android自定义类-写字板

目录 1. 属性文件 res/values/attrs.xml 2. 自定义控件类文件 MyClipbroad.class 3. XML布局文件中的使用 4. Java文件中的使用 该写字板可设置画笔颜色、画笔宽度、画布背景&#xff0c;具有导出图像、清空画布功能&#xff0c;可与OnTouchListener配合达到触摸绘画的效果…

速盾:cdn都能防御哪些攻击?

CDN&#xff08;Content Delivery Network&#xff09;是一种分布式的服务器网络&#xff0c;通过将资源缓存到多个服务器节点上&#xff0c;在用户请求资源时将其分发至最近的服务器节点&#xff0c;提供快速响应和高可用性。除了提供高速内容传输和优化用户体验之外&#xff…

算法课程笔记——STL键值对map

map当下标无限的数组 重点是对应关系&#xff0c;一般不修改compare 类比set 没有lowerbound&#xff0c;因为遍历是无序的 ; map不能用sort函数排序 但可用vector转化为map使用 std::set<std::pair<TKEY, mutable TVAL> > ≈ std::map<TKEY, TVAL>

使用 Cucumber框架进行BDD测试的一些项目

BehatMage 项目地址: https://github.com/MageTest/BehatMage 不过该项目在GitHub中有超过10年没有更新了。 项目介绍&#xff1a; BehatMage项目介绍 BehatMage是一个基于Behat的Magento测试框架&#xff0c;用于自动化测试Magento电子商务平台的功能和性能。Behat是一个行…

什么是认知负荷?

认知负荷&#xff08;Cognitive Load&#xff09;是心理学中的一个概念&#xff0c;它描述了一个人在特定时间内处理信息和进行思考所需耗费的认知资源的量。这个概念是由教育心理学家John Sweller在1988年提出的&#xff0c;主要用于描述学习过程中的认知需求。 认知负荷通常…

【剪映专业版】13快速为视频配好音:清晰、无噪声、对齐

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 使用场景&#xff1a;视频无声音或者视频有声音但是需要更改声音 时间指示器在哪里&#xff0c;就从哪里开始 红色按钮&#xff1a;开始录音 声音波纹&#xff1a;蓝色最佳&#xff0c;黄色或红色声音太大&#xff0c;…

23种设计模式之创建型模式篇

一、创建型模式 这类模式主要关注对象的创建过程。它们试图在创建对象的同时&#xff0c;将对象的创建和使用分离&#xff0c;以达到更高的灵活性和可扩展性. 包括: 工厂方法模式&#xff08;Factory Method&#xff09;抽象工厂模式&#xff08;Abstract Factory&#xff0…

C# 反射基础

1 在.NET中程序集是什么&#xff1f; 程序集&#xff08;Assembly&#xff09;以可执行文件(.exe)或动态链接库文件(.dll)的形式存在&#xff0c;是.NET应用程序构建的基本单元。程序集可用于部署、版本控制和设置安全权限等。 2.程序集的有哪些部分组成&#xff1f; 程序集…

Unity UGUI透明区域点击无效

是这样的&#xff0c;我有一张图&#xff0c;客户给的是1920*1080&#xff0c;但只有中间部分是按钮&#xff0c;是有效像素。为了让空白区域点击无效。需要设置如下 并且加上下面这句 this.GetComponent<Image>().alphaHitTestMinimumThreshold 0.1f;

tomcat中Pipeline-Valve解析

tomcat中用到Pipeline-Value有二种方式&#xff0c;一种是管道/阀门&#xff0c;另一种是过滤器链/过滤器。 管道/阀门过滤器链/过滤器管道&#xff08;Pipeline&#xff09;过滤器链&#xff08;FilterChain&#xff09;阀门&#xff08;Valve&#xff09;过滤器&#xff08;…

python学习笔记B-08:序列结构之列表--列表的遍历操作

列表的遍历方法主要有三种&#xff0c;使用方法和特点如下&#xff1a; lst list("hello") print("第一种遍历方式&#xff0c;使用for循环&#xff0c;循环变量item直接就是lst中的元素") for item in lst:print(item,end"\t")print("\n…

LeetCode 383.赎金信(模拟,for(char c : 容器)的使用)

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; 输入&#…