强化学习精调依赖开发者自定义的 Plugin 函数(Rollout 与 Grader),这类函数在独立的 FaaS 环境中运行,是精调任务失败的高发环节。本文帮助您在任务失败时,按报错类型快速定位原因、区分是平台问题还是自定义代码/数据问题,并借助控制台的 Plugin 管理、资源监控与轨迹日志能力完成排查。
Plugin 函数的开发规范、可观测性配置与测试方法见 强化学习最佳实践,本文只聚焦异常发生后的定位与恢复。 任务失败时,控制台会在精调任务详情页展示失败状态与后端返回的报错信息。请先根据报错类型判断问题归属,再采取对应处理方式。
按问题归属可归纳为三类:
- 平台问题:internal error / unknown error,无需您处理,等待自动重试,或 提交工单 即可。
- Plugin 问题:Call plugin error(含超时、EOF、500、FaaS OOM 等),由自定义函数触发,需结合 Plugin 日志排查。
- 数据问题:Invalid data / Invalid value / Loss nan,需检查数据文件与格式。
Call plugin error 是 Plugin 调用失败的统称,后端会在错误信息中携带更具体的原因。常见子类及处理建议如下:
当任务包含自定义 Plugin 时,精调任务详情页会显示 Plugin 标签页,集中展示每个 Plugin 的状态、代码、监控与日志,是排查 Call plugin error 的主要入口。
Plugin 状态包括 等待中、运行中、完成 和 失败。当状态为 失败 时,代码页面会展示对应的失败原因说明,可据此定位是超时、内存溢出还是函数内部报错。
Plugin 标签页以只读方式展示本次任务实际运行的 Plugin 函数代码,便于您核对提交的版本是否正确。您也可以通过 下载代码 操作,将代码保存到本地进一步排查。
通过 Plugin 选择器 切换不同 Plugin,可查看其实时资源监控指标,用于判断失败是否由资源瓶颈引起。首屏展示的核心指标包括:
监控支持查看过去 1 小时、3 小时、6 小时、12 小时、3 天、7 天及自定义时间范围的数据,默认每 1 分钟自动刷新,也支持手动刷新。
注意:Plugin 运行结束(完成或失败)后,监控数据会在留存期限到期后被回收,届时将无法查看。请在任务结束后及时排查。
日志是定位 Call plugin error 最直接的手段。在 Plugin 标签页点击 查看日志,可跳转到精调详情页的 日志 > 自定义 Plugin 日志,查看您在 Rollout 和 Grader 函数中通过 logger 记录的关键信息。
除按 Plugin 维度排查外,您还可以从单条训练轨迹的视角定位问题。在轨迹分析中:
- 点击某条轨迹后,可查看该轨迹执行时的日志信息,包含时间与日志详情。
- 失败(failed)和 丢弃(discard)状态的轨迹默认展开日志,成功的轨迹可手动展开。
- 日志区域提供 Plugin 筛选器,支持下拉切换不同 Plugin 查看对应日志。
- 支持全屏查看轨迹详情与日志,全屏模式下仍可上下切换轨迹。
Plugin 异常大多可以在提交任务前发现。为避免消耗较高的强化学习任务因代码或数据问题失败,建议:
- 提交前完成测试:依次完成本地测试与在线 FaaS 测试,验证 Rollout、Grader 函数的功能、交互逻辑与并发性能。
- 提前配置可观测性:在测试 Plugin 函数或提交任务前,先完成轨迹分析、自定义日志与效果指标的配置,便于问题发生时快速定位。
- 规范并发与错误处理:协程并发函数避免同步长阻塞调用;对工具调用失败、异常评分等分支做明确的错误处理与兜底。