Erfassen von Windows ML-Protokollen

In diesem Leitfaden werden Sie durch die Erfassung von Windows ML-Diagnosedaten mithilfe der Ereignisablaufverfolgung für Windows (ETW) und das Generieren von Ausführungsprotokollen geführt. Diese Protokolle sind nützlich für:

  • Debuggen von Modelllade- und Inferenzproblemen
  • Grundlegendes zur Auswahl und zum Verhalten des Ausführungsanbieters (EP)
  • Identifizieren von Treiber- und Hardwarekompatibilitätsproblemen
  • Teilen detaillierter Diagnosedaten mit dem Windows ML-Team

Voraussetzungen

  • Administratorrechte (nur für die Installation des Windows Performance Toolkits erforderlich)
  • PowerShell 5.1 oder höher
  • Windows 10, Version 1903 oder höher (empfohlen)
  • Eine Anwendung, die Windows ML verwendet, oder ein Testfall zum Tracing

Schritt 1: Herunterladen der erforderlichen Dateien

Laden Sie die folgenden Dateien aus dem Ordner "WindowsML/capture-logs " auf GitHub herunter:

Datei Description
Get-WinMLRundown.ps1 PowerShell-Skript zum Generieren von Ausführungsprotokollen
WinML.wprp WPR-Profil zur Erfassung von Windows ML-Diagnosedaten
WindowsMLProfile.wpaProfile WPA-Profil für die Verarbeitung von ETL-Dateien

Tipp

Um eine Datei von GitHub herunterzuladen, klicken Sie auf den Link, um die Datei zu öffnen, und klicken Sie dann oben rechts in der Dateiansicht auf die Downloadschaltfläche .

Speichern Sie alle drei Dateien im selben Ordner. In den folgenden Schritten führen Sie Befehle aus diesem Ordner aus.

Schritt 2: Installieren des Windows Performance Toolkits

Das Windows Performance Toolkit ist Teil des Windows SDK für Windows 11 und enthält wpaexporter.exe, das zum Verarbeiten von ETL-Dateien erforderlich ist.

  1. Laden Sie die neueste Version des Windows SDK für Windows 11 herunter.

  2. Installieren Sie das Windows SDK, um sicherzustellen, dass das Windows Performance Toolkit-Feature ausgewählt ist.

  3. Überprüfen Sie die Installation, indem Sie überprüfen, ob wpaexporter.exe in einem der folgenden Pfade vorhanden ist:

    • %ProgramFiles%\Windows Kits\10\Windows Performance Toolkit\wpaexporter.exe
    • %ProgramFiles(x86)%\Windows Kits\10\Windows Performance Toolkit\wpaexporter.exe

Schritt 3: Öffnen von PowerShell als Administrator

Öffnen Sie PowerShell als Administrator (erforderlich für ETW-Vorgänge), und navigieren Sie zu dem Ordner, der die erforderlichen Dateien enthält.

Schritt 4: Starten der ETW-Ablaufverfolgung mit WPR

Hinweis

Wenn Sie bereits über eine ETL-Datei verfügen, fahren Sie mit Schritt 7 fort: Generieren von Ausführungsprotokollen.

Verwenden Sie windows Performance Recorder (WPR) mit dem Windows ML-spezifischen Profil, um Diagnosedaten zu erfassen.

Starten Sie die Ablaufverfolgung mit dem Windows ML-Profil:

wpr -start .\WinML.wprp -filemode

Schritt 5: Ausführen der Anwendung

Wenn die Ablaufverfolgung aktiv ist, führen Sie Ihre Anwendung oder Ihr Testszenario aus, das Windows ML verwendet.

Von Bedeutung

Halten Sie die Ablaufverfolgungssitzung so kurz wie möglich, um die ETL-Dateigröße und die Verarbeitungszeit zu minimieren.

Schritt 6: Beenden der ETW-Ablaufverfolgung

Beenden Sie die Tracing-Sitzung, und speichern Sie die ETL-Datei:

wpr -stop winml_trace.etl

Im aktuellen Verzeichnis wird winml_trace.etl erstellt, welches alle erfassten Ereignisse enthält.

Schritt 7: Generieren von Ausführungsprotokollen

Verarbeiten Sie die ETL-Datei, um lesbare Rundownprotokolle zu generieren:

.\Get-WinMLRundown.ps1 -EtlFilePath "winml_trace.etl" -WpaProfilePath ".\WindowsMLProfile.wpaProfile" -OutputFolder ".\rundown_output"

Hinweis

Wenn ein Fehler angezeigt wird, dass das Skript nicht ausgeführt werden kann, da es nicht digital signiert ist, ändern Sie die Ausführungsrichtlinie für die aktuelle PowerShell-Sitzung, und führen Sie dann den obigen Befehl erneut aus:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

Skriptparameter

Parameter Description
-EtlFilePath Pfad zur in Schritt 6 erfassten ETL-Datei.
-WpaProfilePath Pfad zum WPA-Profil (verwenden Sie die bereitgestellte WindowsMLProfile.wpaProfile Datei).
-OutputFolder Verzeichnis, in dem das Ablaufprotokoll erstellt wird.

Ausgabedateien

Das Skript generiert die Ausgabe im angegebenen -OutputFolder Verzeichnis (z. B rundown_output. ):

  • rundown_output\WinmlRundown.log – Hauptausführungsprotokoll mit kategorisierten Diagnosedaten.
  • Temporäre CSV-Dateien – automatisch nach der Verarbeitung bereinigt.

Grundlegendes zum Rundownprotokoll

Die generierte WinmlRundown.log enthält organisierte Diagnosedaten, die nach Prozessen gruppiert sind.

Prozessorganisation

Jeder Abschnitt beginnt mit einer Prozesskopfzeile:

Process: YourApplication.exe (12345)
----------------------------------------

Ereigniskategorien

ONNX-Runtime-Version

Onnx Version (2024/01/15 10:30:45.123):
    Runtime Version = 1.23.2
    Is Redist = true
    Framework Name = WinAI

Zeigt die ONNX-Runtime-Version und -Konfiguration an. Gibt an, ob die weiterverteilbare Version verwendet wird und das Framework identifiziert.

WindowsAppSDK.ML Version

WindowsAppSDK.ML Version (2024/01/15 10:30:45.100):
    Version = 2.0.0

Zeigt die Windows App SDK-Windows ML-Version an, die von der Anwendung verwendet wird. Doppelte Einträge mit derselben Version werden unterdrückt.

Treiberinformationen

Driver Info (2024/01/15 10:30:45.200):
    Device Class = GPU
    Driver Name = 
    Driver Version = 

Hardware- und Treiberinformationen für GPU/NPU-Geräte. Dies ist wichtig für die Diagnose von Kompatibilitäts- und hardwarespezifischen Problemen des Ausführungsanbieters.

Sitzungserstellung

Session Creation (2024/01/15 10:30:45.456):
    Schema Version = 0
    Session ID = 1
    IR Version = 8
    ORT Programming Projection = 1
    Using FP16 = false
    Model Weight Type = Float32
    Model Graph Hash = abc123...
    Model Weight Hash = def456...
    EP ID = CPUExecutionProvider

Zeigt Details zur Lade- und Sitzungsinitialisierung des Modells an, einschließlich Ausführungsanbieterauswahl, Modellmerkmale (Genauigkeit, Gewichtungstyp) und eindeutigen Bezeichnern für das Debuggen.

Automatische EP-Auswahl

EP Auto Selection (2024/01/15 10:30:45.500):
    Schema Version = 0
    Session ID = 1
    Selection Policy = PREFER_NPU
    Requested EP = CPUExecutionProvider
    Available EP = DmlExecutionProvider, CPUExecutionProvider

Zeigt den Auswahlprozess für den Ausführungsanbieter, einschließlich der angeforderten Optionen im Vergleich zu den verfügbaren Optionen. Die Auswahlrichtlinie bestimmt die Priorisierung.

Registrierte Anbieter

Registered Providers (2024/01/15 10:30:45.100):
    PackageFamilyName = 

Listet verfügbare Ausführungsanbieterpakete auf. Nützlich für die Diagnose fehlender EP-Installationen.

Fehlerereignisse

====================WINML ONNX ERROR===================
WinML ONNX Error (2024/01/15 10:30:46.000):
    Schema Version = 1
    HRESULT = 0x80070057
    Session ID = 42
    Error Code = INVALID_ARGUMENT
    Error Category = SYSTEM
    Error Message = Invalid input tensor dimensions
    File = ModelBinding.cpp
    Function = BindInput
    Line = 245

Enthält detaillierte Fehlerinformationen mit Quellcodekontext, HRESULT-Codes und Fehlerdetails auf Systemebene.

Problembehandlung

"wpaexporter.exe nicht gefunden"

Führen Sie die Installationsschritte in Schritt 2 aus, um das Windows Performance Toolkit zu installieren. Überprüfen Sie die Installation, indem Sie die in diesem Schritt angezeigten Pfade überprüfen. Stellen Sie sicher, dass Sie PowerShell während der Installation als Administrator ausgeführt haben.

Zugriff verweigert" beim Starten von WPR

Führen Sie PowerShell als Administrator aus. ETW-Vorgänge erfordern erhöhte Berechtigungen.

Skript ist nicht digital signiert

Wenn eine Fehlermeldung angezeigt wird, die Get-WinMLRundown.ps1 nicht ausgeführt werden kann, da sie nicht digital signiert ist, ändern Sie die Ausführungsrichtlinie für die aktuelle PowerShell-Sitzung:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

Versuchen Sie dann erneut, Schritt 7 auszuführen.

Große ETL-Dateien

Halten Sie Ablaufverfolgungssitzungen kurz. Der -filemode-Parameter wird verwendet, um Ablaufverfolgungen direkt auf die Festplatte zu schreiben.

Tipps

  • Minimieren Sie die Ablaufverfolgungsdauer: Starten Sie die Ablaufverfolgung direkt vor dem Ausführen Ihres Szenarios, und beenden Sie sie unmittelbar danach.
  • Verwenden Sie bestimmte Szenarien: Konzentrieren Sie sich auf die Wiedergabe bestimmter Probleme und nicht auf die allgemeine Anwendungsverwendung.
  • Saubere Umgebung: Schließen Sie unnötige Anwendungen, um das Rauschen in Traces zu reduzieren.

Siehe auch