torch.onnx diagnostics信息¶
概述¶
注意:此功能尚在开发中,可能会有所更改。
目标是改进诊断功能,以帮助用户调试并优化其模型导出到 ONNX 的过程。
诊断信息以机器可解析的静态分析结果交换格式 (SARIF)发出。
一种更清晰、结构化的方式来添加新规则并跟踪诊断规则。
作为未来改进诊断功能的基础。
诊断规则¶
- DIAGSYS0001:arg-format-too-verbose
- FXE0001:fx-tracer-success
- FXE0002:fx-tracer-failure
- FXE0003:fx-frontend-aotautograd
- FXE0004:fx-pass-convert-neg-to-sigmoid
- FXE0005:fx-ir-add-node
- FXE0006:atenlib-symbolic-function
- FXE0007:atenlib-fx-to-onnx
- FXE0008:fx-node-to-onnx
- FXE0009:fx-frontend-dynamo-make-fx
- POE0001:node-missing-onnx-shape-inference
- POE0002:missing-custom-symbolic-function
- POE0003:missing-standard-symbolic-function
- POE0004:operator-supported-in-newer-opset-version
API 参考¶
- class torch.onnx._internal.diagnostics.ExportDiagnostic(*args, frames_to_skip=1, cpp_stack=False, **kwargs)[source]¶
所有导出诊断的基类。
此类用于表示所有导出诊断信息。它是 infra.Diagnostic 的一个子类,并添加了额外的方法,以向诊断信息中添加更多内容。
- class torch.onnx._internal.diagnostics.infra.DiagnosticEngine[source]¶
基于 SARIF 的通用诊断引擎。
这个类是诊断功能的主要接口。它管理诊断上下文的创建。 DiagnosticContext 提供了记录诊断信息的入口点。 有关更多详细信息,请参见 infra.DiagnosticContext。
示例
步骤 1:创建一组规则。 >>> rules = infra.RuleCollection.custom_collection_from_list( … “CustomRuleCollection”, … [ … infra.Rule( … id=”r1”, … name=”rule-1”, … message_default_template=”Mising xxx”, … ), … ], … )
步骤 2:创建诊断引擎。 >>> engine = DiagnosticEngine()
步骤 3:启动一个新的诊断上下文。 >>> with engine.create_diagnostic_context("torch.onnx.export", version="1.0") as context: … …
步骤 4:在代码中添加诊断信息。 … context.diagnose(rules.rule1, infra.Level.ERROR)
步骤 5:之后,获取 SARIF 日志。 >>> sarif_log = engine.sarif_log()