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 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轮就可以了

bash 复制代码
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

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

相关推荐
GocNeverGiveUp7 分钟前
机器学习2-NumPy
人工智能·机器学习·numpy
B站计算机毕业设计超人1 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条1 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客1 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
feifeikon1 小时前
机器学习DAY3 : 线性回归与最小二乘法与sklearn实现 (线性回归完)
人工智能·机器学习·线性回归
游客5201 小时前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
古希腊掌管学习的神1 小时前
[机器学习]sklearn入门指南(2)
人工智能·机器学习·sklearn
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
咸鱼桨2 小时前
《庐山派从入门到...》PWM板载蜂鸣器
人工智能·windows·python·k230·庐山派
强哥之神2 小时前
Nexa AI发布OmniAudio-2.6B:一款快速的音频语言模型,专为边缘部署设计
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·openai