Acquisire i log di Windows ML

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.

  1. Scaricare la versione più recente di Windows SDK per Windows 11.

  2. Installare Windows SDK, assicurandosi che sia selezionata la funzionalità Windows Performance Toolkit .

  3. Verificare l'installazione verificando che wpaexporter.exe esista 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.

Vedere anche