SuperAPI AI 工具集

finetuning

智能体与模型

查看项目

更新于 10-16 10:54

技能介绍

用途

该技能在用户希望微调基础模型时,生成用于 SageMaker 无服务器训练作业的代码。触发场景包括用户说出“start training”“fine-tune my model”“I'm ready…”等。

前置条件

开始前需验证:

  • 存在 use_case_spec.md 文件;若缺失,须先激活 use-case-specification 技能再继续,不得在未激活该技能的情况下主动提出创建用例规格。
  • 已选定微调技术(SFT、DPO、RLVR、RLAIF,或面向 Nova 的 CPT/RFT)与基础模型;若缺失,须激活 model-selection 和/或 finetuning-technique 技能补齐,不得当场给出建议。
  • 已确定 SageMakerHub 上可用的基础模型名称;只能使用 model-selection 获取的模型名称,它可能与其他常见名称不同。
  • 已验证 SDK 环境(SDK 版本、区域、执行角色);若未完成,须先激活 sdk-getting-started 技能。
  • 训练数据集已上传至环境默认区域的存储桶;若未满足,帮助用户上传到正确的 S3。

主要能力

  • 代码生成:按微调策略选择模板(SFT → code_templates/sft.py;DPO → code_templates/dpo.py;RLVR → code_templates/rlvr.py;RLAIF 内置奖励 → code_templates/rlaif_builtin.py;RLAIF 自定义提示 → code_templates/rlaif_custom_prompt.py)。模板为 Python 文件,以 # Cell N: Label 注释标记分节,按标记切分输出单元。严格遵循最小代码原则,使用模板中的导入与结构,不额外增加导入、不提前创建变量、保持缩进与 f-string 正确。
  • 配置自动生成:在 Setup & Credentials 单元填入 BASE_MODEL(使用上下文中的 SageMakerHub 模型名)与 MODEL_PACKAGE_GROUP_NAME(依据用例生成,小写、仅含字母数字与连字符、1-63 字符,模式 [a-zA-Z0-9](-*[a-zA-Z0-9]){0,62},例如 “Customer Support Chatbot” → customer-support-chatbot-v1)。
  • 模板条件化处理:若模型非 Meta/Llama(模型 ID 不以 meta- 开头),从配置单元省略 ACCEPT_EULA = False 行,从训练器调用省略 accept_eula=ACCEPT_EULA, 行;若为 Nova 系列,从 Configure Trainer 与 Hyperparameter Overrides 部分省略包含 max_epochs 或 lr_warmup_steps_ratio 的代码。
  • RLVR 奖励函数:询问用户是否已有奖励函数或需要协助创建;若已有,索取 SageMaker Hub Evaluator ARN,未注册为 Evaluator 则转入手工生成;若无则按 references/rlvr_reward_function.md 生成,再将其 ARN(或 evaluator.arn)写入 CUSTOM_REWARD_FUNCTION。
  • RLAIF 处理:读取 references/rlaif_guide.md 并遵循其说明。
  • EULA 审查与接受:从 references/eula_links.md 查许可证链接并展示给用户。OSS 模型表述为 “This model is licensed under {License}. Please review the license terms here: {URL}.”;Nova 模型表述为 “This model is subject to the AWS Service Terms: {URL}.”。若为 Meta/Llama,须询问 “Do you accept the license terms? (yes/no)”,用户确认后才将 ACCEPT_EULA 设为 True 并取消 accept_eula=ACCEPT_EULA 注释;拒绝则保持 False 并提示训练会失败。非 Meta 模型仅告知许可证,代码层面无需操作。不得在未经用户明确确认时将 ACCEPT_EULA 设为 True。

使用方式

生成代码后,可提供运行选项:

  • Notebook 模式:若有 run_cell 则提供运行单元格;否则提示用户逐单元格运行(需 ipykernel)。
  • 脚本模式:提供三个选项——留给用户自行运行 python scripts/[script_name];运行并等待完成(trainer.train(wait=True) 阻塞直到完成,报告最终状态);启动但不等待(将 wait=True 改为 wait=False 执行,报告训练作业名)。

检查状态:describe-training-job --training-job-name NAME 可查看 TrainingJobStatus、FailureReason、SecondaryStatusTransitions;完成后获取模型包 ARN:list-model-packages --model-package-group-name GROUP_NAME --sort-by CreationTime --sort-order Descending --max-results 1。

展示结果:参照 scripts/mlflow_reference.py 查询 MLflow 指标,以文本表呈现每个 epoch 的 loss(SFT 为 total_loss、val_eval_total_loss;DPO 为 rewards/margins;RLVR 为 critic/rewards/mean)。

训练进行中不得建议进入下游技能,也不得在训练完成前提议后续步骤;除非用户明确询问,不得展开后续步骤说明。

适用场景

需要基于 SageMaker 无服务器训练作业微调基础模型的场景。

限制

训练可能耗时数小时,取决于数据集与模型。不得在未激活对应技能时当场给出模型或技术建议。不得添加额外导入或偏离模板结构。若用户希望微调已定制过的模型,需遵循 references/continuous_customization.md。涉及 Nova 系列、Meta/Llama 模型时有特定代码调整与 EULA 要求,见上文。