发布时间:2026/7/18 9:10:05
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/7/17 6:39:58

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

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

2026/7/17 6:39:58

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

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

2026/7/17 6:39:58

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

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

2026/7/18 9:08:05

JarEditor进阶指南:如何使用Javassist直接修改字节码

JarEditor进阶指南:如何使用Javassist直接修改字节码 【免费下载链接】JarEditor IDEA plugin for directly editing and modifying files in jar without decompression. (一款无需解压直接编辑修改jar包内文件的IDEA插件) 项目地址: http…

2026/7/18 9:08:05

PBJ液晶手写板在技术工作场景的应用与评测

最近在整理办公桌时,我发现了一个有趣的现象:身边不少程序员同事的工位上都多了一块电子手写板。不是数位板,也不是iPad,而是那种看起来很简单、价格亲民的液晶手写板。这让我开始思考:在数字化办公已经如此普及的今天…

2026/7/18 9:08:05

WAF导航与路由:ViewModelCore与IView接口的导航实现

WAF导航与路由:ViewModelCore与IView接口的导航实现 【免费下载链接】waf Win Application Framework (WAF) is a lightweight Framework that helps you to create well structured XAML Applications. 项目地址: https://gitcode.com/gh_mirrors/waf/waf W…

2026/7/18 9:08:05

10分钟部署AI代码审计多智能体系统:从原理到实战

1. 项目概述:为什么我们需要一个“AI代码审计多智能体”? 最近在安全圈和开发圈里,一个词被反复提及:AI代码审计。听起来很高大上,但说白了,就是让AI来帮我们看代码,找出那些潜在的安全漏洞、逻…

2026/7/18 9:03:05

UE5本地玩家与分屏系统:从核心原理到实战配置

1. 项目概述:为什么LocalPlayer是UE5新手必须啃下的硬骨头? 如果你刚接触虚幻引擎5,可能还在和蓝图节点、材质编辑器较劲,觉得“LocalPlayer”这个词听起来既官方又遥远。但相信我,无论你是想做一款本地双人同屏的派对…

2026/7/17 5:59:06

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/17 1:21:45

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/17 7:39:19

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/18 0:00:24

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/17 14:59:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…