使用直接偏好优化在SageMaker AI中定制Nova模型

本文详细介绍了如何在某中心的SageMaker AI平台上使用直接偏好优化(DPO)技术定制Nova基础模型,包括数据准备、训练流程、评估方法和部署步骤,显著提升了模型在特定业务场景下的表现。

使用直接偏好优化在SageMaker AI中定制Nova模型

在某中心纽约峰会上,推出了一套全面的模型定制能力,可用于Nova基础模型。这些能力作为现成配方在SageMaker AI上提供,可用于在整个模型训练生命周期中调整Nova Micro、Nova Lite和Nova Pro,包括预训练、监督微调和对齐。

解决方案概述

使用SageMaker训练作业的Nova配方工作流程包括以下步骤:

  1. 用户选择特定的Nova定制配方,提供全面的配置来控制训练参数、模型设置和分布式训练策略
  2. 用户向SageMaker AI控制平面提交API请求,传递Nova配方配置
  3. SageMaker使用训练作业启动脚本在托管计算集群上运行Nova配方
  4. 根据所选配方,SageMaker AI配置所需基础设施,编排分布式训练,并在完成后自动解除集群

业务用例实现

本文重点介绍如何调整Nova Micro模型以优化结构化函数调用,用于特定应用的代理工作流。该方法通过以下方式优化Nova模型:

  • F1分数提高81%
  • ROUGE指标提升高达42%
  • 使模型在客户支持AI助手、数字助理和电子商务等领域更高效

技术实现细节

数据准备

使用nvidia/When2Call数据集,该数据集提供:

  • 合成生成的用户查询
  • 工具选项
  • 基于真实场景的标注偏好

数据预处理步骤包括:

  1. 加载原始数据集
  2. 转换为Nova Micro要求的格式
  3. 分割为训练集和测试集

DPO训练

使用PyTorch Estimator类设置微调工作负载:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
estimator = PyTorch(
    output_path=f"s3://{bucket_name}/{job_name}",
    base_job_name=job_name,
    role=role,
    instance_count=instance_count,
    instance_type=instance_type,
    training_recipe=recipe,
    recipe_overrides=recipe_overrides,
    max_run=18000,
    sagemaker_session=sess,
    image_uri=image_uri,
    disable_profiler=True,
    debugger_hook_config=False,
)

模型评估

提供两种评估选项:

选项A:gen_qa任务评估

  • 评估响应准确性、精确度和模型推理质量
  • 可以使用自定义数据集并与基础模型比较结果

选项B:llm_judge任务评估

  • 使用LLM作为评判员评估模型性能
  • 比较自定义模型输出与基准输出

模型部署

使用CreateCustomModel API部署微调模型:

1
2
3
4
5
6
response = bedrock.create_custom_model(
    modelName=imported_model_name,
    modelSourceConfig={"s3DataSource": {"s3Uri": model_path}},
    roleArn=role,
    clientRequestToken="NovaRecipeSageMaker"
)

性能提升

评估结果显示微调模型在所有关键指标上均有显著提升:

指标 基础模型 微调模型 提升幅度
F1 0.26 0.46 81%
ROUGE-1 0.38 0.52 39%
ROUGE-2 0.28 0.40 42%

资源清理

为避免产生额外费用,建议:

  1. 删除未使用的SageMaker Studio资源
  2. 检查并停止所有运行中的训练作业
  3. 删除某中心Bedrock中的自定义模型部署
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计