IA e Microsoft Azure
- Denis Dal Molin
- 28 Jan, 2025
- 10 Mins read
Introduzione
L’intelligenza artificiale è diventata ormai parte nella nostra quotidianità, modificando in modo significativo il nostro approccio al lavoro, alla comunicazione e ai processi decisionali. Il potenziale completo dell’IA emerge quando viene abbinata alla scalabilità e alla potenza del cloud computing, permettendo di addestrare e distribuire modelli complessi su ampia scala con agilità e flessibilità.
In questo scenario, Microsoft Azure si posiziona come un leader nel democratizzare l’accesso a queste tecnologie, offrendo una piattaforma versatile per l'integrazione dell'IA nei processi aziendali.
Concetti fondamentali
Per comprendere il potenziale dell’intelligenza artificiale, è essenziale partire dalle sue fondamenta. L'IA si basa su modelli matematici e algoritmi che vengono addestrati. Essa è una disciplina che si concentra sullo sviluppo di sistemi in grado di simulare il comportamento umano.
Tra le sue componenti principali vi è il Machine Learning (ML), metodo centrale attraverso cui i sistemi apprendono dai dati, migliorando la loro comprensione senza necessità di programmazione esplicita. In altre parole, consente ai modelli di identificare connessioni e tendenze chiamate pattern all’interno di grandi insiemi di dati, per svolgere compiti.
Un aspetto fondamentale del Machine Learning è il training dei modelli, un processo che consiste nell’alimentare il sistema con dati etichettati (o meno) per "insegnargli" a fare previsioni. Ad esempio, un modello può essere addestrato a riconoscere email spam o non spam analizzando migliaia di esempi pregressi.
Le applicazioni del ML possono essere suddivise in tre categorie principali: classificazione, come distinguere immagini di gatti da quelle di cani, identificare oggetti etc..; regressione, come prevedere il prezzo di una casa basandosi su caratteristiche come posizione e metratura; e clustering, come raggruppare utenti con comportamenti simili in un sito web per personalizzare la loro esperienza.
Una significativa evoluzione nel campo è rappresentata dal Deep Learning, che utilizza reti neurali ispirate al funzionamento del cervello umano. Questo approccio è alla base di tecnologie avanzate come il riconoscimento vocale e i Large Language Models (LLM) come quelli utilizzati in sistemi di IA generativa.
Tra i Large Language Models (LLM) più noti e utilizzati al momento ci sono:
- GPT (Generative Pre-trained Transformer) di OpenAI: utilizza miliardi di parametri per rispondere alle domande;
- LLaMA di Meta: modello open-source progettato per essere più leggero;
- Claude di Anthropic: la filosofia del modello è basata sull'uso responsabile.
Il cuore del successo di questi modelli risiede nel processo di training e validazione. Dopo il training, il modello viene testato su un data set separato per valutare la capacità di generare output, passaggio fondamentale per evitare il problema dell’overfitting, in cui un modello risponde bene solo ai dati di training ma fallisce su dati nuovi.
Principali casi d'uso
Tra i principali casi d’uso troviamo:
- Predictions and forecasting: la capacità di analizzare dati storici per prevedere eventi futuri, come il comportamento dei clienti o la domanda di mercato;
- Anomaly detection: individuare deviazioni dai pattern di utilizzo normali, essenziale per la sicurezza, il monitoraggio delle frodi e il mantenimento di sistemi complessi;
- Natural language processing (NLP): l’abilità di prendere del testo, comprenderlo e rispondere in modo adeguato, come accade nei sistemi di traduzione o nelle analisi di sentiment;
- Computer vision: la capacità di processare immagini e restituire informazioni, ad esempio nel riconoscimento di oggetti, volti o situazioni nelle immagini e nei video;
- Conversational AI: consentire alle macchine di comunicare con gli esseri umani tramite conversazioni fluide e naturali, come nei chatbot o negli assistenti virtuali;
Questi casi d’uso rappresentano solo una parte delle incredibili possibilità offerte.
Machine Learning Vs Deep Learning
Machine Learning, Deep Learning e Natural Language Processing sono tre aree fondamentali dell'intelligenza artificiale, ma ciascuna di esse si concentra su aspetti diversi della "comprensione" e "interazione" con i dati.
- Machine Learning (ML) è una branca dell'IA che si concentra sullo sviluppo di algoritmi in grado di apprendere dai dati.
- Deep Learning (DL) è una sottocategoria di machine learning che si concentra sull'uso di reti neurali profonde, cioè modelli di machine learning con molteplici strati (layer). Questi modelli sono progettati per simulare il funzionamento del cervello umano e sono particolarmente potenti quando si tratta di lavorare con grandi volumi di dati non strutturati, come immagini, audio o testo. Il deep learning è alla base di tecnologie come il riconoscimento vocale, la visione artificiale (come il riconoscimento facciale) e la traduzione automatica.
- Natural Language Processing (NLP) si concentra sull'interazione tra computer e linguaggio umano. Può fare uso di tecniche sia di machine learning che di deep learning per migliorare la comprensione del linguaggio.
Ci sono poi altre aree importanti come la Computer Vision che consente ai computer di "vedere" e comprendere il contenuto di immagini e video. Altre sono ancora in fase di sviluppo come la Quantum Computing, la quale sfrutta i principi della meccanica quantistica per elaborare informazioni che non sono possibili con i tradizionali supercomputer.
Modelli
Per creare un modello di machine learning, il primo elemento fondamentale è un algoritmo, ovvero un insieme di istruzioni che il modello utilizza per apprendere dai dati. In termini semplicistici, possiamo immaginare un modello come una funzione matematica, rappresentata dalla formula y=f(x), dove x rappresenta gli input (dati) e y l’output (risultato previsto).
Un concetto centrale nella costruzione di un modello è il ruolo delle funzionalità (feature) e delle etichette (label) all’interno del dataset di training.
Le funzionalità sono gli attributi o variabili indipendenti che descrivono i dati, mentre le etichette sono il risultato o la variabile dipendente che vogliamo prevedere. Ad esempio, in un dataset che analizza il comportamento degli utenti, una funzionalità potrebbe essere "tempo trascorso sul sito", mentre l’etichetta potrebbe essere "acquisto effettuato: sì/no".
Prima di poter utilizzare i dati per l'apprendimento, è essenziale sottoporli a un processo di preparazione ed elaborazione (ETL: Extract, Transform, Load). Durante questa fase, ispezioniamo i dati per assicurarci che siano puliti e pronti per l'uso, rimuovendo valori mancanti, gestendo outlier e trasformando le informazioni in un formato adatto. Inoltre, possiamo applicare tecniche di feature engineering per creare nuove funzionalità basate su quelle esistenti, migliorando così le prestazioni del modello.
Gli algoritmi, una volta applicati ai dati, possono essere distinti in diverse categorie di apprendimento:
- Supervisionato: il modello apprende da un dataset etichettato, dove ogni input è associato a un output noto (ad esempio, classificazione o regressione).
- Non supervisionato: il modello lavora su dati non etichettati e cerca di trovare pattern nascosti o gruppi (ad esempio, clustering);
- Semi-supervisionato: una combinazione dei due approcci, in cui solo una parte dei dati è etichettata;
- Reinforcement learning: il modello apprende attraverso un sistema di ricompensa e penalità, adattandosi continuamente in base al feedback (ad esempio, nei giochi o nei sistemi di guida autonoma).
Cosa sono i Transformer?
I Transformer sono un'architettura di rete neurale progettata per gestire dati sequenziali (come testo, immagini o audio), introducendo un meccanismo chiamato self-attention, che permette al modello di analizzare l'intera sequenza simultaneamente e assegnare un peso a ciascun elemento rispetto agli altri. Sono particolarmente bravi a catturare le relazioni tra le parole, anche se sono lontane tra loro in una frase.
Esempio: Immagina che tu stia usando un Transformer per completare la frase: "Il cielo è molto..."
- Input: ["Il", "cielo", "è", "molto"]
- Self-Attention: Ogni parola cerca relazioni con le altre (es. "molto" dà attenzione a "cielo")
- Output: Il modello genera una parola probabile, come "azzurro"
Questo processo viene ripetuto parola per parola, fino a completare l'intera frase.
Cosa sono i Token?
I token sono unità di base in cui un modello di linguaggio, come un Transformer, scompone il testo per comprenderlo (capire) e manipolarlo. In un contesto linguistico, può rappresentare: parole, parti di parole, caratteri speciali o simboli, frasi o concetti.
Quando un modello di linguaggio riceve del testo come input, prima di tutto lo scompone in token. Questo processo si chiama tokenizzazione. Ogni token è quindi associato a una rappresentazione numerica, che il modello usa per comprendere la sequenza di testo. Questi vettori numerici vengono quindi elaborati dal modello (tramite il meccanismo di attenzione nel caso del Transformer) per generare output, come risposte, traduzioni, o predizioni.
I modelli hanno una lunghezza massima di token che possono elaborare, ad esempio GPT-3 può elaborare fino a 4096 token in un singolo input, mentre GPT-3.5 Turbo 16k arriva a 16000.
Più lunga è la sequenza, più token vengono utilizzati, e questo può influenzare il costo computazionale e la qualità delle risposte.
Esempio: Immagina di avere la frase: "Ciao, come stai?"
Un semplice processo di tokenizzazione potrebbe scomporla in:
- "Ciao"
- ","
- "come"
- "stai"
- "?"
Nat.dev
Nat.dev è una piattaforma progettata per facilitare l'interazione con i modelli di linguaggio avanzati, permettendo agli sviluppatori di esplorare, testare e utilizzare modelli linguistici moderni. Offre un playground, ossia un ambiente interattivo che consente la personalizzazione di parametri e impostazioni per osservare come il comportamento di un modello varia in base alle diverse variabili.
Variabili e parametri
Quando interagiamo con un modello di linguaggio avanzato ci sono diverse variabili o parametri che possiamo modificare per influenzare il comportamento e i risultati generati in modo da ottenere risposte più creative, coerenti, o adatte a specifiche esigenze.
La temperatura è uno dei parametri principali per controllare la creatività e la casualità delle risposte. Una temperatura più bassa (es. 0.2) rende il modello più deterministico e preciso, mentre una temperatura più alta (es. 1.0 o superiore) rende le risposte più creative, imprevedibili e diverse.
Top-p (conosciuto anche come "nucleus sampling") è un altro parametro di controllo della creatività, che stabilisce la probabilità cumulativa da cui il modello attinge le risposte. Un top-p basso (es. 0.2) per risposte più prevedibili. Un top-p alto (es. 0.9) per aumentare la varietà nelle risposte.
La frequency penalty per la ripetizione di parole o frasi. Aumentando questo parametro, si riduce la probabilità che il modello ripeta le stesse parole o concetti in modo ridondante. Un valore più alto aumenta questa penalizzazione.
La presence penalty disincentiva l'uso di parole che sono già apparse nel contesto della conversazione. Maggiore è il valore, minore sarà la probabilità che il modello ripeta argomenti o parole già usate.
Le Stop sequences indicano al modello quando fermarsi nella generazione della risposta. Puoi definire una o più sequenze di testo che, se generate dal modello, lo faranno fermare immediatamente. Questo è utile per evitare risposte troppo lunghe o non desiderate.
Logit bias è un sistema che permette di modificare la probabilità che certe parole o frasi vengano scelte dal modello. Consente di forzare il modello a favorire (o evitare) specifiche parole nei suoi output, alterando il logit (la misura della probabilità) di certe scelte.
Prompt
Il prompt è senza dubbio uno degli elementi più cruciali quando si interagisce con un modello. Si tratta del testo (la domanda) che forniamo come input, la sua importanza non può essere sottovalutata, poiché guida completamente la risposta che otterremo (funge da direttiva). Se fornisci un prompt ambiguo o generico, la risposta sarà probabilmente altrettanto generica. Ma se il prompt è preciso e chiaro, la risposta sarà dettagliata, pertinente e utile. Puoi usare il prompt per influenzare il tono e lo stile della risposta. Un prompt mal formulato può portare a risultati errati o irrilevanti.
Un esempio di come un prompt ben formulato incide sul risultato finale si vede nei modelli text-to-image come Midjourney. Qui, la qualità del prompt determina direttamente l'output visivo. A differenza dei modelli linguistici, dove valutiamo coerenza e tono, in text-to-image il legame tra prompt e immagine è immediato e visibile.
Servizi Azure
Microsoft Azure offre una vasta gamma di servizi cloud che permettono alle aziende di implementare soluzioni intelligenti sfruttando l'intelligenza artificiale e il machine learning. Questi servizi si collocano in un ecosistema che include tutto, dalla gestione dei dati al training dei modelli fino al deploy di applicazioni.
Tra questi emergono due soluzioni principali:
- Azure Machine Learning
- Azure Cognitive Services
Le differenze tra le due soluzioni si concentrano principalmente sull'approccio adottato per l'implementazione dell'intelligenza artificiale, sulla possibilità di personalizzazione e sul livello di controllo consentito sugli algoritmi e sui modelli.
Azure Cognitive Services è un set di API e servizi IA pre-costruiti da Microsoft (non è possibile personalizzarli per casi d'uso specifici se non in modo limitato). Questi servizi consentono agli sviluppatori di aggiungere intelligenza artificiale alle applicazioni senza dover costruire o addestrare modelli. Include riconoscimento del linguaggio naturale, visione artificiale, riconoscimento vocale e analisi del sentiment del testo. È utile per progetti che richiedono funzionalità standard come i chat-bot.
Azure Machine Learning è una piattaforma gestita per sviluppare, addestrare e distribuire modelli di machine learning complessi. Ideale per data scientist e sviluppatori che vogliono creare modelli personalizzati con algoritmi avanzati. E' possibile scegliere gli algoritmi da utilizzare, definire il flusso di lavoro, e addestrare i modelli su dataset specifici. Fornisce il controllo completo su algoritmi, flusso di lavoro e training dei modelli.
Creazione e uso del servizio AML
La creazione del servizio nel portale Azure è un processo che prevede diverse fasi:
- Il primo passo è la creazione di un workspace, un area di lavoro che funge da contenitore per tutti gli oggetti, i dati, i modelli etc.. rappresenta il punto centrale dove verranno organizzate tutte le attività;
- La creazione di un workspace richiede una serie di risorse aggiuntive per gestire in modo efficiente i dati, la sicurezza e il monitoraggio delle operazioni: Azure Key Vault, Azure Storage Account, Azure Container Registry, Application Insights. Queste risorse vengono configurate automaticamente o manualmente durante la creazione dell'ambiente.
Una volta configurato il workspace il prossimo passo è aprire Azure Machine Learning Studio, una piattaforma grafica che consente di creare e gestire in modo visivo e interattivo.
Lo studio consente di caricare facilmente i dati o usare campioni esistenti, che si possono dividere in set come training (70%) e test/validation (30%).
Il Designer è una delle funzionalità più potenti in quanto, con un approccio no-code e drag & drop, permette di costruire il flusso del modello governandone l'intero ciclo di vita.
Con il flusso costruito si può procedere all'addestramento del modello, e una volta terminato fare il test e la validazione. Il sistema permette anche di monitorare le metriche in tempo reale, come la precisione e il recall per modelli di classificazione e altri parametri di performance.
Una volta che il modello è pronto il passo successivo è il deployment, utlizzando le varie opzioni di Azure Compute:
- Azure Kubernetes Service (AKS): Se desideri un ambiente scalabile e altamente disponibile;
- Azure Container Instances (ACI): Un'alternativa più semplice e leggera, se il modello non ha bisogno di scalabilità o di una gestione complessa;
- Edge Computing: In alcuni casi, potresti voler implementare il tuo modello direttamente su dispositivi edge (ad esempio, IoT)
Endpoint del servizio
Quando si parla di AI Services in Azure, uno degli aspetti fondamentali riguarda l'interazione con i servizi attraverso gli endpoint. Un endpoint rappresenta un'URL specifico che consente di invocare un servizio mediante una chiamata API. A tali URL vengono inviate richieste per ottenere o inviare dati, come ad esempio immagini, testo o parametri di input.
Una volta recuperato è possibile testarlo tramite una richiesta REST. Gli strumenti più utilizzati per testare e interagire con le API RESTful sono Postman o cURL.
Interagire tramite Postman
Nel caso specifico di una chiamata di tipo POST, stiamo passando delle informazioni al servizio per ottenere una risposta elaborata. Questa è la modalità più comune quando lavoriamo con dati che devono essere processati, come ad esempio il testo o le immagini.
Per inviare una richiesta di questo tipo, dobbiamo configurare correttamente due parti:
- Header: con le informazioni di autenticazione necessarie, utilizziamo un bearer token che rappresenta il nostro permesso di accesso al servizio generato durante la creazione del servizio;
- Body: dobbiamo specificare i dati che vogliamo inviare al servizio, per questo tipo di servizio dobbiamo utilizzare il formato JSON, il corpo dovrà essere una stringa che contiene le informazioni necessarie per elaborare la richiesta.
Possiamo fare clic sul tasto Send per inviare la nostra chiamata. Se tutto è stato configurato correttamente, riceveremo una risposta HTTP 200 OK, che significa che il servizio ha elaborato la richiesta con successo.
La risposta conterrà i dati elaborati dal servizio:
Nel caso in cui ci sia un errore, come un token di autenticazione non valido o un errore nel formato della richiesta, riceveremo un codice di errore HTTP, ad esempio un 400 Bad Request o un 401 Unauthorized.
Azure AI Foundry
Azure AI Foundry è una piattaforma completa che raggruppa e si integra con tutti i servizi per lo sviluppo avanzato di applicazioni basate sull'intelligenza artificiale.
La piattaforma facilita la collaborazione tra team di sviluppo, data science e business, grazie alla possibilità di gestire progetti, monitorare performance dei modelli e fare debugging da un Hub.
Esempio di servizio computer vision
Un esempio pratico dell'uso dei servizi di Computer Vision di Azure è l'Azure Computer Vision API, che analizza le immagini.
È possibile utilizzare questo servizio in diversi modi: tramite l'interfaccia grafica offerta da Azure AI Vision Studio oppure tramite il nuovo Azure AI Foundry.
Ogni servizio di Azure dispone di una documentazione dettagliata.
Nell'API reference del servizio sono disponibili le informazioni necessarie per comporre le richieste, tra cui:
- Endpoint URL
- Metodi HTTP
- Header e Body
- Formati e input
Testiamo quindi il funzionamento questa API utilizzando nuovamente lo strumento Postman: