ChatGLM3微调实践:PTuning_v2与LoRA效果对比及参数解析
微调过程中的参数设置问题
在ChatGLM3项目中进行PTuning_v2微调后,使用inference_hf.py进行推理时会出现一个关于max_new_tokens和max_length参数的警告信息。这个警告表明在文本生成过程中同时设置了max_new_tokens(默认512)和max_length(默认8192)两个参数,系统会优先采用max_new_tokens的设置。
实际上,这个警告对生成结果没有实质性影响,它只是提醒开发者注意参数设置的优先级。在大多数情况下,512个token的生成长度已经足够满足需求,如果确实需要更长的生成结果,可以显式地在推理脚本中调整max_new_tokens参数。
predict_with_generate参数详解
在微调配置文件中,predict_with_generate是一个关键参数,它决定了模型在预测时的行为模式:
-
当设置为true时,模型会使用生成模式进行预测,即像正常对话一样逐步生成文本输出,这种方式可以与微调数据集中的标签(label)进行对比评估。
-
当设置为false时,模型不会生成完整输出,而是直接计算预测结果与标签的差异。
这个参数主要影响评估阶段的行为,对于实际推理应用影响不大。在大多数微调场景下,建议保持默认设置(true),这样可以更直观地观察模型的生成效果。
PTuning_v2与LoRA微调效果对比
实践表明,在相同训练步数的情况下,LoRA微调方法往往比PTuning_v2获得更好的效果。这种现象在实际应用中很常见,主要原因包括:
-
参数更新方式不同:LoRA通过低秩适配器更新模型参数,保留了原始模型的大部分知识;而PTuning_v2主要依靠提示调优。
-
计算资源需求:PTuning_v2通常需要更少的计算资源,但可能牺牲一些性能。
-
任务适应性:对于某些特定任务,LoRA可能更容易捕捉到关键特征。
对于初学者来说,如果计算资源允许,可以优先尝试LoRA微调方法,它通常能更快地获得较好的效果。PTuning_v2则更适合资源受限或对模型改动要求较小的场景。
微调实践建议
-
参数调优:除了predict_with_generate外,还应关注learning_rate、batch_size等关键参数。
-
评估指标:不要只看损失值,还要人工检查生成结果的质量。
-
数据质量:确保微调数据集的质量和多样性,这对最终效果影响很大。
-
逐步尝试:可以先用小规模数据测试不同微调方法的效果,再决定最终方案。
通过理解这些关键参数和微调方法的差异,开发者可以更有效地使用ChatGLM3进行模型定制,获得更好的应用效果。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0150- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111