尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

InstructGLM 常见问题排查:环境搭建与训练报错的终极解决方案

InstructGLM 常见问题排查:环境搭建与训练报错的终极解决方案 InstructGLM 常见问题排查环境搭建与训练报错的终极解决方案【免费下载链接】InstructGLMChatGLM-6B 指令学习|指令数据|Instruct项目地址: https://gitcode.com/gh_mirrors/ins/InstructGLMInstructGLM 是一个基于 ChatGLM-6B 与 LoRA 技术进行指令学习Instruct微调的开源项目支持 Alpaca 英文指令数据与 BELLE 百万条中文指令数据的完整训练流程。很多新手在复现 InstructGLM 时都会遇到环境搭建失败、依赖版本冲突、显存不足或训练中断等问题。本文将按照环境搭建 → 数据预处理 → 模型训练 → 推理部署的完整链路为你整理 InstructGLM 常见问题排查手册与训练报错解决方案助你一次跑通。一、InstructGLM 环境搭建常见问题1. 第一步克隆项目并准备模型权重首先将仓库克隆到本地然后从 HuggingFace 下载 ChatGLM-6B 原始权重git clone https://gitcode.com/gh_mirrors/ins/InstructGLM这里有一个最容易踩的坑train_lora.py中写死了模型路径../../pretrained_models/chatglm-6b也就是说模型权重必须放在项目上级目录的pretrained_models/chatglm-6b文件夹中否则会报OSError: Cant load model。推荐的目录结构如下your_workspace/ ├── InstructGLM/ └── pretrained_models/ └── chatglm-6b/2. 依赖安装报错版本冲突怎么解InstructGLM 的依赖清单在 requirements.txt 中最常出问题的几个包是报错现象原因解决方案protobuf相关报错ChatGLM 与新版 protobuf 不兼容固定安装protobuf3.19.5,3.20.1transformers加载失败版本过新导致兼容性问题使用transformers4.27.1bitsandbytes报错int8 量化依赖缺失安装bitsandbytes0.37.1peft无法导入版本过旧缺少LoraConfig安装最新版 peft≥0.3.0推荐使用清华源一次性安装全部依赖速度更快pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple3. torch 与显卡驱动不匹配torch1.13.1是硬性要求。如果你的 CUDA 版本较旧建议先执行python -c import torch; print(torch.cuda.is_available())确认 GPU 可用。返回False时请升级显卡驱动或重新安装与 CUDA 版本匹配的 PyTorch这是新手最常见的 InstructGLM 环境搭建问题之一。二、数据预处理阶段报错排查1. 数据集转换失败json 与 jsonl 分不清Alpaca 原始数据是 json 数组格式必须先转换成 jsonl 才能被分词脚本读取python cover_alpaca2jsonl.py \ --data_path data/alpaca_data.json \ --save_path data/alpaca_data.jsonl转换逻辑在 cover_alpaca2jsonl.py 中它会把每条数据拼成Instruction:xxx Input:xxx Answer:xxx的上下文格式。如果你的数据里缺少input字段会报 KeyError因为脚本强制读取example[instruction]和example[output]。2. 分词后数据集为空或报 OOM分词脚本 tokenize_dataset_rows.py 默认max_seq_length384。当遇到内存不足OOM时调小这个参数即可当训练时发现损失不下降往往是max_seq_length过小导致长文本被截断。对 BELLE 中文数据建议先用脚本内置的文本长度统计均值约 8390% 分位约 194来合理设置该值。3. 预处理脚本中的报错对照报错信息解决方案FileNotFoundError检查 jsonl 路径是否与脚本参数--jsonl_path一致ValueError: too many dimensions输入数据存在空行或格式错误检查 jsonl 每行是否为合法 JSON分词速度极慢首次运行需在线加载 tokenizer可提前下载THUDM/chatglm-6b到本地三、模型训练报错从单卡到 DeepSpeed 多卡1. 显存不足CUDA Out of MemoryInstructGLM 的 LoRA 微调采用 int8 量化加载 梯度检查点来压缩显存。若仍 OOM请按顺序尝试将 train_lora.py 中的--per_device_train_batch_size从 2 降到 1调小--max_steps或先跑少量步数验证确认load_in_8bitTrue是否生效若报 bitsandbytes 错误则回到环境搭建一节检查依赖使用 DeepSpeed 多卡方案分散显存压力。参考命令python train_lora.py \ --dataset_path data/alpaca \ --lora_rank 8 \ --per_device_train_batch_size 1 \ --gradient_accumulation_steps 4 \ --max_steps 52000 \ --save_steps 1000 \ --learning_rate 2e-5 \ --fp16 \ --output_dir output2. gcc 版本过低导致编译失败在部分 Linux 环境中编译 bitsandbytes 或 cpm_kernels 会报 gcc 版本过低错误。README 中提供了标准修复流程这里整理为两条命令yum install centos-release-scl -y yum install devtoolset-9 -y scl enable devtoolset-9 bash执行后通过gcc -v确认版本已切换到 9 以上再重新安装依赖即可。3. DeepSpeed 多卡训练失败基于 DeepSpeed 的多卡微调入口是 train_deepspeed.py配合 config/default_config.yaml 使用accelerate launch --config_file config/default_config.yaml train_deepspeed.py常见报错与对策报错现象解决方案RuntimeError: Distributed package doesnt have NCCL检查多卡通信单卡环境请直接使用train_lora.pydeepspeed未安装确认accelerate0.17.1已安装且版本匹配bf16不支持配置中使用mixed_precision: bf16旧显卡如 V100请改为fp16训练完成后LoRA 权重会保存为output/chatglm-lora.pt。注意保存的是可训练参数而非完整模型加载时必须先套用相同的LoraConfig结构。4. 基于已有权重继续微调InstructGLM 支持从已有的 LoRA 权重继续训练例如用 Alpaca 权重作为 BELLE 训练的起点只需在训练参数中加入--is_resume True \ --resume_path output/alpaca/chatglm-lora.pt若加载时报size mismatch请检查两次训练的--lora_rank是否一致rank 不同会导致权重形状不匹配。四、推理与 Web Demo 常见问题1. 推理脚本报错排查推理入口 infer.py 会加载THUDM/chatglm-6b与output/belle/chatglm-lora.pt权重。三个高频问题权重路径错误peft_path默认指向 belle 权重使用 alpaca 权重时记得修改加载报错LoRA 加载使用strictFalse部分层缺失属正常现象显存不足推理使用半精度加载8G 显存以下建议开启 int8。2. 修改 modeling_chatglm 后效果对比项目提供了两版 ChatGLM 模型实现官方原版与修改版。修改版修复了部分生成问题效果对比如下如果你发现生成结果出现重复或格式混乱可尝试将推理时使用的old_files/modeling_chatglm.py替换为官方版对比验证反之若官方版有兼容问题则切回修改版。3. Web Demo 无法启动python web_demo.py启动失败通常有三种原因gradio 版本不兼容脚本中重写了gr.Chatbot.postprocess版本过新会报属性错误建议使用与项目同期兼容的 gradio 版本显存不足Web Demo 全量加载模型8G 显存以下建议改用 int8 量化加载模型路径错误脚本从 HuggingFace 在线加载断网环境请先下载到本地并修改from_pretrained路径。五、快速排查清单收藏版遇到问题别慌按照下面的顺序逐项检查90% 的 InstructGLM 环境搭建与训练报错都能解决✅ 模型权重是否放在../pretrained_models/chatglm-6b✅protobuf、transformers、peft版本是否与 requirements 一致✅torch.cuda.is_available()是否为 True✅ 数据集是否已转换为 jsonl 并完成 tokenize✅ 显存不足时是否已调小 batch_size 或改用 DeepSpeed✅ 加载 LoRA 权重时lora_rank是否与训练时一致✅ 多卡训练前是否确认了accelerate与deepspeed配置六、总结InstructGLM 为 ChatGLM-6B 指令微调提供了一个开箱即用的完整范例从数据转换、分词、单卡 LoRA 训练、DeepSpeed 多卡加速到推理部署均有对应脚本。本文覆盖的 InstructGLM 环境搭建问题与训练报错排查方案都是社区中最高频的场景。建议新手严格按照先跑通 alpaca 小数据、再上 BELLE 百万数据的路径循序渐进遇到报错先对照上面的快速排查清单大多数问题都能在三分钟内定位解决。祝你的 ChatGLM 微调之路顺利【免费下载链接】InstructGLMChatGLM-6B 指令学习|指令数据|Instruct项目地址: https://gitcode.com/gh_mirrors/ins/InstructGLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表