Domande frequenti sull'uso dell'intelligenza artificiale con Windows

Generali

Che cos'è WinML?

WinML o Windows Machine Learning è un'API di alto livello per la distribuzione di modelli di Machine Learning (ML) con accelerazione hardware nei dispositivi Windows che consentono agli sviluppatori di usare le funzionalità del dispositivo per eseguire l'inferenza del modello. Lo stato attivo riguarda il caricamento, l'associazione e la valutazione del modello. WinML usa il formato del modello ONNX.

Che cos'è DirectML?

DirectML è un'API di basso livello per l'apprendimento automatico che fornisce l'accelerazione GPU per attività comuni di Machine Learning in un'ampia gamma di driver e hardware supportati, incluse tutte le GPU con supporto per DirectX 12 provenienti da fornitori come AMD, Intel, NVIDIA e Qualcomm. DirectML è un componente di WinML.

Che cos'è ONNX?

Open Network Neural Exchange o ONNX è un formato standard aperto per rappresentare i modelli di Machine Learning. I framework di modelli di Machine Learning più diffusi, ad esempio PyTorch, TensorFlow, SciKit-Learn, Keras, Chainer, MATLAB e così via, possono essere esportati o convertiti nel formato ONNX standard. Una volta in formato ONNX, il modello può essere eseguito su un'ampia gamma di piattaforme e dispositivi. ONNX è utile per l'uso di un modello di Machine Learning in un formato diverso da quello su cui è stato eseguito il training.

Che cos'è ORT?

ONNX Runtime o ORT è uno strumento di runtime unificato per l'esecuzione di modelli in framework diversi (PyTorch, TensorFlow e così via) che supporta gli acceleratori hardware (CPU del dispositivo, GPU o NPU).

In che modo ONNX differisce da altri framework ml, ad esempio PyTorch o TensorFlow?

PyTorch e TensorFlow vengono usati per lo sviluppo, il training e l'esecuzione di modelli di Deep Learning usati nelle applicazioni di intelligenza artificiale. PyTorch viene spesso usato per la ricerca, TensorFlow viene spesso usato per la distribuzione del settore e ONNX è un formato di scambio di modelli standardizzato che consente di colmare il divario, consentendo di passare tra framework in base alle esigenze e compatibili tra piattaforme.

Che cos'è una NPU? Qual è la differenza tra CPU o GPU?

Un'unità di elaborazione neurale, o NPU, è un chip di intelligenza artificiale dedicato progettato appositamente per eseguire attività di intelligenza artificiale. Lo stato attivo di una NPU è diverso da quello di una CPU o di una GPU. Un'unità di elaborazione centrale, o CPU, è il processore principale in un computer, responsabile dell'esecuzione di istruzioni e calcoli per utilizzo generico. Un'unità di elaborazione grafica, o GPU, è un processore specializzato progettato per il rendering della grafica e ottimizzato per l'elaborazione parallela. È in grado di eseguire il rendering di immagini complesse per le attività di modifica e gioco di video.

I criteri di rete sono progettati per accelerare gli algoritmi di Deep Learning e possono rimuovere parte del lavoro dalla CPU o dalla GPU di un computer, in modo che il dispositivo possa funzionare in modo più efficiente. I criteri di rete sono creati appositamente per accelerare le attività di rete neurale. Eccelle nell'elaborazione di grandi quantità di dati in parallelo, rendendoli ideali per attività comuni di intelligenza artificiale come il riconoscimento delle immagini o l'elaborazione del linguaggio naturale. Ad esempio, durante un'attività di riconoscimento delle immagini, l'NPU può essere responsabile del rilevamento degli oggetti o dell'accelerazione dell'immagine, mentre la GPU assume la responsabilità del rendering delle immagini.

Come è possibile scoprire quale tipo di CPU, GPU o NPU ha il dispositivo?

Per controllare il tipo di CPU, GPU o NPU nel dispositivo Windows e le relative prestazioni, aprire Gestione attività (CTRL + ALT + Elimina), quindi selezionare la scheda Prestazioni e sarà possibile visualizzare cpu, memoria, Wi-Fi, GPU e/o NPU elencate, insieme a informazioni sulla velocità, sulla frequenza di utilizzo e su altri dati.

Concetti utili relativi all'intelligenza artificiale

Che cos'è un modello di linguaggio di grandi dimensioni (LLM)?

Un LLM è un tipo di modello di Machine Learning (ML) noto per la possibilità di ottenere la generazione e la comprensione del linguaggio per utilizzo generico. I llms sono reti neurali artificiali che acquisiscono funzionalità imparando relazioni statistiche da grandi quantità di documenti di testo durante un processo di training auto-supervisionato e semi-supervisionato a elevato utilizzo di calcolo. I llms vengono spesso usati per la generazione di testo, una forma di intelligenza artificiale generativa che, data parte del testo di input, genera parole (o "token") che probabilmente creano frasi coerenti e contestualmente pertinenti in cambio. Esistono anche modelli di linguaggio piccoli che hanno meno parametri e capacità più limitata, ma possono essere più efficienti (che richiedono meno risorse di calcolo), convenienti e ideali per domini specifici.

Che cos'è il training del modello di Machine Learning?

In Machine Learning il training dei modelli implica l'inserimento di un set di dati in un modello (LLM o SLM), consentendogli di apprendere dai dati in modo che il modello possa prendere stime o decisioni in base a tali dati, riconoscendo i modelli. Può anche comportare la modifica iterativa dei parametri del modello per ottimizzare le prestazioni.

Che cos'è l'inferenza?

Il processo di utilizzo di un modello di Machine Learning sottoposto a training per eseguire stime o classificazioni su nuovi dati non visualizzati è denominato "Inferenza". Dopo aver eseguito il training di un modello linguistico su un set di dati, apprendere i modelli e le relazioni sottostanti, è pronto per applicare queste conoscenze agli scenari reali. L'inferenza è il momento della verità di un modello di intelligenza artificiale, un test del grado di applicazione delle informazioni apprese durante il training per eseguire una stima o risolvere un'attività. Il processo di utilizzo di un modello esistente per l'inferenza è diverso dalla fase di training, che richiede l'uso dei dati di training e convalida per sviluppare il modello e ottimizzare i parametri.

Che cos'è l'ottimizzazione del modello di Machine Learning?

L'ottimizzazione è un passaggio fondamentale dell'apprendimento automatico in cui un modello con training preliminare viene adattato per eseguire un'attività specifica. Anziché eseguire il training di un modello da zero, l'ottimizzazione inizia con un modello esistente (in genere sottoposto a training su un set di dati di grandi dimensioni) e modifica i parametri usando un set di dati specifico dell'attività più piccolo. Grazie all'ottimizzazione, il modello apprende funzionalità specifiche delle attività mantenendo al tempo stesso le conoscenze generali acquisite durante il pre-training, con conseguente miglioramento delle prestazioni per applicazioni specifiche.

Che cos'è la progettazione delle richieste?

La progettazione dei prompt è un approccio strategico usato con l'intelligenza artificiale generativa per modellare il comportamento e le risposte di un modello linguistico. Implica la creazione ponderata di richieste o query di input per ottenere il risultato desiderato da un modello linguistico (ad esempio GPT-3 o GPT-4). Progettando un prompt efficace, è possibile guidare un modello di Machine Learning per produrre il tipo di risposta desiderato. Le tecniche includono la regolazione della parola, la specifica del contesto o l'uso di codici di controllo per influenzare l'output del modello.

Che cos'è l'accelerazione hardware (per quanto riguarda il training del modello di Machine Learning)?

L'accelerazione hardware si riferisce all'uso di hardware computer specializzato progettato per velocizzare le applicazioni di intelligenza artificiale oltre a ciò che è possibile ottenere con CPU per utilizzo generico. L'accelerazione hardware migliora la velocità, l'efficienza energetica e le prestazioni complessive delle attività di Machine Learning, ad esempio i modelli di training, l'esecuzione di stime o l'offload del calcolo in componenti hardware dedicati che eccelleno nell'elaborazione parallela per carichi di lavoro di Deep Learning. GPU e NPU sono entrambi esempi di acceleratori hardware.