Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida illustra come acquisire i dati di diagnostica di Windows ML usando Event Tracing for Windows (ETW) e generare log di rundown. Questi log sono utili per:
- Debug di problemi di caricamento e inferenza del modello
- Informazioni sulla selezione e il comportamento del fornitore di esecuzione
- Identificazione dei problemi di compatibilità hardware e driver
- Condivisione di dati di diagnostica dettagliati con il team di Windows ML
Prerequisiti
- Privilegi di amministratore (necessari per l'installazione di Windows Performance Toolkit e per l'avvio/arresto della traccia ETW con WPR)
- PowerShell 5.1 o versione successiva
- Windows 10 versione 1903 o successiva (scelta consigliata)
- Un'applicazione che usa Windows ML o un test case per tracciare
Passaggio 1: Scaricare i file necessari
Scaricare i file seguenti dalla cartella WindowsML/capture-logs in GitHub:
| File | Descrzione |
|---|---|
Get-WinMLRundown.ps1 |
Script di PowerShell per la generazione di log di rundown |
WinML.wprp |
Profilo WPR per l'acquisizione dei dati di diagnostica di Windows ML |
WindowsMLProfile.wpaProfile |
Profilo WPA per l'elaborazione di file ETL |
Suggerimento
Per scaricare un file da GitHub, fare clic sul relativo collegamento per aprire il file, quindi fare clic sul pulsante di download in alto a destra della visualizzazione file.
Salvare tutti e tre i file nella stessa cartella. I comandi verranno eseguiti da questa cartella nei passaggi seguenti.
Passaggio 2: Installare Windows Performance Toolkit
Windows Performance Toolkit fa parte di Windows SDK per Windows 11 e contiene wpaexporter.exe, che è necessario per elaborare i file ETL.
Scaricare la versione più recente di Windows SDK per Windows 11.
Installare Windows SDK, assicurandosi che sia selezionata la funzionalità Windows Performance Toolkit .
Verificare l'installazione verificando che
wpaexporter.exeesista in uno dei percorsi seguenti:%ProgramFiles%\Windows Kits\10\Windows Performance Toolkit\wpaexporter.exe%ProgramFiles(x86)%\Windows Kits\10\Windows Performance Toolkit\wpaexporter.exe
Passaggio 3: Aprire PowerShell come amministratore
Aprire PowerShell come amministratore (obbligatorio per le operazioni ETW) e passare alla cartella contenente i file necessari.
Passaggio 4: Avviare il tracciamento ETW con WPR
Annotazioni
Se si dispone già di un file ETL, passare al passaggio 7: Generare i log di rundown.
Usare Windows Performance Recorder (WPR) con il profilo specifico di Windows ML per acquisire i dati di diagnostica.
Iniziare a tracciare con il profilo di Windows ML:
wpr -start .\WinML.wprp -filemode
Passaggio 5: Eseguire l'applicazione
Con il tracciamento attivo, esegui l'applicazione che usa Windows ML o il tuo scenario di test.
Importante
Mantenere la sessione di traccia il più breve possibile per ridurre al minimo le dimensioni e il tempo di elaborazione dei file ETL.
Passaggio 6: Interrompere la traccia ETW
Arrestare la sessione di traccia e salvare il file ETL:
wpr -stop winml_trace.etl
Verrà creata winml_trace.etl nella directory corrente contenente tutti gli eventi acquisiti.
Passaggio 7: Generare i log di sintesi
Elaborare il file ETL per generare log di rundown leggibili:
.\Get-WinMLRundown.ps1 -EtlFilePath "winml_trace.etl" -WpaProfilePath ".\WindowsMLProfile.wpaProfile" -OutputFolder ".\rundown_output"
Annotazioni
Se viene visualizzato un errore che indica che lo script non può essere eseguito perché non è firmato digitalmente, modificare i criteri di esecuzione per la sessione di PowerShell corrente e quindi eseguire nuovamente il comando precedente:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Parametri dello script
| Parametro | Descrzione |
|---|---|
-EtlFilePath |
Percorso del file ETL acquisito nel passaggio 6. |
-WpaProfilePath |
Percorso del profilo WPA (usare il file fornito WindowsMLProfile.wpaProfile ). |
-OutputFolder |
Directory in cui verrà creato il log di rundown. |
File di output
Lo script genera l'output nella directory specificata -OutputFolder , ad esempio rundown_output:
-
rundown_output\WinmlRundown.log- Log di riepilogo principale con dati di diagnostica classificati. - File CSV temporanei : ripuliti automaticamente dopo l'elaborazione.
Comprensione del log di rundown
L'oggetto generato WinmlRundown.log contiene dati diagnostici organizzati e raggruppati per processo.
Organizzazione dei processi
Ogni sezione inizia con un'intestazione di processo:
Process: YourApplication.exe (12345)
----------------------------------------
Categorie di eventi
Versione del runtime ONNX
Onnx Version (2024/01/15 10:30:45.123):
Runtime Version = 1.23.2
Is Redist = true
Framework Name = WinAI
Mostra la versione e la configurazione del runtime ONNX. Indica se la versione ridistribuibile è in uso e identifica il framework.
versione WindowsAppSDK.ML
WindowsAppSDK.ML Version (2024/01/15 10:30:45.100):
Version = 2.0.0
Mostra la versione di SDK per app di Windows di Windows ML usata dall'applicazione. Le voci duplicate con la stessa versione vengono eliminate
Informazioni sul driver
Driver Info (2024/01/15 10:30:45.200):
Device Class = GPU
Driver Name =
Driver Version =
Informazioni su hardware e driver per dispositivi GPU/NPU. Questo è fondamentale per la diagnosi della compatibilità del provider di esecuzione e dei problemi specifici dell'hardware.
Creazione di sessioni
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
Mostra i dettagli relativi al caricamento del modello e all'inizializzazione della sessione, tra cui la selezione del provider di esecuzione, le caratteristiche del modello (precisione, tipo di peso) e gli identificatori univoci per il debug.
Selezione automatica EP
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
Mostra il processo di selezione del provider di esecuzione, incluso ciò che è stato richiesto rispetto a ciò che è disponibile. I criteri di selezione determinano la definizione delle priorità.
Provider registrati
Registered Providers (2024/01/15 10:30:45.100):
PackageFamilyName =
Elenca i pacchetti del provider di esecuzione disponibili. Utile per diagnosticare le installazioni di EP mancanti.
Eventi di errore
====================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
Fornisce informazioni dettagliate sull'errore con il contesto del codice sorgente, i codici HRESULT e i dettagli degli errori a livello di sistema.
Risoluzione dei problemi
"wpaexporter.exe non trovato"
Seguire i passaggi di installazione descritti nel passaggio 2 per installare Windows Performance Toolkit. Verificare l'installazione controllando i percorsi visualizzati in tale passaggio. Assicurarsi di eseguire PowerShell come amministratore durante l'installazione.
"Accesso negato" all'avvio di WPR
Eseguire PowerShell come amministratore. Le operazioni ETW richiedono privilegi elevati.
Lo script non è firmato digitalmente
Se viene visualizzato un errore che Get-WinMLRundown.ps1 non può essere eseguito perché non è firmato digitalmente, modificare i criteri di esecuzione per la sessione di PowerShell corrente:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Provare quindi a eseguire di nuovo il passaggio 7 .
File ETL di grandi dimensioni
Mantenere brevi le sessioni di traccia. Il -filemode parametro viene usato per scrivere tracce direttamente su disco.
Suggerimenti
- Ridurre al minimo la durata della traccia: avviare la traccia subito prima di eseguire lo scenario e arrestarla immediatamente dopo.
- Usare scenari specifici: concentrarsi sulla riproduzione di problemi specifici anziché sull'utilizzo generale delle applicazioni.
- Ambiente pulito: chiudere le applicazioni non necessarie per ridurre il rumore nelle tracce.