Introduzione a LLMOps: creare applicazioni di IA migliori
L'emergere di ChatGPT di OpenAI ha catalizzato un'ondata di interesse per i large language models (LLMs) tra le aziende. Le principali aziende tecnologiche e organizzazioni di ricerca stanno ora rendendo gli LLM più accessibili, impegnandosi a migliorare l'infrastruttura dei dati, a perfezionare i modelli per applicazioni su misura e a monitorare problemi come allucinazioni e bias. Questo crescente interesse ha anche portato a un'impennata della domanda di fornitori tecnologici che supportano le operazioni sui large language model (LLMOps). Questi fornitori offrono flussi di lavoro completi per sviluppare, perfezionare e distribuire gli LLM in ambienti di produzione.
Al nostro recente Unstructured Data Meetup, Sage Elliott, ingegnere di machine learning presso Union.ai, ha discusso della distribuzione e della gestione degli LLM, offrendo preziose intuizioni sugli strumenti, le strategie e le best practice necessari per integrare questi modelli nelle applicazioni aziendali. La sua presentazione è stata particolarmente utile per gli sviluppatori di AI e i responsabili delle operazioni, concentrandosi su come garantire l'affidabilità e la scalabilità delle applicazioni LLM in contesti di produzione.
In questo post, riepilogheremo le principali intuizioni dell'intervento di Sage e discuteremo il concetto e le metodologie di LLMOps.
<< Guarda la registrazione dell'intervento di Sage Elliott >>
Cosa sono le LLMOps?
LLMOps sta per Large Language Model Operations, analoghe alle MLOps ma specifiche per i large language models (LLM). Per comprendere le LLMOps, analizziamo prima le MLOps.
MLOps (Machine Learning Operations) si riferisce alle pratiche e agli strumenti utilizzati per distribuire e mantenere in modo efficiente i modelli di machine learning negli ambienti di produzione. È un'estensione di DevOps (Development and Operations), che integra lo sviluppo applicativo e le operazioni in un processo coeso. Questo approccio garantisce che sia lo sviluppo sia le operazioni siano considerati insieme, invece di funzionare in silos separati.
Cosa sono le MLOps?
Cosa sono le MLOps? Fonte immagine: https://ml-ops.org/content/MLOps-principles
Prima dell'emergere della metodologia DevOps, i team di sviluppo si concentravano sulla scrittura di applicazioni o aggiornamenti il più rapidamente possibile, mentre i team operativi davano priorità alla stabilità, all'efficacia e all'esperienza utente dell'applicazione. Questo approccio compartimentato spesso si traduceva in inefficienze, portando ad applicazioni non ottimali con sviluppo lento e aggiornamenti poco frequenti.
DevOps trasforma questo processo promuovendo la collaborazione tra i team di sviluppo e operativi, garantendo un flusso di lavoro più snello ed efficiente. Le MLOps estendono questi principi al machine learning, affrontando le sfide della distribuzione e della manutenzione dei modelli ML.
Le LLMOps affinano l'approccio olistico delle MLOps applicandone i principi alle applicazioni di large language model (LLM). Riguardano tutti gli aspetti dello sviluppo, della distribuzione, della manutenzione e del miglioramento continuo delle applicazioni LLM.
La filosofia centrale della cooperazione è anche insita nella definizione di LLMOps di Sage—“Costruire l'AI insieme,” che enfatizza l'idea che tutte le unità aziendali rilevanti, ad esempio sviluppo, operazioni, gestione prodotto, ecc., debbano collaborare per produrre le applicazioni LLM più performanti in modo tempestivo ed economicamente efficiente.
Integrazione continua e consegna/distribuzione continua (CI/CD)
Come per DevOps, uno dei principi fondamentali delle LLMOps è l'Integrazione Continua/Distribuzione Continua (CI/CD): il processo di automazione del ciclo di vita dello sviluppo delle applicazioni LLM.
L'integrazione continua (CI) è la pratica di acquisire automaticamente gli aggiornamenti dell'applicazione e fonderli con il ramo principale, ovvero la versione dell'applicazione LLM attualmente in esecuzione in produzione. Quando uno sviluppatore invia codice a un repository, come GitHub, questa azione attiva un workflow automatizzato che convalida se gli aggiornamenti sono pronti per l'integrazione. La CI incoraggia modifiche frequenti da parte dei team di sviluppo e aiuta a evitare conflitti di merge del codice.
La consegna/distribuzione continua (CD) si riferisce al processo di distribuzione automatica delle modifiche all'applicazione in un ambiente di produzione dopo l'integrazione e la convalida. Questo processo include ulteriori test, come test funzionali e di accettazione da parte degli utenti, e la configurazione dell'infrastruttura.
Sebbene consegna continua e distribuzione continua siano spesso usate in modo intercambiabile, c'è una differenza tra loro. La consegna continua si ferma prima della distribuzione automatica in produzione, tipicamente per controlli finali umani volti a garantire la conformità organizzativa e normativa. Al contrario, la distribuzione continua rilascia automaticamente gli aggiornamenti dell'applicazione agli utenti. Tenendo presente questo concetto, la vera distribuzione continua è rara - in particolare nello sviluppo di applicazioni LLM, che è ancora agli inizi.
Chi dovrebbe usare LLMOps?
In breve, chiunque sviluppi un'applicazione LLM dovrebbe utilizzare LLMOps in una certa misura.
Da un lato, LLMOps è essenziale per le applicazioni AI a livello di produzione, con l'infrastruttura esatta dipendente dalle esigenze dell'applicazione. Al contrario, anche un semplice progetto AI personale trarrà vantaggio dall'implementazione di una semplice pipeline LLMOps.
Integrare LLMOps nella tua applicazione AI offre i seguenti vantaggi:
Gestione delle risorse e scalabilità: essere consapevoli dell'utilizzo delle risorse computazionali per offrire un'esperienza utente ottimale. Gli LLM richiedono grandi quantità di memoria per funzionare efficacemente, quindi essere in grado di determinare se il tuo hardware, ovvero le GPU, è sufficiente per le esigenze della tua applicazione è fondamentale.
Aggiornamento e miglioramenti del modello: essere consapevoli dei fallimenti o delle carenze di un modello in meno tempo e aggiornarlo di conseguenza.
Pratiche di AI etica e responsabile: essere consapevoli dello scopo previsto della tua applicazione AI e delle potenziali conseguenze del suo malfunzionamento. Una delle principali preoccupazioni riguardo agli LLM è la loro tendenza ad "allucinare", ovvero a fornire output inaccurato o irrilevante; questo problema potrebbe rivelarsi catastrofico in un'applicazione per fornire consigli medici, ad esempio.
Esempio di pipeline LLMOps semplificata
La mappa di mercato creata da CBInsights identifica oltre 90 aziende in 12 categorie che aiutano le imprese a gestire progetti LLM dall'inizio alla fine. Questo panorama mostra anche le dimensioni del mercato LLMOps.
Panorama del mercato LLMOps
Panorama del mercato LLMOps: oltre 90 aziende in 12 diverse categorie che aiutano le imprese a portare i progetti LLM dall'inizio alla fine.
Per renderlo più facile da comprendere, Sage ha creato una pipeline LLMOps semplificata.
Una pipeline LLMOps semplificata
Spieghiamo gli elementi di questo diagramma:
Sys Prompt: L'input dell'utente diventa parte del prompt di sistema e viene fornito all'LLM.
Model: L'LLM è alla base dell'applicazione per la generazione delle risposte.
Guardrail: I controlli che hai messo in atto per garantire che l'utente inserisca solo input appropriati, ovvero cercare di far generare al modello contenuti dannosi o offensivi.
Archivio dati: Database vettoriali come Milvus e Zilliz Cloud (il Milvus gestito). Questi database forniscono all’LLM memoria a lungo termine e informazioni contestuali sulle query e aiutano l’LLM a generare risultati più accurati. Questo componente è particolarmente vantaggioso nelle applicazioni di Retrieval Augmented Generation (RAG).
Monitoraggio: Gli strumenti utilizzati per monitorare continuamente l’applicazione LLM
Orchestratore CI/CD: Una piattaforma che gestisce la tua applicazione e aiuta ad automatizzarne l’integrazione e la distribuzione negli ambienti di produzione.
Iniziare con LLMOps
Sebbene LLMOps stia cambiando rapidamente e i fornitori rilascino quotidianamente nuovi strumenti LLMOps, fortunatamente i principi fondamentali di LLMOps rimangono gli stessi.
Ecco una semplice filosofia in tre passaggi per iniziare con LLMOps.
Distribuisci il modello
Monitora le prestazioni del modello
Migliora il modello
Esaminiamo ogni passaggio in maggiore dettaglio.
Distribuisci il tuo modello
Distribuire il modello significa implementare la tua applicazione LLM in un ambiente di produzione il prima possibile. Questo approccio è essenziale poiché ti consente di ottenere dati accurati dagli utenti che interagiscono con il modello e di imparare rapidamente come adattare la tua applicazione LLM alle esigenze degli utenti. Un esempio emblematico è un’applicazione chatbot, per cui è molto più utile ottenere esempi di input reali degli utenti e di ciò che il modello produce in risposta, piuttosto che limitarsi a prevedere l’input in un ambiente di test.
HuggingFace Spaces è una risorsa fantastica che semplifica la distribuzione del tuo modello in produzione. È una piattaforma di hosting per la maggior parte delle applicazioni ML, che fornisce GPU cloud a basso costo per alimentare gli LLM, il che la rende ideale per la prototipazione. Puoi anche distribuire la tua applicazione in uno spazio privato, fornendo accesso limitato a coloro a cui vuoi far testare la tua applicazione LLM, oppure renderla pubblica per ottenere feedback dalla vasta e attiva community di HuggingFace.
HuggingFace Spaces
HuggingFace Spaces
HuggingFace offre più dei soli Spaces per la distribuzione dei modelli; fornisce un ecosistema completo per lo sviluppo e la distribuzione di applicazioni. Al centro della sua offerta c’è una vasta raccolta di oltre 640.000 modelli ML open-source, inclusi modelli di parlato, visione artificiale e linguaggio. Inoltre, HuggingFace fornisce diverse librerie che includono tutti i componenti necessari per creare applicazioni LLM end-to-end, insieme ai dataset necessari per l’addestramento.
Per illustrare come puoi creare applicazioni LLM con HuggingFace, vediamo come scaricare e addestrare un modello utilizzando le sue librerie Transformer (per accedere agli LLM) e Datasets (per accedere ai dati di addestramento).
Per prima cosa, devi installare le librerie appropriate:
pip install torch transformers datasets
Successivamente, scaricheremo l’LLM che desideriamo utilizzare all’interno della nostra applicazione. Come indicato sopra, HuggingFace offre centinaia di migliaia di modelli, ognuno dei quali fornisce il codice necessario per integrarlo nella tua applicazione. Ad esempio, caricheremo il modello Llama 3 come segue:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct”)
Successivamente, dobbiamo caricare il dataset per effettuare il fine-tuning del modello. Per questo esempio, utilizzeremo uno dei tanti dataset disponibili di HuggingFace. Tuttavia, se preferisci usare i tuoi dati per uno scopo specifico di dominio o specifico di attività, devi semplicemente sostituire il percorso del file con quello che punta alla tua cartella dei dati di addestramento.
from datasets import load_dataset
dataset = load_dataset("talkmap/telecom-conversation-corpus")
Dopo aver caricato il dataset, dobbiamo tokenizzarlo convertendolo in token di sotto-parole che l’LLM può elaborare facilmente. Dobbiamo usare il tokenizer associato al modello Llama 3 per garantire che i dati siano tokenizzati in modo coerente con il processo di pre-training e mantengano la stessa associazione token-indice, o "vocabolario." Puoi completare questo passaggio con poche righe di codice.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct")
# Define tokenizer function
def tokenize_function(examples):
return tokenizer(examples["text"], padding="True", truncation=True)
tokenized_dataset = dataset.map(tokenize_function, batched=True)
Ora dobbiamo impostare le configurazioni degli iperparametri per perfezionare il nostro modello usando un oggetto TrainingArguments. Questa configurazione offre 109 parametri opzionali, dandoti un controllo granulare sul processo di training. Se preferisci, puoi affidarti alle impostazioni predefinite non passando alcun parametro specifico.
from transformers import TrainingArguments
training_args = TrainingArguments()
Infine, dopo aver definito gli elementi del nostro modello, dobbiamo solo inserirli all’interno di un oggetto di training e chiamare la funzione di training associata come segue:
Con gli elementi del nostro oggetto trainer configurati, non resta che metterli insieme e chiamare la funzione train per perfezionare il nostro modello di base Llama 3.
from transformers import Trainer
trainer = Trainer(
model=model,
dataset=dataset,
args=training_args,
)
trainer.train()
Ed ecco fatto: con poche righe di codice, puoi scaricare e addestrare un modello linguistico che può essere usato per alimentare un’applicazione LLM.
Per un esempio più specifico e approfondito di come HuggingFace semplifica lo sviluppo di applicazioni LLM, consulta il nostro tutorial sulla creazione di un’applicazione QA con Milvus
Monitoraggio e valutazione continui
Una volta distribuita la tua app LLM in un ambiente di produzione, è essenziale monitorare la tua app per i seguenti motivi:
Per determinare come si comporta il tuo modello in produzione, soddisfa il caso d’uso previsto? È in linea con le aspettative dell’utente?
Come puoi migliorare il modello?
Successivamente, quando apporti miglioramenti al modello, producono gli incrementi di prestazioni attesi, oppure sono necessarie ulteriori modifiche?
Le risorse computazionali che il tuo modello consuma: devi allocare più risorse, ad esempio GPU, per far funzionare meglio la tua applicazione? Inoltre, con le risorse che consuma, quanto è scalabile la tua applicazione?
Come si comporta dopo modifiche, ad esempio training aggiuntivo, fine-tuning?
Le metriche di valutazione ti aiutano a misurare la capacità del tuo modello di produrre un output corretto in risposta al prompt di un utente. Le metriche più comunemente usate includono BLEU, ROUGE e BERTScore, descritte di seguito.
| Metrica | Scopo |
| BLEU (Bilingual Evaluation Understudy) | Spesso utilizzata nella traduzione automatica, misura la somiglianza tra il testo generato dal modello e il testo di riferimento basandosi sulla sovrapposizione di n-grammi (n parole consecutive) |
| ROUGE (Recall-Oriented Understudy for Gisting Evaluation) | Valuta la qualità dei riassunti generati dal modello confrontando la sovrapposizione di n-grammi, le sequenze di parole e le coppie di parole con i riassunti di riferimento. |
| Punteggio BERTScore (Bidirectional Encoder Representations from Transformers) | Misura la somiglianza testuale sfruttando gli embedding BERT per cogliere il significato semantico; fornisce una valutazione più dettagliata rispetto alla sovrapposizione superficiale di n-grammi, come con BLEU e ROUGE. |
Inoltre, esistono altri modi qualitativi per valutare le prestazioni della tua applicazione LLM.
Valutare l’accuratezza e la pertinenza dell’output: una risposta può essere ben costruita, ma quanto è utile rispetto al prompt di input? Fornisce il valore che l’utente si aspetta?
Determinare come gli utenti usano la tua applicazione LLM e se devi perfezionarla di conseguenza.
Valutare il sentiment delle risposte: l’applicazione risponde con il tono desiderato?
Ci sono tentativi di jailbreak, cioè tentativi di indurre il modello a produrre output che non dovrebbe? Ad esempio, chiedere a un chatbot come costruire armi artigianali. Questo approccio determina se dovresti includere barriere di sicurezza nella tua applicazione o migliorare quelle che potresti aver già implementato.
Monitorare continuamente le tue applicazioni LLM non è complicato. Sul mercato sono disponibili molti strumenti per valutare le tue applicazioni basate su LLM, tra cui LangKit, come Sage ha evidenziato nel suo intervento, Ragas, Continuous Eval, TruLens-Eval, LlamaIndex, Phoenix, DeepEval, LangSmith e OpenAI Evals.
Per saperne di più sulla valutazione delle applicazioni LLM, dai un’occhiata al nostro articolo sulla valutazione RAG.
Migliorare il tuo modello
Utilizzando le metriche e il feedback derivanti dal monitoraggio del tuo modello, puoi creare nuove iterazioni dei tuoi LLM in molto meno tempo. Un modo potente ed efficiente per implementare miglioramenti consiste nell’integrare nella tua pipeline un orchestratore MLOps come Flyte. Un orchestratore MLOps semplifica la gestione della tua applicazione LLM nei seguenti modi:
Test automatizzati: esecuzione automatica dei test ogni volta che vengono apportate modifiche.
Build software: compilazione del codice e preparazione per il deployment.
Deployment: spostamento dell’ultima versione dell’applicazione in produzione.
Monitoraggio e reporting: tracciamento dello stato di build, test e deployment e fornitura di feedback.
Un orchestratore gestisce la tua applicazione attraverso workflow, che sono una serie di passaggi necessari per eseguire un compito o un obiettivo specifico. Ogni passaggio all’interno di un workflow può essere eseguito, testato e verificato individualmente mentre l’orchestratore gestisce la sequenza in cui ciascun compito viene svolto. Esempi di workflow includono l’addestramento o il fine-tuning di un LLM, il deployment di un’applicazione in un ambiente, oppure l’integrazione di nuove funzionalità in un’applicazione in esecuzione in produzione.
I workflow semplificano lo sviluppo e la manutenzione delle applicazioni LLM in diversi modi. Innanzitutto, i workflow sono riproducibili, quindi un workflow esistente può essere copiato tra pipeline diverse, facendo risparmiare tempo e fatica considerevoli. Allo stesso modo, i workflow possono essere versionati, garantendo la possibilità di riportare una pipeline allo stato in cui si trovava in un determinato momento.
In realtà, un orchestratore MLOps è più adatto ad applicazioni LLM di livello enterprise sviluppate da più persone o team ed è probabilmente eccessivo per un’applicazione più piccola. Invece di un orchestratore, portare il tuo modello in produzione, monitorarne l’utilizzo e aggiornare manualmente la tua applicazione in base agli insight ottenuti è un approccio più pratico.
Riepilogo
Quindi, per ricapitolare il talk di Sage Elliot su LLMOps:
LLMOps si riferisce a una raccolta di filosofie e tecnologie che facilitano lo sviluppo, il deployment, la manutenzione e il miglioramento efficienti delle applicazioni LLM.
LLMOps può anche essere definito come "Building AI Together", il che significa che, come DevOps (da cui deriva), team diversi all’interno di un’organizzazione collaborano per creare applicazioni LLM invece di operare in silos con obiettivi contrastanti.
Nonostante possa sembrare opprimente, puoi iniziare con LLMOps seguendo un processo in tre passaggi:
Ship: esegui il deployment di un modello in produzione il prima possibile per ottenere feedback da utenti reali
Monitor: usa metriche per valutarne le prestazioni
Improve: usa gli insight derivanti dal monitoraggio per migliorare la tua applicazione.
HuggingFace è una risorsa eccellente per distribuire rapidamente prototipi in produzione. La libreria Transformer ti consente di scaricare ed eseguire facilmente il fine-tuning dei modelli, la libreria Datasets fornisce i dati per eseguirne il fine-tuning e Spaces offre una piattaforma di hosting per distribuirli rapidamente in produzione.
Flyte è un esempio di orchestratore MLOps che semplifica la gestione della tua applicazione LLM.
Ulteriori risorse
Ti invitiamo a esplorare le risorse qui sotto per approfondire la tua comprensione di LLMOps e imparare come applicarlo al processo di sviluppo della tua applicazione AI.
Per saperne di più sui database vettoriali, sui large language model (LLM) e su altri concetti chiave di AI e machine learning, visita la knowledge base Zilliz Learn .
Continua a leggere

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.

Context Engineering Strategies for AI Agents: A Developer’s Guide
Learn practical context engineering strategies for AI agents. Explore frameworks, tools, and techniques to improve reliability, efficiency, and cost.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.


