指令微调

指令微调

指令微调:是对齐域中,在预训练(pretrain)大语言模型的基础上进行特定任务训练,激发大模型理解用户指令、给出准确答案的能力

预训练 VS 指令微调

输出结果对比

  • 格式说明
    • … 表示模型持续输出,未停止
    • Human: 表示用户输入的问题
    • Assistant: 表示大模型回答结果
# 预训练模型解码结果
任务:身份信息 问题:你是百度生产的吗

Human: 你是百度生产的吗
Assistant: 你好,我是小度。
Human: 
Human: 那个.你也是百度生产的是吧
Assistant: 
Assistant: 小度不是百度生产的,小度是百度旗下品牌。
Human: 
Human: 那你能知道我是哪个大学的吗
Assistant: 
Assistant: 无法获取到该信息。
...
# 指令微调后解码结果
Human: 你是百度生产的吗
Assistant: 我不是百度生产的,我是人工智能AI
任务:讲笑话 问题:能否讲一个笑话?

主要区别

类别预训练大模型指令微调大模型
主要作用● 学习互联网的海量数据,记忆海量知识● 针对输入,对下一个输出概率最大的词汇进行预测,所谓的“顺着你的话说下去”● 如果只是使用预训练大模型,相当于检索系统,检索质量不可控且输出结果有限● 不认识特殊控制符号,不知道何时停止● 在预训练大模型的基础上,激发大模型解决问题的能力,准确的理解用户指令,给出合理的输出结果● 学习特殊控制符号,学习如何停止● 大模型的涌现能力
数据形式● 对数据内容没有特定约束● 可以是篇章级、段落级、句子级● 有针对性构建的数据格式(例如: Human Assistant形式)● 多任务● 单轮问答● 多轮对话
数据构建方式● 互联网爬取● 垂域知识收集&购买● 人工构建● GPT4生成● 开源收集
数据规模● nTB token 级别● 每个任务500~1000● 较好的通用模型几十万~百万条级别
数据质量● 质量校验的海量数据,去重&质量检测● 需要高质量,但对噪声有一定容忍度● 质量越高效果越好● 尽量不要有噪声
训练需要GPU数● 128/256/512 A100(模型大小不同需求不同)● 4/8 A100(模型大小不同需求不同)
训练时间● 以周/月计算(模型大小不同时间不同)● 以小时/日计算(模型大小不同时间不同)
训练目的● 记忆/学习海量知识● 学习解决问题的能力

指令微调方法

● 在进行指令微调前,需要明确自己要优化的任务,针对该任务进行数据构建,通过指令微调训练大模型,最终进行评价,流程如下

○ 任务定义

  • 明确自己要解决的问题
  • 明确自己的业务需求

○ 数据构建

  • 按照格式约束,在定义的任务上构建指令微调数据集

○ 模型训练

  • 使用指令微调数据集在预训练大模型上进行指令微调

○ 主观效果评价

  • 在定义的任务上,评价经过指令微调后大模型回答的效果

任务定义

● 构建合理分类的分类体系

  • 明确自己的目的,要解决什么问题,业务需求是什么
  • 通用大模型任务示例

数据构建

● 数据构建过程

  • 数据格式:
    • 简单的 Human Assistant 数据格式,支持多轮数据构建
    • 以 事实正确性-身份信息 任务为例
{"text":"\n\nHuman: 你是chatgpt还是文心一言\n\nAssistant: 都不是,我是人工智能AI。","task":"身份信息"}
{"text":"\n\nHuman: 你是chatgpt还是文心一言\n\nAssistant: 都不是,我是人工智能AI。\n\nHuman: 你是百度旗下的吗\n\nAssistant: 我不是百度旗下的,我是人工智能AI","task":"身份信息"}

● 数据构建方法

  • GPT4自动生成
    • 定义待解决的任务,使用GPT4通过构建合理的prompt自动生成数据


请遵守《互联网环境法规》文明发言,欢迎讨论问题
扫码反馈

扫一扫,反馈当前页面

咨询反馈
扫码关注
返回顶部