• 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
    
    • 1

    预训练模型:

    chatglm3-6b

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

    数据集格式参考:

    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"
      }
    
    • 1
    • 2
    • 3
    • 4

    test_identity.json 数据格式

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建Python3.10虚拟环境

    conda create -n llama_factory python=3.10
    conda activate llama_factory
    
    • 1
    • 2

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

    cd /home/ubuntu/LLaMA-Factory
    #安装虚拟环境依赖
    pip install virtualenv
    
    #*创建虚拟环境
    virtualenv venv
    #*激活虚拟环境
    source venv/bin/activate
    
    #退出虚拟环境
    deactivate
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5.运行测试

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    7.训练截图

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

    8.测试模型

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

    9.导出微调后模型

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

    10.测试导出的模型

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

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

  • 相关阅读:
    Pytorch入门(6)—— 梯度计算控制
    存储器和CPU的连接与TCP的流量控制
    Linux网络命令
    linux实战项目经验得到的常用linux命令(3)文件定位和内容查找
    微信小程序Vue+nodejs+uniapp课堂教学辅助在线学习系统
    dubbo分布式日志调用链追踪
    阿里p8实战总结SpringCloud微服务分布式系统文档
    牛客小白月赛56
    ADW300物联网电力仪表-ONENET_STUDIO物模型方案操作说明
    2023年11月5日网规考试备忘
  • 原文地址:https://blog.csdn.net/luobowangjing/article/details/137911341