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.
Windows Machine Learning (ML) consente agli sviluppatori di app Windows C#, C++e Python di eseguire modelli ONNX in locale nell'intera gamma di hardware pc Windows, incluse CPU, GPU e NPU. Windows ML astrae i provider di hardware ed esecuzione, in modo da poter concentrarsi sulla scrittura del codice. Inoltre, Windows ML viene aggiornato automaticamente per supportare le NPU, le GPU e le CPU più recenti man mano che vengono rilasciate.
Importante
Le API di Windows ML sono attualmente sperimentali e non sono supportate per l'uso in ambienti di produzione. Le app che provano queste API non devono essere pubblicate in Microsoft Store.
Versioni di Windows supportate
Windows ML funziona su tutti i PC Windows 11 che eseguono la versione 24H2 (build 26100) o versione successiva.
Hardware supportato
Windows ML funziona su tutti gli hardware pc x64 e ARM64, anche i PC che non dispongono di NPU o GPU, il che significa che è possibile raggiungere centinaia di milioni di dispositivi Windows sul mercato. Ciò potrebbe significare mantenere leggeri i carichi di lavoro; ma ci sono iGPU che sono abbastanza potenti per gestire carichi di lavoro pesanti.
Conversione di modelli in ONNX
È possibile convertire i modelli da altri formati a ONNX in modo da poterli usare con Windows ML. Per altre informazioni, vedere la documentazione di Visual Studio Code AI Toolkit su come convertire i modelli nel formato ONNX .
Quali sono le sfide affrontate da Windows ML?
Diversità hardware
In qualità di sviluppatore di intelligenza artificiale basato su Windows, la prima sfida affrontata da Windows ML è quella della diversità hardware. Sì, è un vantaggio dell'ecosistema Windows che gli utenti possono scegliere l'hardware più adatto a loro. Ma senza Windows ML, questo renderebbe difficile per te, come sviluppatore che crea esperienze di intelligenza artificiale, per supportare tutta la diversità hardware. Molte delle app leader di oggi eseguite in Windows scelgono di rilasciare solo un singolo fornitore di hardware alla volta. Solo intel; solo Qualcomm; solo AMD; solo GPU discrete per il momento. E questo limita notevolmente il numero di dispositivi in cui tali app sono in grado di essere eseguite.
Distribuzione delle dipendenze
A questo punto, c'è il problema di distribuire tutte le dipendenze necessarie. Per integrare esperienze di intelligenza artificiale nell'app, l'app deve consegnare e distribuire tre elementi.
- I modelli di intelligenza artificiale da eseguire.
- Runtime che consente di eseguire l'inferenza su tali modelli.
- Strumenti e driver specifici del fornitore che consentono al runtime scelto di comunicare con il silicio.
L'app necessita di questi elementi e deve anche essere gestita e aggiornata. Quando viene risolta una nuova versione del runtime o un bug critico, è necessario aggiornare l'app di conseguenza. Senza Windows ML, come sviluppatore di app, è necessario assumere la proprietà di tutte queste dipendenze. Sarebbero diventati parte della tua app, e l'onere di mantenere tutto ricadrebbe su di te.
Uso dell'hardware locale
E poi c'è il problema di mettere a funzionare l'hardware locale su cui è in esecuzione l'app. I carichi di lavoro di intelligenza artificiale devono essere eseguiti su CPU, GPU o NPU? Se si usano modelli di intelligenza artificiale diversi, quali sono i migliori su quali processori? Questo problema diventa rapidamente molto complesso. E senza Windows ML è necessario scrivere e mantenere la logica difficile che rileva prima di tutto ciò che è disponibile nel dispositivo corrente e quindi tenta di ottenere il massimo dalle prestazioni.
Windows ML, disponibile tramite Windows App SDK, risolve tutti questi problemi.
- Il runtime non deve trovarsi all'interno dell'app.
- Il provider di esecuzione (EP) viene selezionato automaticamente per gli utenti in base all'hardware disponibile. Gli override degli sviluppatori sono disponibili per la selezione.
- Windows ML gestisce le dipendenze di runtime, spostando il carico dall'app e trasferendolo su Windows ML stesso e gli EP.
- Windows ML consente di bilanciare il carico nel dispositivo client e sceglie l'hardware appropriato per l'esecuzione del carico di lavoro di intelligenza artificiale.
Panoramica dettagliata
Windows ML in Microsoft.Windows.AI.MachineLearning
funge da nucleo di inferenza dell'intelligenza artificiale della "Windows AI Foundry". Pertanto, se si usano le API di intelligenza artificiale Windows per accedere ai modelli integrati in Windows o si usa l'elenco crescente di modelli Foundry pronti all'uso con Foundry Local (vedere Introduzione a Foundry Local), è probabile che i carichi di lavoro di intelligenza artificiale in Windows ML vengano eseguiti senza neanche saperlo.
Se si stanno portando modelli personalizzati o se è necessario un elevato livello di controllo granulare sul modo in cui viene eseguita l'inferenza del modello, è possibile usare Windows ML direttamente chiamando le API. Vedere API di Windows ML (Microsoft.Windows.AI.MachineLearning).
Basato sul runtime ONNX
Windows ML è basato su una versione fork e specializzata del runtime ONNX. Producendo un tale effetto, si abilitano alcuni miglioramenti specifici di Windows che aumentano le prestazioni. È stato ottimizzato anche per i modelli QDQ ONNX standard, che consente di ottenere le migliori prestazioni di inferenza nel dispositivo locale senza dover ingrandire i modelli inutilmente.
ONNX Runtime comunica con il silicio tramite execution providers (EP), che fungono da livello di conversione tra il runtime e i driver hardware. Abbiamo preso il lavoro del provider di esecuzione realizzato con Windows Click to Do e NPU, lo abbiamo combinato con nuovi provider di esecuzione per GPU e lo abbiamo integrato in un unico framework Windows ML che ora mantiene pienamente la promessa di abilitare carichi di lavoro di intelligenza artificiale in grado di sfruttare qualsiasi hardware, inclusi CPU, GPU e NPU. Ogni tipo di processore è un cittadino di prima classe completamente supportato con i driver più recenti e i provider di esecuzione ONNX Runtime dei quattro principali fornitori di processori di intelligenza artificiale (AMD, Intel, NVIDIA e Qualcomm). Questi tipi di processore sono uguali: è sufficiente scrivere in Windows ML con modelli QDQ ONNX per ridimensionare in modo sicuro i carichi di lavoro di intelligenza artificiale in tutti i tipi di hardware.
Creazione di pacchetti e distribuzione
Windows ML viene distribuito come parte di Windows App SDK. Dopo aver aggiunto un riferimento a Windows App SDK nel progetto e aver installato l'app nel PC di un cliente:
- Il programma di avvio automatico di Windows App SDK garantisce che il runtime di Windows ML venga inizializzato correttamente nell'app.
- Windows ML rileva quindi l'hardware per il computer specifico in cui è installata l'app e scarica i provider di esecuzione appropriati necessari per tale PC.
Non è quindi necessario portare i propri provider di esecuzione nel pacchetto dell'app. Infatti, non è necessario preoccuparsi affatto dei provider di esecuzione o della spedizione di build personalizzate di runtime di intelligenza artificiale progettate specificamente per AMD o Intel o NVIDIA o Qualcomm o qualsiasi altra famiglia specifica di hardware. Chiami semplicemente le API di Windows ML, quindi esegui il feed in un modello formattato correttamente e ci prendiamo cura del resto, eseguendo automaticamente il provisioning di tutti gli elementi necessari nell'hardware di destinazione e mantenendo tutto aggiornato.
Il risultato è che semplifica notevolmente le dipendenze che è necessario gestire e preoccuparsi. Ed è reso possibile dal livello di interazione che abbiamo beneficiato con partner hardware come AMD, Intel, NVIDIA e Qualcomm. Questi partner continueranno a fornire provider di esecuzione per Windows ML e li inviano a Microsoft quando hanno aggiornamenti o nuovi siliconi che introducono sul mercato.
Microsoft certificherà tutti i nuovi provider di esecuzione per assicurarsi che non ci siano regressioni nell'accuratezza dell'inferenza. E poi ci assumeremo la responsabilità di distribuire tali EP nelle macchine di destinazione per conto dei fornitori di hardware e facilitare l'ecosistema di Windows ML nel suo complesso rimanendo sempre aggiornato.
Si tratta di un approccio diverso rispetto all'approccio adottato da tecnologie come DirectML e DirectX, in cui Microsoft astrae le API sui cambiamenti dell'ecosistema hardware. Con Windows ML, invece, stiamo cambiando il panorama per consentire ai fornitori di hardware di introdurre rapidamente e direttamente un silicio innovativo, con il supporto provider day-1 immediato per quell'hardware, man mano che arriva sul mercato.
Prestazioni
Le prestazioni sono più della pura velocità del clock a parete. Sì, molti carichi di lavoro di intelligenza artificiale sono costosi dal livello di calcolo. Tuttavia, man mano che l'intelligenza artificiale diventa onnipresente nelle esperienze dell'app, è necessario un runtime in grado di ottimizzare l'inferenza in modo da mantenere la durata della batteria mantenendo un livello elevato di accuratezza. In modo che l'IA produa risultati buoni e accurati.
I carichi di lavoro di intelligenza artificiale in genere rientrano in uno dei due bucket seguenti:
- Intelligenza Artificiale Ambientale. L'intelligenza artificiale viene eseguita automaticamente in background quando gli utenti interagiscono con l'app.
- Intelligenza artificiale esplicita. Gli utenti sanno che hanno avviato un'attività di intelligenza artificiale, che in genere è un tipo di scenario di intelligenza artificiale generativa (genAI).
I carichi di lavoro di intelligenza artificiale ambientale possono essere scaricati su processore NPU dedicato con 40+ TOPS di potenza di elaborazione e i consumi energetici in genere nell'ordine dei watt. In questo modo, Windows ML è perfetto per i carichi di lavoro di intelligenza artificiale ambientale. Nella maggior parte dei casi, gli utenti delle tue app sentiranno la magia dell'IA senza dover aspettare e senza doversi preoccupare della durata della batteria del PC.
Molte attività di intelligenza artificiale a elevato livello di calcolo possono essere gestite meglio da una GPU dedicata. La versione 2018 di Windows ML si basa su un EP DirectML per gestire i carichi di lavoro GPU; e che aumenta il numero di strati tra il modello e il processore. Windows ML in Microsoft.Windows.AI.MachineLearning
non ha il livello DirectML. Funziona invece direttamente con provider di esecuzione dedicati per la GPU, offrendo prestazioni a livello di hardware pari agli SDK dedicati del passato, ad esempio TensorRT per RTX, AI Engine Direct e l'estensione Intel per PyTorch. Windows ML è stato progettato per ottenere prestazioni GPU ottimali, mantenendo al tempo stesso i vantaggi di write-once-run-anywhere offerti dalla soluzione precedente basata su DirectML.
In entrambi i due casi, tutti gli aspetti delle prestazioni sono importanti. Velocità pura dell'orologio, durata della batteria e precisione. In modo che l'utente ottenga risultati effettivamente validi.
Tutto questo consente di ottenere un'ampia gamma di esperienze e scenari basati sull'intelligenza artificiale. È possibile eseguire carichi di lavoro di AI ambientale e agenti su NPU dedicate; oppure eseguire carichi di lavoro su GPU integrate per mantenere la GPU discreta libera, se necessario. Se si vuole una potenza non elaborata, è possibile scegliere come destinazione le MODERNE GPU discrete (dGPU) di oggi per eseguire carichi di lavoro più pesanti alle velocità più veloci possibili.
Che cos'è un provider di esecuzione?
Un provider di esecuzione (EP) è un componente che implementa ottimizzazioni specifiche dell'hardware per le operazioni di Machine Learning (ML). Un EP può implementare una o più astrazioni hardware. Per esempio:
- I provider di esecuzione della CPU ottimizzano per i processori per utilizzo generico.
- I provider di esecuzione GPU ottimizzano i processori grafici.
- I provider di esecuzione NPU ottimizzano le unità di elaborazione neurale.
- Altri fornitori specifici per il venditore.
Il runtime di Windows ML gestisce la complessità della gestione di tali provider di esecuzione fornendo API per eseguire le operazioni seguenti:
- Scarica gli EP appropriati per l'hardware corrente.
- Registrare gli EP in modo dinamico in fase di esecuzione.
- Configurare il comportamento di EP.
Uso dei provider di esecuzione con Windows ML
Windows ML Runtime offre un modo flessibile per accedere ai provider di esecuzione di Machine Learning (ML), che possono ottimizzare l'inferenza del modello di Machine Learning in configurazioni hardware diverse. Tali EP vengono distribuiti come pacchetti separati che possono essere aggiornati indipendentemente dal sistema operativo.
Commenti e suggerimenti su Windows ML
Ti piacerebbe ricevere commenti e suggerimenti sull'uso di Windows ML. Se si verificano problemi o si hanno suggerimenti, cercare In GitHub di Windows App SDK per verificare se è già stato segnalato e, in caso contrario, creare un nuovo problema.