Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Laden Sie die neueste Version des Windows SDK für Windows 11 herunter.
Installieren Sie das Windows SDK, um sicherzustellen, dass das Windows Performance Toolkit-Feature ausgewählt ist.
Überprüfen Sie die Installation, indem Sie überprüfen, ob
wpaexporter.exein 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.