Ubuntu 微调训练ChatGLM3大语言模型

本文详细介绍了如何在Ubuntu服务器上使用LLaMAFactory的LoRA和QLoRA技术对ChatGLM3-6B模型进行微调,包括服务器配置、环境设置、依赖包安装、训练参数和模型测试,以提升广告文案生成任务的性能和降低GPU资源消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
在这里插入图片描述

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

<think>好的,用户想在Ubuntu 22.04上对DeepSeek大模型进行微调。我需要先理解他们的需求。DeepSeek的模型可能像其他大型语言模型一样,需要特定的环境和工具来进行微调。首先,我应该考虑硬件需求,比如是否有足够的GPU资源,因为大模型训练通常需要高性能的GPU和足够的内存。 然后,用户可能已经安装了Ubuntu 22.04,但需要确认系统依赖项。常见的依赖包括Python环境、CUDA、cuDNN等。可能需要指导他们安装这些依赖,或者检查现有版本是否符合要求。 接下来,用户可能需要获取DeepSeek模型的代码和预训练权重。可能需要从GitHub克隆仓库,或者通过其他渠道下载。这里需要注意权限问题,是否有公开的代码库可用。例如,引用[3]提到使用docker-compose来启动服务,可能用户已经有部分环境配置,但微调可能需要不同的设置。 微调通常涉及准备数据集,用户需要知道数据格式的要求,比如是否使用特定格式如JSON、CSV等。数据预处理步骤可能包括清洗、分词等,可能需要使用Hugging Face的库,如datasets,或者自定义脚本。 然后,配置微调参数是关键。学习率、批次大小、训练轮数等参数需要根据具体任务调整。这里可能需要引用DeepSeek的文档,如果有的话,或者推荐通用的大模型微调实践。 训练过程中,监控资源使用和模型表现是必要的。用户可能需要使用如TensorBoard或logging工具来跟踪训练进度。此外,检查点保存和恢复功能也是重要的,以防训练中断。 验证和测试阶段,用户需要评估模型在测试集上的表现,可能涉及BLEU、ROUGE等指标,或者特定领域的评估方法。最后的应用部署可能需要将模型导出为可用格式,并集成到现有系统中。 用户可能遇到的问题包括环境配置错误、依赖冲突、显存不足等。需要提供一些常见问题的解决方法,比如调整批次大小,使用混合精度训练,或者梯度累积。 另外,引用[1]提到DeepSeek与华为昇腾芯片的优化,如果用户有相关硬件,可能需要特定的配置步骤。不过大多数情况下,可能假设用户使用NVIDIA GPU,所以需要明确说明。 最后,生成相关问题时要考虑用户可能的后续需求,比如性能优化、部署、数据处理工具的选择等。需要确保回答结构清晰,步骤详细,并且参考了提供的引用内容,比如引用[3]中的docker-compose示例,可能需要结合到环境配置部分。</think>在Ubuntu 22.04上对DeepSeek大型语言模型进行微调需要遵循以下步骤: ### 一、环境准备 1. **硬件要求** - 推荐使用NVIDIA GPU(至少24GB显存) - 系统内存建议64GB以上 - 存储空间需要500GB SSD(用于存放模型和数据集) 2. **系统依赖安装** ```bash sudo apt update && sudo apt install -y python3.10 python3-pip docker.io nvidia-container-toolkit ``` ### 二、软件环境配置 1. **Python虚拟环境** ```bash python3 -m venv deepseek-env source deepseek-env/bin/activate ``` 2. **安装PyTorch(适配CUDA版本)** ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` 3. **安装模型训练库** ```bash pip install transformers==4.35.0 datasets==2.14.5 accelerate==0.24.1 ``` ### 三、模型获取与准备 1. **获取DeepSeek模型权重** ```bash git clone https://github.com/deepseek-ai/DeepSeek-LLM.git cd DeepSeek-LLM && mkdir checkpoints ``` (需申请官方模型权重许可后获取预训练模型) 2. **Docker环境配置(参考引用[3])** ```bash echo "DEEPKEEP_MODEL=/path/to/checkpoints" >> .env docker-compose -f docker-compose.yml up -d ``` ### 四、微调流程 1. **数据准备** - 格式要求:JSONL文件格式 ```json {"prompt": "问题文本", "response": "参考答案"} ``` 2. **配置微调参数** ```python from transformers import TrainingArguments training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=4, gradient_accumulation_steps=2, learning_rate=2e-5, fp16=True ) ``` 3. **启动微调** ```python from transformers import Trainer trainer = Trainer( model=model, args=training_args, train_dataset=dataset, ) trainer.train() ``` ### 五、验证与部署 1. **模型验证** ```python input_text = "用户输入样例" inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0])) ``` 2. **性能优化(参考引用[1])** - 使用华为昇腾910B芯片加速: ```bash export HCCL_OP_BASE_FFTS_MODE=ENV ``` ### 常见问题解决 1. **显存不足**:减小`per_device_train_batch_size`值 2. **依赖冲突**:使用Docker隔离环境(参考引用[3]) 3. **训练不稳定**:尝试添加`--gradient_checkpointing`参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿老罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值