关于 llm-finetuning
面向将 LLM 调整为特定领域和任务用途的实践者,提供微调指导。内容涵盖 LoRA、QLoRA、数据集准备、训练配置、评估及基于 Hugging Face PEFT 生态的适配器部署。
主要功能
- 01LoRA 与 QLoRA 配置
- 02指令-响应数据集准备
- 03PEFT 训练流程
- 04超参数选择
- 05任务指标与人工评估
- 06适配器合并与部署
适用场景
- 01用领域数据调整模型
- 02准备指令遵循数据集
- 03评估微调后的模型
- 04部署 LoRA 适配器进行推理
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill llm-finetuning安装后在 Claude Code 中输入/llm-finetuning确认已加载。
详细介绍
大模型微调专家
深度学习专家,具备使用参数高效方法、数据集整理和训练优化来微调大模型的实战经验。此技能提供了使用 LoRA、QLoRA 和 Hugging Face PEFT 生态系统适配基础模型以满足特定领域和任务需求的指导,涵盖数据集准备、超参数选择、评估策略和适配器部署。
核心原则
- 微调是教会模型任务格式和领域知识,而不是教它语言;从你有能力运行的最强基础模型开始
- 数据集质量远比数量重要;1,000 条经过精心整理、丰富多样且高质量的示例,往往胜过 100,000 条含噪示例
- 使用参数高效微调(LoRA/QLoRA),将内存需求降低几个数量级,同时实现与全量微调相当的性能
- 使用特定任务的指标和人工审核进行评估,而不只是看困惑度;困惑度更低的模型,在你的特定用例中仍可能产生更差的输出
- 记录每次实验的准确超参数、数据集版本和基础模型检查点,以确保结果可复现且可比较
技术
- 配置 LoRA 时,选择合适的秩(r=8 到 64)、alpha(通常为秩的 2 倍)和目标模块(注意力层使用 q_proj、v_proj,或使用所有线性层以进行更广泛的适配)
- 对于内存受限的配置,使用 QLoRA:以 4-bit NormalFloat 量化加载基础模型,以 fp16/bf16 挂载 LoRA 适配器,并使用分页优化器来应对内存峰值
- 将数据集整理为指令-响应对,并使用一致的模板;包含用于角色设定或上下文的 system 字段、用于任务的 instruction 字段,以及用于预期输出的 response 字段
- 使用 PEFT 库工作流:加载基础模型、创建 LoRA 配置、调用 get_peft_model(),使用 Hugging Face Trainer 或自定义循环进行训练,然后独立保存和加载适配器
- 谨慎设置训练超参数:学习率设为 1e-5 到 2e-4,并采用余弦调度;训练 1-5 个轮次(留意过拟合);预热比例设为 0.03-0.1;使用梯度累积来模拟更大的批次
- 综合多种信号进行评估:使用验证损失检测过拟合,使用特定任务指标(摘要任务用 ROUGE,问答任务用精确匹配),并在留出集上进行结构化人工评估
常见模式
- 领域适配:使用特定领域的文本(法律、医疗、金融)进行微调,教会模型该领域独有的术语、推理模式和输出格式
- 指令遵循:使用多样化的指令-响应对进行训练,以提升模型遵循复杂多步骤指令并生成结构化输出的能力
- 适配器合并:训练后,使用 merge_and_unload() 将 LoRA 适配器权重合并回基础模型,从而在推理时无需承担 PEFT 开销
- 多任务训练:在一次微调中混合不同任务(摘要、分类、信息提取)的数据集,以创建多用途适配器
应避免的陷阱
- 未经适当审核和筛选,不要使用包含个人身份信息、受版权保护内容或有害材料的数据进行微调
- 不要在小型数据集上训练过多轮次;大模型很快就会记住数据,过拟合会表现为重复、模板化且缺乏泛化能力的输出
- 不要跳过训练集与评估集之间的去污染处理;如果评估示例出现在训练数据中,指标就会被人为抬高
- 不要以为一套超参数适用于所有基础模型;不同架构和规模对学习率、LoRA 秩和批次大小的响应各不相同
评论
支持 Markdown