生成式任务微调

概述

生成式任务微调是指针对文本生成类任务(如问答、对话、摘要、翻译等)进行的模型微调。这类任务的特点是输出长度不固定,需要模型具备强大的语言生成能力。

适用任务类型

问答系统

  • 领域问答:医疗、法律、金融等专业领域
  • FAQ系统:常见问题自动回答
  • 知识问答:基于知识库的问答

对话系统

  • 客服机器人:自动客户服务
  • 聊天机器人:日常对话交互
  • 任务导向对话:订票、购物等任务

内容生成

  • 文档摘要:长文档的自动摘要
  • 内容创作:文案、广告语生成
  • 代码生成:根据需求生成代码

模型架构选择

Causal LM(因果语言模型)

适用于大多数生成任务:

  • LLaMA系列:Meta开源的高性能模型
  • ChatGLM系列:清华开源的对话模型
  • Qwen系列:阿里开源的通用模型

模型选择考虑因素

因素小模型(7B以下)中等模型(7B-13B)大模型(13B以上)
训练成本中等
推理速度中等
生成质量基础良好优秀
适用场景简单问答复杂对话专业咨询

数据格式设计

标准指令格式

{
  "instruction": "请解释什么是机器学习",
  "input": "",
  "output": "机器学习是一种人工智能技术,通过算法让计算机从数据中学习模式..."
}

对话格式

{
  "conversation": [
    {"role": "user", "content": "你好,我想了解Python编程"},
    {"role": "assistant", "content": "你好!我很乐意帮你了解Python编程..."},
    {"role": "user", "content": "Python有什么优势?"},
    {"role": "assistant", "content": "Python有以下几个主要优势..."}
  ]
}

训练策略

损失函数

生成式任务通常使用交叉熵损失,只对目标序列部分计算损失。

序列长度处理

  • 截断策略:超过最大长度的序列进行截断
  • 动态padding:批次内padding到最大长度
  • 分段训练:长文本分段处理

微调技术选择

基于任务复杂度

基于数据规模

  • 小数据集(<1000条):LoRA + 数据增强
  • 中等数据集(1000-10000条):QLoRA + SFT
  • 大数据集(>10000条):全参数微调或LoRA

生成质量优化

解码策略

  • 贪婪解码:速度快但可能重复
  • 采样解码:多样性好,使用temperature和top_p
  • Beam Search:质量较高,适合需要准确性的场景

重复惩罚

通过repetition_penaltyno_repeat_ngram_size参数避免生成重复内容。

评估指标

自动评估

  • BLEU分数:与参考答案的n-gram重叠度
  • ROUGE分数:召回率导向的评估
  • 困惑度(Perplexity):模型对测试数据的预测能力

人工评估

  • 相关性:回答是否切题
  • 准确性:信息是否正确
  • 流畅性:语言是否自然
  • 完整性:回答是否完整

常见问题与解决方案

生成重复内容

  • 调整repetition_penalty参数
  • 使用no_repeat_ngram_size
  • 优化训练数据质量

回答不够准确

生成速度慢

  • 使用较小的模型
  • 应用模型量化
  • 优化解码策略

相关概念