6.13. Error Handling

6.13.1. 背景

在IPU推理的过程中, 如果推理应用或者IPU硬件产生异常, 会被 Poplar SDK 捕获并以抛出 Exception, 关于 Poplar 的 Exception 信息, 请参考 Poplar Exception.

PopRT 框架中引入了自动重启的功能, 当应用或者硬件发生可以通过 IPU_RESET 进行恢复的异常时, 如果该功能已启用, PopRT 将自动恢复. 如果遇到不可以通过 IPU_RESET 进行恢复的异常时, poplar::recoverable_runtime_error 将会按照上述文档中的错误重新抛出.

6.13.2. 相关的错误处理方式

错误处理中包含了对于不同类型错误的处理方法,包括 IPU Reset、Partition Reset 和 Full Reset.

在 PopRT runtime 中, 当用户配置 config.auto_reset=True 后, 如果在运行过程中出现 poplar::application_runtime_error 或可以用重置IPU来解决的 poplar::recoverable_runtime_error 错误, 系统会自动触发 IPU 的重启操作, 而不会影响到其他正在运行的 IPU.

如果在错误发生之前已经有请求到达 IPU, 那么在错误发生后等待的请求将会返回与 poplar 错误相关的错误信息. 这意味着这些请求可能无法正常完成, 并且可能需要进行相应的错误处理措施, 例如重新提交请求或进行错误处理逻辑.

而对于在错误发生之后到达 IPU 的请求, PopRT 将会返回类似于 "Resetting the IPU please try another time after resetting IPU successfully. 错误信息, 直到 IPU 重启成功. 这是因为 IPU 重启过程中, IPU 处于错误状态, 无法正常处理新的请求. 因此, 这些请求可能会受到错误状态的影响, 导致请求失败或被中断.

为了保证系统的稳定性和可靠性, 建议用户根据系统的需求和错误处理策略来配置 PopRT runtime。