You need to enable JavaScript to run this app.
文档中心
火山方舟

火山方舟

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