微调大模型最怕的事:学了新本事,忘了老手艺。Nova Forge 怎么解决的

20 阅读2分钟

做过 SFT 的人都有体会:微调前模型啥都会一点,微调后某个领域变强了,但写文章、做推理、聊天的能力明显变菜了。

这叫灾难性遗忘。学了新东西,把老东西覆盖了。

最近用 Amazon Nova Forge 试了一下它的数据混合方案,效果不错——领域分类准确率上去了,MMLU 分数几乎没掉

任务背景

客户评论分类,1420 个细分类别,四级标签体系,14000+ 训练样本。典型的企业级分类任务。

基础模型 zero-shot 不够准(类别太细),普通 SFT 之后分类好了但通用能力废了。

Nova Forge 做了什么

核心思路:微调时不只用你的领域数据,自动混入 Nova 的精选通用数据

你提供领域训练集,Nova Forge 自动:

  1. 从 Nova 训练语料中选互补子集
  2. 动态调整混合比例
  3. 联合优化领域损失和通用损失

不需要你手动找通用数据、试混合比例。

效果

指标基础模型普通SFTNova Forge
VOC分类
MMLU通用正常明显下降基本持平

关键:领域能力和通用能力不再是二选一

代码长什么样

import boto3, json

bedrock = boto3.client('bedrock', region_name='cn-northwest-1')

# 创建微调任务
response = bedrock.create_model_customization_job(
    jobName='voc-classifier',
    customModelName='nova-voc',
    roleArn='arn:aws-cn:iam::123456789012:role/BedrockRole',
    baseModelIdentifier='amazon.nova-pro-v1:0',
    trainingDataConfig={
        's3Uri': 's3://bucket/training_data.jsonl'
    },
    outputDataConfig={
        's3Uri': 's3://bucket/output/'
    },
    customizationType='FINE_TUNING',
    hyperParameters={
        'epochCount': '3',
        'batchSize': '8',
        'learningRate': '0.00001'
    }
)

训练数据是标准 JSONL,messages 格式:

{
    "messages": [
        {"role": "system", "content": "分类系统 prompt..."},
        {"role": "user", "content": "这个摄像头安装很简单"},
        {"role": "assistant", "content": "{\\\"level_1\\\":\\\"安装与配置\\\",...}"}
    ]
}

什么时候用

  • 领域分类/工单路由 → 用 Nova Forge
  • 特定格式输出 → 用 Nova Forge
  • 数据很少(<100条)→ 用 PEFT 或 few-shot
  • 只是调 prompt 能搞定 → 不需要微调

如果你遇到了"微调后通用能力退化"的问题,数据混合是目前比较靠谱的解法。


🔗 Amazon Nova Forge:aws.amazon.com/cn/nova/for…