Ubuntu下ChatGLM2-6B环境搭建与P-Tuning微调实战

发布时间:2026/11/5 1:14:36

Ubuntu下ChatGLM2-6B环境搭建与P-Tuning微调实战 1. 项目概述最近在Ubuntu系统上搭建ChatGLM2-6B环境并进行P-Tuning微调训练时踩了不少坑。作为一个开源的中文大语言模型ChatGLM2-6B在中文处理方面表现优异但在实际部署和训练过程中会遇到各种问题。本文将详细记录从环境搭建到微调训练的全过程特别是那些官方文档没有提及的细节和解决方案。2. 环境准备2.1 系统选择与配置为什么选择Ubuntu而不是Windows主要原因有三点ChatGLM2-6B项目包含大量.sh脚本文件在Windows下运行需要额外配置Linux环境下CUDA支持更好驱动问题更少大多数深度学习框架在Linux下的性能表现更稳定建议使用Ubuntu 22.04 LTS版本这是目前最稳定的选择。如果不想安装双系统也可以使用Windows的WSL2子系统但需要注意WSL2对GPU的支持需要额外配置。2.2 硬件要求最低配置要求CPU至少4核内存16GB以上显卡NVIDIA GPU至少8GB显存RTX 3060及以上实测中RTX 40608GB显存可以流畅运行基础推理和微调训练。如果没有独立显卡纯CPU环境也能运行但性能极差仅适合测试用途。3. CUDA环境安装3.1 驱动安装避坑指南网上大多数教程都建议手动下载CUDA Toolkit安装但这种方法在Ubuntu 22.04上容易导致系统崩溃。更稳妥的方法是打开软件和更新切换到附加驱动标签页选择专有驱动非开源版本等待安装完成重要提示安装前不要随意更换软件源。国内镜像站虽然下载速度快但可能存在依赖包不全的问题导致后续安装失败。3.2 基础依赖安装在安装CUDA前先确保以下基础工具已安装sudo apt update sudo apt install -y gcc g make build-essential3.3 CUDA Toolkit安装推荐使用conda管理CUDA环境conda install -c nvidia cuda-toolkit11.8选择11.8版本是因为它目前与PyTorch的兼容性最好。安装完成后验证nvcc --version nvidia-smi3.4 cuDNN安装cuDNN是NVIDIA提供的深度学习加速库conda install -c nvidia cudnn8.6.04. ChatGLM2-6B环境搭建4.1 创建conda环境conda create -n chatglm python3.9 conda activate chatglm4.2 安装PyTorch选择与CUDA 11.8兼容的版本pip install torch2.0.1cu118 torchvision0.15.2cu118 torchaudio2.0.2 --extra-index-url https://download.pytorch.org/whl/cu1184.3 安装ChatGLM依赖git clone https://github.com/THUDM/ChatGLM2-6B cd ChatGLM2-6B pip install -r requirements.txt4.4 模型下载可以从Hugging Face下载预训练模型git lfs install git clone https://huggingface.co/THUDM/chatglm2-6b如果网络不稳定可以使用国内镜像源。5. P-Tuning微调实战5.1 准备训练数据以AdvertiseGen数据集为例格式要求为JSON{ content: 输入文本, summary: 期望输出 }5.2 微调参数配置关键参数说明PRE_SEQ_LEN前缀序列长度影响模型记忆能力LR学习率决定训练速度和质量quantization_bit量化位数降低显存占用示例启动命令PRE_SEQ_LEN128 LR2e-2 NUM_GPUS1 torchrun --standalone --nnodes1 --nproc-per-node$NUM_GPUS main.py \ --do_train \ --train_file AdvertiseGen/train.json \ --validation_file AdvertiseGen/dev.json \ --preprocessing_num_workers 10 \ --prompt_column content \ --response_column summary \ --overwrite_cache \ --model_name_or_path ./chatglm2-6b \ --output_dir ./output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \ --overwrite_output_dir \ --max_source_length 64 \ --max_target_length 128 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --gradient_accumulation_steps 16 \ --predict_with_generate \ --max_steps 3000 \ --logging_steps 10 \ --save_steps 1000 \ --learning_rate $LR \ --pre_seq_len $PRE_SEQ_LEN \ --quantization_bit 85.3 训练监控推荐使用nvitop监控GPU状态conda install -c conda-forge nvitop nvitop6. 常见问题与解决方案6.1 训练后通用能力下降现象微调后模型在专业领域表现提升但通用对话能力下降。解决方案在训练数据中混入通用对话样本降低学习率尝试1e-3到5e-3减少训练步数6.2 显存不足问题解决方法降低batch size使用梯度累积gradient_accumulation_steps启用8bit或4bit量化6.3 训练速度慢优化建议增加gradient_accumulation_steps使用更大的batch size检查CUDA和cuDNN版本是否匹配7. 性能优化技巧7.1 混合精度训练在启动命令中添加--fp167.2 梯度检查点减少显存占用--gradient_checkpointing7.3 数据预处理优化使用多线程预处理--preprocessing_num_workers 88. 训练结果评估典型的训练日志如下{ epoch: 0.42, train_loss: 3.3751344401041665, train_runtime: 54080.5566, train_samples: 114599, train_samples_per_second: 0.888, train_steps_per_second: 0.055 }关键指标解读train_loss训练损失值越低越好train_samples_per_second每秒处理的样本数train_steps_per_second每秒完成的训练步数9. 模型部署与应用9.1 加载微调后的模型from transformers import AutoTokenizer, AutoModel tokenizer AutoTokenizer.from_pretrained(output/adgen-chatglm2-6b-pt-128-2e-2, trust_remote_codeTrue) model AutoModel.from_pretrained(output/adgen-chatglm2-6b-pt-128-2e-2, trust_remote_codeTrue).cuda()9.2 Web Demo部署python web_demo.py --model-path output/adgen-chatglm2-6b-pt-128-2e-210. 经验总结在实际微调过程中最大的挑战是平衡专业能力和通用能力。建议采取以下策略训练数据中保持30%的通用对话样本学习率不宜过大建议2e-3到5e-3定期在验证集上测试通用对话能力使用早停机制防止过拟合另一个重要发现是量化虽然能降低显存占用但会轻微影响模型性能。如果显存充足建议使用16bit或32bit精度训练。
延伸阅读

更多相关文章

2026/11/1 3:53:19

Shell变量基础与进阶:从入门到精通

Shell 变量基础知识 变量是暂时存储数据的地方及数据标记,所存储的数据存在于内存空间中,通过正确地调用内存空间中变量的名字就可以取出与变量对应的数据。 变量的内容一般要加双引号,以防止出错,特别是当值里的内容之间有空格时…

2026/11/4 7:21:56

RA8D1开发板双Flash管理与FAL框架实战

1. RA8D1 Vision Board与FAL框架概述RA8D1 Vision Board是瑞萨电子基于Cortex-M85架构推出的一款高性能开发板,主打机器视觉应用场景。这块板子最吸引人的地方在于它同时集成了片上Flash和外挂Flash存储,为视觉算法、模型参数等大容量数据存储提供了硬件…

2026/10/26 21:49:59

Windows新手Claude Code+DeepSeek本地部署实战指南

1. 这不是“又一个AI工具安装教程”,而是一份专为Windows新手写的Claude Code落地实操手记 我第一次在公司内部分享Claude Code时,台下三位刚转行做前端的同事,当场就卡在了“npm.ps1无法加载”这一步——不是他们不会敲命令,而是…

2026/11/5 1:12:31

RealSense D455 三维建模实战:点云怎么滤、怎么配、怎么重建

RealSense D455 三维建模实战:点云怎么滤、怎么配、怎么重建 【免费下载链接】librealsense RealSense SDK 项目地址: https://gitcode.com/GitHub_Trending/li/librealsense librealsense SDK 把 Intel RealSense D455 的深度图和彩色图变成带颜色的三维点云…

2026/11/5 1:07:29

基于UART接口ADC与STM32的工业温度采集方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑