triton-inference-server-ge-backend 排障指南:开启 Plog 日志定位 NPU 推理错误
2026/9/18 10:44:18 网站建设 项目流程

triton-inference-server-ge-backend 排障指南:开启 Plog 日志定位 NPU 推理错误

【免费下载链接】triton-inference-server-ge-backendge-backend基于triton inference server框架实现对接NPU生态,快速实现传统CV\NLP等模型的服务化。项目地址: https://gitcode.com/cann/triton-inference-server-ge-backend

本指南面向使用 CANN 开源仓库 triton-inference-server-ge-backend 在昇腾 NPU 上完成模型服务化的开发者。当 Triton Server 自身日志无法定位模型解析、编译或推理失败原因时,可通过本指南开启 CANN 的 Plog(算子/GE 侧详细日志),将日志落盘并检索ERROR字段,从而拿到报错的深层根因。读完本文,你将掌握 Plog 的核心概念、启动参数、标准输出重定向方法与 ERROR 检索排障流程。

一、什么时候需要 Plog:两层日志体系与排障场景

ge-backend 运行时的日志分为两层:

  1. Triton Server / backend 自身日志:由 backend 源码中的LOG_MESSAGE(TRITONSERVER_LOG_*)输出,负责记录 ACL 初始化、GE 初始化、图会话创建、模型加载、请求推理等框架侧事件(见 src/inference.cpp、src/model_instance_state.cpp、src/model_state.cpp)。
  2. CANN Plog 日志:来自昇腾 CANN 的 ACL/GE 等底层组件,信息粒度更细,包含算子构建、图融合(Fusion pass)、设备侧执行等过程,是判断“框架调用是否成功、底层为何失败”的关键证据。

当出现以下典型错误时,仅凭框架日志往往只能看到“失败的结果”,看不到“失败的原因”,此时就应打开 Plog 查看详细原因。这些场景在仓库的问题定位.md 中均有明确描述:

场景框架日志特征对应阶段
图解析问题aclgrphParseONNX execute failed, ret is: xxxxxONNX 图解析(常见原因为未自行导出、使用官方镜像、输入输出字段不一致)
编译问题session_->CompileGraph failed, ret is: xxxxxGE 图编译
推理问题execute model failed, ret is: xxxxx模型执行推理

这三类错误的日志文案在源码中均有对应实现,例如:

  • model_instance_state.cpp 中aclInit失败会输出aclInit failed, ret is: ...
  • model_instance_state.cpp 中ge::GEInitialize失败会输出GEInitialize failed.
  • model_instance_state.cpp 中会话创建失败会输出Create session failed.

框架日志给出的是“哪一步失败、返回码是多少”,而 Plog 会继续向下钻取,给出底层算子/图引擎的具体报错。

二、Plog 是什么:功能定位与默认存储路径

Plog 日志主要用于记录系统运行过程及异常信息,帮助用户快速定位系统运行过程中出现的问题,以及开发过程中的程序调试问题。开发者可通过环境变量控制日志的落盘路径以及日志级别等信息。

默认情况下,Plog 日志会写入默认存储路径$HOME/ascend/log。其中:

  • $HOME为运行 tritonserver 进程的用户的 home 目录;
  • 日志按模块、进程与时间组织落盘,便于留存与回溯。

Plog 日志内容量大、信息细,默认落盘后不方便实时观察;为了方便调试,官方推荐将 Plog 打印到标准输出(stdout)中,再配合 shell 重定向将输出保存到文件,即可兼顾“实时可见”与“持久化留存”。详细的官方参数说明可参见昇腾官方文档中关于环境变量的章节(原文档中给出的链接)。

三、启动方法:两个环境变量 + 输出重定向

3.1 通过环境变量开启 Plog

在启动 tritonserver 之前,先通过环境变量完成两件事:将 Plog 重定向到标准输出调整日志级别

export ASCEND_SLOG_PRINT_TO_STDOUT=1 export ASCEND_GLOBAL_LOG_LEVEL=1

参数含义如下:

环境变量取值作用
ASCEND_SLOG_PRINT_TO_STDOUT1表示开启,0表示关闭将 CANN Plog 日志输出到标准输出(stdout),便于与 Triton 日志一同捕获
ASCEND_GLOBAL_LOG_LEVEL0~3,级别从低到高控制 Plog 日志级别:级别越低输出越详细,1为 INFO 级别,可覆盖正常启动信息与异常信息

提示:级别0(DEBUG)输出最为详尽,但数据量极大,通常用于深挖算子级细节;日常排障使用1(INFO)即可看到足够多的上下文。更完整的取值与级别定义请以昇腾官方文档为准。

3.2 启动 tritonserver 并重定向日志

在启动脚本后添加重定向,将标准输出写入plog.log文件:

/opt/tritonserver/bin/tritonserver --model-repository {/path/to/models} >plog.log

其中:

  • /opt/tritonserver/bin/tritonserver为 Triton Server 可执行文件路径(AscendHub 镜像中已预置,参考快速入门.md 的说明);
  • --model-repository {/path/to/models}指定模型仓库目录,需替换为实际路径,例如仓库示例模型目录 example/resnet;
  • >plog.log将 stdout(含 Plog)重定向到当前目录下的plog.log文件。

执行后,Plog 日志会与 Triton 日志一并写入plog.log。由于 Plog 日志量较大,建议启动主进程时务必把输出重定向至文件,避免终端刷屏导致关键信息丢失。

四、成功启动结果:认识 Plog 日志格式

打开 Plog 后,若服务正常启动,输出中会包含类似下图的 Plog 日志:

从上图可以直观认识 Plog 日志的典型格式,一条日志通常包含以下字段:

  • 时间戳:精确到毫秒,例如2025-10-23 03:36:34.747,用于对齐事件时序;
  • 进程信息PID=32328与进程类型(如python),用于区分日志来源进程;
  • 日志级别:如INFO(正常启动/注册信息)、ERROR(异常信息);
  • 模块/阶段:如type:[...] stage:[STAGE_BUILD],表明当前处于 GE 的哪个构建阶段;
  • 核心内容:如Fusion pass[trans_matmul_bias] has been registered,说明对应融合算子已在构建阶段成功注册。

这类INFO级别的 Fusion pass 注册日志属于正常启动信息,表明 GE 已完成图优化算子的注册,可以据此判断底层 GE 初始化、建图流程已正常推进。

五、在 plog.log 中查找 ERROR:定位根因的标准动作

服务启动或推理失败后,在保存好的plog.log中检索ERROR字段,即可快速定位具体报错原因:

grep -n "ERROR" plog.log

也可配合上下文查看报错前后的相关日志,帮助还原出错现场:

grep -n -C 5 "ERROR" plog.log

结合问题定位.md 的定位思路,完整排障动作如下:

  1. 开启 Plog 环境变量并重定向启动 tritonserver,复现问题;
  2. plog.log中搜索ERROR,拿到底层具体报错;
  3. 对照错误所属阶段判断问题类型:
    • 图解析阶段报错(对应框架日志aclgrphParseONNX execute failed),重点排查 ONNX 文件是否自行导出、输入输出字段是否与模型一致;
    • 编译阶段报错(对应session_->CompileGraph failed),重点排查图编译相关配置;
    • 推理阶段报错(对应execute model failed),需进一步结合 client 端日志核对模型名称、版本、input/output 配置(参考 example/client.py)。
  4. 若精度异常而非进程报错,可尝试--backend-config=npu_ge,session.ge.exec.precision_mode_v2="origin"对比精度(默认插件使用 fp16 推理),详见问题定位.md。

六、注意事项与配套工具

6.1 使用建议

  • 日志量大:Plog 日志较多,建议启动主进程时将输出重定向至文件(如>plog.log),避免终端缓冲丢失早期日志;
  • 及时关闭:排障完成后,建议取消ASCEND_SLOG_PRINT_TO_STDOUT=1与较低日志级别,恢复默认落盘行为,避免持续产生大体积日志拖累推理性能;
  • 版本对齐:不同 CANN 版本的环境变量行为与日志内容可能存在差异,具体取值范围以当前环境的昇腾官方文档为准。

6.2 与其它定位工具的分工

Plog 侧重于“日志级”根因定位,仓库中还提供了两个与之配套的底层诊断工具,遇到不同问题时可按需组合使用:

  • DumpGE 使用方法:通过--backend-config=npu_ge,dump_graph="1"导出 GE 图,查看每一步融合/优化过程,用于排查成图阶段问题;
  • Profiling 使用方法:通过 profiling 采集算子执行情况,用于性能瓶颈分析。

典型流程是:先用 Plog 定位“哪里报错、为什么报错”,再用 DumpGE 分析图结构与融合过程,最后用 Profiling 评估算子执行效率——三者共同构成完整的问题定位 与性能调优方法论 工具链。

七、小结

Plog 是 triton-inference-server-ge-backend 对接 CANN 生态后排障的关键手段。核心操作只需三步:

export ASCEND_SLOG_PRINT_TO_STDOUT=1 export ASCEND_GLOBAL_LOG_LEVEL=1 /opt/tritonserver/bin/tritonserver --model-repository {/path/to/models} >plog.log grep -n "ERROR" plog.log

通过将 Plog 重定向到标准输出并落盘、检索ERROR字段,即可穿透框架层日志,直达 GE/ACL 底层根因,配合仓库中的问题定位.md 流程即可完成绝大多数 NPU 推理场景的错误定位。

【免费下载链接】triton-inference-server-ge-backendge-backend基于triton inference server框架实现对接NPU生态,快速实现传统CV\NLP等模型的服务化。项目地址: https://gitcode.com/cann/triton-inference-server-ge-backend

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询