Generale
Come è possibile integrare l'intelligenza artificiale nell'app client Windows?
L'integrazione dell'intelligenza artificiale nell'applicazione Windows può essere ottenuta tramite due metodi principali: un modello locale o un modello basato sul cloud. Per l'opzione del modello locale, è possibile usare un modello preesistente o eseguire il training usando piattaforme come TensorFlow o PyTorch e quindi incorporarlo nell'applicazione tramite OnnxRuntime. Microsoft Foundry su Windows offre API per varie funzioni, tra cui OCR o uso del modello Phi Silica. D'altra parte, l'hosting del modello nel cloud e l'accesso tramite un'API REST consente all'applicazione di rimanere semplificata delegando attività a elevato utilizzo di risorse al cloud. Per altre informazioni, vedere Usare modelli di Machine Learning nell'app Windows.
È necessaria la versione più recente di Windows 11 e un Copilot+ PC con una NPU per l'uso delle funzionalità di intelligenza artificiale?
Esistono molti modi per eseguire carichi di lavoro di intelligenza artificiale, sia installando che eseguendo modelli in locale nel dispositivo Windows o eseguendo modelli basati sul cloud (vedere Introduzione all'intelligenza artificiale in Windows), tuttavia, le funzionalità di intelligenza artificiale supportate da Windows API di intelligenza artificiale richiedono attualmente un Copilot+ PC con una NPU.
Quali linguaggi di programmazione sono ideali per lo sviluppo di intelligenza artificiale nelle app client Windows?
È possibile usare qualsiasi linguaggio di programmazione preferito. Ad esempio, C# viene ampiamente usato per la creazione di app client Windows. Se è necessario un maggiore controllo sui dettagli di basso livello, C++ è un'ottima opzione. In alternativa, è consigliabile usare Python. È anche possibile usare sottosistema Windows per Linux (WSL) per eseguire strumenti di intelligenza artificiale basati su Linux in Windows.
Quali sono i framework di intelligenza artificiale migliori per le app client Windows?
È consigliabile usare OnnxRuntime.
Come gestire la privacy e la sicurezza dei dati quando si usa l'intelligenza artificiale nelle app client Windows?
Rispettare la privacy e la sicurezza dei dati degli utenti è essenziale quando si sviluppano app basate sull'intelligenza artificiale. È consigliabile seguire le procedure consigliate per la gestione dei dati, ad esempio la crittografia dei dati sensibili, l'uso di connessioni sicure e il recupero del consenso dell'utente prima della raccolta dei dati. È anche consigliabile essere trasparenti sul modo in cui si usano i dati e concedere agli utenti il controllo sui dati. Non dimenticare di leggere anche Sviluppare Applicazioni e Funzionalità di Intelligenza Artificiale Generativa Responsabile su Windows.
Quali sono i requisiti di sistema per l'esecuzione dell'intelligenza artificiale nelle app client Windows?
I requisiti di sistema per le app Windows che usano l'intelligenza artificiale dipendono dalla complessità del modello di intelligenza artificiale e dall'accelerazione hardware usata. Per i modelli semplici, una CPU moderna può essere sufficiente, ma per modelli più complessi potrebbe essere necessaria una GPU o una NPU. È anche consigliabile considerare i requisiti di memoria e archiviazione dell'app, nonché la larghezza di banda di rete necessaria per i servizi di intelligenza artificiale basati sul cloud.
Come ottimizzare le prestazioni di intelligenza artificiale nelle app client Windows?
Per ottimizzare le prestazioni di intelligenza artificiale nelle app Windows, è consigliabile usare l'accelerazione hardware, ad esempio GPU o NPU, per velocizzare l'inferenza del modello. Windows Copilot+ portatili sono ottimizzati per i carichi di lavoro di intelligenza artificiale e possono offrire un miglioramento significativo delle prestazioni per le attività di intelligenza artificiale. Vedere anche la panoramica di Foundry Toolkit per Visual Studio Code.
È possibile usare modelli di intelligenza artificiale con training preliminare nell'app client Windows?
Sì, è possibile usare modelli di intelligenza artificiale con training preliminare nell'app Windows. È possibile scaricare modelli con training preliminare da Internet o usare un servizio di intelligenza artificiale basato sul cloud per accedere ai modelli con training preliminare. È quindi possibile integrare questi modelli nell'app usando un framework come OnnxRuntime.
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.
Cos'è ONNX?
Open Neural Network Exchange o ONNX è un formato standard aperto per la rappresentazione dei 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?
OnnxRuntime, o ORT, è uno strumento di runtime unificato per l'esecuzione di modelli in framework diversi (PyTorch, TensorFlow e così via) che supporta 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. L'obiettivo di una NPU differisce 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.
Le NPU sono progettate per accelerare gli algoritmi di apprendimento profondo 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. Le NPUs sono progettate appositamente per accelerare i compiti di reti neurali. 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 sul tuo dispositivo Windows e le loro prestazioni, apri gestione attività (Ctrl + Maiusc + Esc), quindi seleziona la scheda Performance e potrai visualizzare la CPU, la memoria, il Wi-Fi, la GPU e/o la NPU elencati, insieme alle informazioni sulla velocità, livello di utilizzo e altri dati.
Che cos'è Windows ML?
Windows ML (Machine Learning) consente all'app di usare una copia condivisa a livello di sistema del runtime ONNX (ORT, vedere sopra) oltre a supportare il download dinamico dei provider di esecuzione specifici del fornitore (EPs) in modo che l'inferenza del modello possa essere ottimizzata attraverso l'ampia gamma di CPU, GPU e NPU nell'ecosistema Windows, senza richiedere all'app di includere runtime pesanti o EPs.
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. Gli LLM vengono spesso usati per la generazione di testo, una forma di intelligenza artificiale generativa che, dato del testo di ingresso, genera parole (o "token") che probabilmente creano frasi coerenti e contestualmente pertinenti in risposta. 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 del modello comporta 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 basate su 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 che un modello linguistico è stato addestrato su un dataset, avendo appreso 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'è l'ingegneria dei prompt?
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 formulazione accurata di prompt o query 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.
Quali sono le differenze tra un Scienziato dei dati, ml engineer e uno sviluppatore di app che vogliono applicare le funzionalità di intelligenza artificiale nella propria app?
Il processo di creazione e uso di modelli di Machine Learning prevede tre ruoli principali: data scientist: responsabile della definizione del problema, della raccolta e dell'analisi dei dati, della scelta e del training dell'algoritmo di Machine Learning e della valutazione e dell'interpretazione dei risultati. Usano strumenti come Python, R, Jupyter Notebook, TensorFlow, PyTorch e scikit-learn per eseguire queste attività. Machine Learning Engineers: responsabile della distribuzione, del monitoraggio e della gestione dei modelli di Machine Learning negli ambienti di produzione. Usano strumenti come Docker, Kubernetes, Azure ML, AWS SageMaker e Google Cloud AI Platform per garantire scalabilità, affidabilità e sicurezza dei modelli di Machine Learning. Sviluppatori di app: responsabile dell'integrazione dei modelli di Machine Learning nella logica dell'app, nell'interfaccia utente e nell'esperienza utente. Usano strumenti come Microsoft Foundry in Windows, OnnxRuntime o API REST ed elaborano l'input dell'utente e l'output del modello. Ogni ruolo comporta responsabilità e competenze diverse, ma è necessaria la collaborazione e la comunicazione tra questi ruoli per ottenere i migliori risultati. A seconda delle dimensioni e della complessità del progetto, questi ruoli possono essere eseguiti dalla stessa persona o da team diversi.