Logging & Tracing
Inhalt
Developer Logging
ONNX Runtime verfügt über eine plattformübergreifende interne printf-Style-Protokollierung LOGS(). Diese Protokollierung kann in Produktions-Builds für einen Entwickler konfiguriert werden, über die API.
Es wird wahrscheinlich zu Leistungseinbußen kommen, wenn die Standard-Sink-Ausgabe (stdout) mit höheren Protokoll-Schweregraden verwendet wird.
log_severity_level
Python (unten) - C/C++ CreateEnv / OrtLoggingLevel - .NET/C#
sess_opt = SessionOptions()
sess_opt.log_severity_level = 0 // Verbose
sess = ort.InferenceSession('model.onnx', sess_opt)
Hinweis
Beachten Sie, dass log_verbosity_level eine separate Einstellung ist und nur in DEBUG benutzerdefinierten Builds verfügbar ist.
Tracing About
Tracing ist eine Obermenge des Loggings, insofern als Tracing
- Das zuvor erwähnte Logging einschließt
- Zusätzliche Tracing-Ereignisse hinzufügt, die strukturierter sind als printf-Style-Logging
- Kann in ein größeres Tracing-Ökosystem des Betriebssystems integriert werden, sodass
- Tracing von mehreren Systemen mit ONNX, Betriebssystem-Ebene und User-Mode-Software, die ONNX verwendet, kombiniert werden kann
- Zeitstempel sind hochauflösend und konsistent mit anderen getracten Komponenten
- Kann mit hoher Leistung bei einer großen Anzahl von Ereignissen pro Sekunde protokolliert werden.
- Ereignisse werden nicht über stdout protokolliert, sondern normalerweise über eine Hochleistungs-In-Memory-Sink
- Kann zur Laufzeit dynamisch aktiviert werden, um Probleme, auch in Produktionssystemen, zu untersuchen
Derzeit wird nur Tracelogging in Kombination mit Windows ETW unterstützt, obwohl TraceLogging plattformübergreifend ist und Unterstützung für die Instrumentierungssysteme anderer Betriebssysteme hinzugefügt werden könnte.
Tracing - Windows
Es gibt 2 Haupt-ONNX Runtime TraceLogging-Provider, die zur Laufzeit aktiviert werden können und mit Windows ETW erfasst werden können.
Quickstart Tracing mit WPR
Unter Windows können Sie Windows Performance Recorder (WPR) verwenden, um eine Spur zu erfassen. Die beiden nachstehend behandelten Provider sind in diesen WPR-Profilen bereits konfiguriert.
- Laden Sie ort.wprp und etw_provider.wprp herunter (diese könnten später auch kombiniert werden).
wpr -start ort.wprp -start etw_provider.wprp
echo Repro the issue allowing ONNX to run
wpr -stop onnx.etl -compress
ONNXRuntimeTraceLoggingProvider
Seit ONNX Runtime 1.17 kann der ONNXRuntimeTraceLoggingProvider ebenfalls aktiviert werden.
Dies ermöglicht dynamisches Tracing mit hoher Leistung der zuvor erwähnten LOGS()-Macro-Printf-Protokolle, die bisher nur durch log_severity_level gesteuert wurden. Ein Benutzer oder Entwickler, der mit diesem Provider traced, kann den Protokollschweregrad dynamisch auf das ETW-Level setzen, das er zur Laufzeit angibt.
Provider-Name: ONNXRuntimeTraceLoggingProvider
Provider-GUID: 929DD115-1ECB-4CB5-B060-EBD4983C421D
Schlüsselwort: Logs (0x2) Schlüsselwort gemäß logging.h
Level: 1 (CRITICAL ) bis 5 (VERBOSE) gemäß TraceLoggingLevel
Microsoft.ML.ONNXRuntime
Der Provider Microsoft.ML.ONNXRuntime bietet strukturierte Protokollierung.
Provider-Name: Microsoft.ML.ONNXRuntime
Provider-GUID: 3a26b1ff-7484-7484-7484-15261f42614d
Schlüsselwörter: Mehrere gemäß logging.h
Level: 1 (CRITICAL ) bis 5 (VERBOSE) gemäß TraceLoggingLevel
Hinweis: Dieser Provider unterstützt ETW CaptureState (Rundown) zur Protokollierung des Zustands, z. B. wenn eine Spur gespeichert wird.
ORT 1.17 enthält neue Ereignisse für die Protokollierung von Session-Optionen und EP-Provider-Optionen.
Profiling
Microsoft.ML.ONNXRuntime kann auch Profiling-Ereignisse ausgeben. Dies wird in Profiling behandelt.
WinML
WindowsML verfügt über eigene Tracing-Provider, die zusätzlich zu den oben genannten Providern aktiviert werden können.
- Microsoft.Windows.WinML - d766d9ff-112c-4dac-9247-241cf99d123f
- Microsoft.Windows.AI.MachineLearning - BCAD6AEE-C08D-4F66-828C-4C43461A033D