Snowflake ha recentemente annunciato una significativa collaborazione con NVIDIA, mirata a facilitare l'esecuzione diretta di carichi di lavoro di calcolo accelerati da NVIDIA all'interno degli account Snowflake. Questa partnership strategica apre nuove e interessanti possibilità per le aziende che desiderano sfruttare il potenziale dell'intelligenza artificiale, in particolare nel campo dei grandi modelli linguistici (LLM). Tra i casi d'uso più rilevanti spiccano l'addestramento, la personalizzazione e il deployment sicuro di LLM direttamente nell'ambiente Snowflake, garantendo al contempo la massima sicurezza e integrità dei dati.
Tutto ciò è stato reso possibile grazie all'introduzione dei nostri nuovi Snowpark Container Services, attualmente disponibili in anteprima privata, e all'integrazione con l'avanzata intelligenza artificiale di NVIDIA. Un numero crescente dei nostri clienti ha espresso il desiderio di eseguire LLM all'interno di Snowflake per poterli utilizzare direttamente con i propri dati già archiviati, eliminando la necessità di ricorrere a API esterne, spesso complesse e costose in termini di trasferimento dati e sicurezza. Oltre alla semplice esecuzione, i clienti desiderano ardentemente la capacità di affinare modelli LLM pre-addestrati, inclusi i modelli disponibili nel rinomato framework NeMo di NVIDIA e i popolari modelli Llama di Meta, utilizzando i propri set di dati privati e sensibili presenti in Snowflake.
In questo articolo di blog, approfondiremo le straordinarie opportunità che questa integrazione offre ai nostri clienti, dettagliando il funzionamento intrinseco di questo processo rivoluzionario. Presenteremo inoltre alcuni dei casi d'uso più promettenti che stiamo esplorando attivamente con i primi utenti di questa tecnologia innovativa, evidenziando il valore aggiunto che essa può portare a diverse realtà aziendali.
Snowpark Container Services: il cuore dell'integrazione
La nostra innovativa funzionalità, Snowpark Container Services, è il pilastro tecnologico che consente tutto questo. Permette agli utenti di eseguire container Docker direttamente all'interno di Snowflake, inclusi specificamente i container accelerati che sfruttano la potenza delle GPU NVIDIA. NVIDIA, da parte sua, fornisce una vasta libreria di container Docker gratuiti e pre-configurati, ottimizzati per diverse tipologie di carichi di lavoro di intelligenza artificiale, comprese quelle che utilizzano il framework NeMo per lo sviluppo e l'implementazione di LLM.
Avviando semplicemente una delle immagini container NVIDIA AI Enterprise, incluse con la licenza di valutazione di 90 giorni offerta, direttamente nei Snowpark Container Services, è possibile eseguire tali carichi di lavoro in modo sicuro e senza interruzioni nel proprio account Snowflake, operando direttamente sui propri dati. Poiché il container viene eseguito all'interno dell'ambiente Snowflake, le aziende possono fornire agli utenti funzioni definite dall'utente (UDF) che possono essere attivate tramite SQL. Queste UDF consentono di eseguire elaborazioni avanzate all'interno del container senza aggiungere complessità o overhead operativi. Questo approccio garantisce che i dati sensibili rimangano sempre all'interno del perimetro di sicurezza di Snowflake.
La flessibilità offerta dai Snowpark Container Services è praticamente illimitata. Questa piattaforma non solo supporta l'esecuzione di carichi di lavoro AI, ma consente anche di implementare e utilizzare strumenti di sviluppo open source di uso comune, come i notebook Jupyter. Questi strumenti offrono un ambiente pratico e interattivo per testare, sperimentare e affinare in modo iterativo i grandi modelli linguistici (LLM), accelerando notevolmente il ciclo di sviluppo e ottimizzazione.
Comprendere gli LLM pre-addestrati e i loro limiti
Gli LLM "pronti all'uso" sono anche noti come "modelli pre-addestrati". Questo termine indica che un vasto volume di dati di addestramento è stato aggregato e il modello è stato addestrato in anticipo su di esso. Generalmente, questi modelli, come il framework NeMo di NVIDIA e i modelli Llama di Meta, sono di natura generalista: eccellono nella comprensione e generazione dell'inglese e di altre lingue, e possiedono diversi livelli di conoscenza su una vasta gamma di argomenti. Possono, in una certa misura, avere familiarità con il vostro settore specifico, il suo gergo, i processi e le esigenze, ma in modo non approfondito. Tipicamente, conoscono poco o nulla della vostra azienda in particolare, delle vostre politiche interne, dei vostri prodotti specifici o della vostra base clienti.
Inoltre, questi modelli pre-addestrati sono spesso ottimizzati per eseguire specifici tipi di compiti: rispondere a domande generiche, riassumere testi, redigere contenuti creativi o conversare su argomenti ampi. Sebbene siano estremamente versatili e utili per applicazioni generali, spesso non dispongono di conoscenze sufficientemente specifiche o approfondite per affrontare casi d'uso aziendali complessi con un alto livello di precisione ed efficacia. È qui che emerge la necessità di personalizzare ulteriormente questi modelli.
Pre-addestramento vs. Affinamento: una distinzione fondamentale
È proprio in questo contesto che il pre-addestramento e l'affinamento degli LLM diventano fondamentali. Il pre-addestramento implica generalmente l'addestramento di un LLM da zero, un processo end-to-end, utilizzando un vasto e specifico set di dati di addestramento, che l'azienda può mantenere in proprio possesso. Questo porta alla creazione di un modello che possiede una conoscenza intrinseca degli elementi cruciali per l'organizzazione. Alcuni modelli pre-addestrati possono essere "ulteriormente addestrati" per approfondire le loro conoscenze in un dominio specifico: questo processo è noto come affinamento (o *fine-tuning*).
Tecniche di affinamento supportate dal framework NeMo di NVIDIA
Questo affinamento su Snowflake è reso possibile grazie al framework NeMo di NVIDIA, che è incluso nella piattaforma software NVIDIA AI Enterprise. È importante notare che il pre-addestramento può essere estremamente dispendioso in termini di dati e risorse computazionali. Spesso, l'affinamento di modelli esistenti produce risultati più che soddisfacenti con un investimento di risorse nettamente inferiore. Il framework NeMo supporta diverse tecniche di affinamento, che vanno dall'affinamento completo (*full fine-tuning*) all'affinamento di un singolo parametro (PEFT, *Parameter-Efficient Fine-Tuning*).
Tra le tecniche di affinamento completo supportate, possiamo citare:
- La supervisione dell'affinamento.
- L'apprendimento per rinforzo con feedback umano (RLHF, *Reinforcement Learning with Human Feedback*).
Per quanto riguarda le tecniche PEFT supportate, esse includono:
- L'apprendimento tramite prompt (*prompt learning*), che comprende:
- L'affinamento del prompt (*prompt tuning*).
- L'affinamento di un parametro (*parameter tuning*).
- Gli adattatori (*adapters*).
- L'adattamento di rango inferiore (*low-rank adaptation*).
- L'IA3.
L'affinamento di un modello è estremamente utile per insegnargli a svolgere una nuova attività o per affinare il modo in cui esegue un'attività esistente, ma è meno efficace per fornirgli nuove conoscenze di base. Se l'obiettivo è introdurre nuove conoscenze fondamentali in un LLM e non si desidera intraprendere il complesso e costoso processo di pre-addestramento di un nuovo LLM da zero, è possibile esplorare approcci di generazione aumentata di recupero (RAG, *Retrieval Augmented Generation*). Esempi di tali approcci sono stati presentati in un articolo precedente che illustra il nostro chatbot di esempio, Frosty.
Casi d'uso pratici e velocità dell'affinamento
Tuttavia, l'affinamento rimane una soluzione eccellente per modificare il modo in cui un LLM formula le proprie risposte o per adattarlo a nuove mansioni specifiche. Ad esempio, se si sta creando un chatbot per il servizio clienti e si desidera che agisca e scriva in un determinato stile o tono, è possibile addestrarlo specificamente per questo scopo. Questo processo implica l'utilizzo dei dati disponibili nel proprio account Snowflake, la creazione di un set di addestramento composto da esempi di azioni e frasi corrette desiderate, e l'applicazione successiva del processo di affinamento per generare un nuovo modello personalizzato.
Una volta creato il nuovo modello, sarà possibile testarlo rispetto al modello di base per assicurarsi che funzioni esattamente come desiderato. L'affinamento dei modelli è generalmente un processo piuttosto rapido: bastano poche ore di lavoro con le GPU NVIDIA H100, A100 o A10 Tensor Core, a seconda delle dimensioni del modello di base e del volume degli esempi utilizzati per l'affinamento. Questa rapidità consente un ciclo di test e iterazione efficiente, permettendo di trovare rapidamente la configurazione che funziona meglio. In confronto, il pre-addestramento di un modello end-to-end può richiedere giorni o settimane, e la necessità di eseguire simultaneamente più flotte di GPU.
Ciò che richiede più tempo nel processo di affinamento è la creazione del set di addestramento per l'affinamento, ovvero gli esempi che mostrano come si desidera che l'LLM addestrato risponda in determinate situazioni. Esistono set di affinamento preesistenti, ma se si desidera un modello veramente su misura per le proprie esigenze aziendali, sarà necessario un set di affinamento altrettanto personalizzato. Per alcuni casi d'uso, è possibile ricavare questi dati di affinamento direttamente dal proprio account Snowflake. Ad esempio, se si sono conservate vecchie discussioni di servizio clienti, trascrizioni, o scambi di e-mail con i propri clienti all'interno di Snowflake, è possibile mirare l'affinamento sugli esempi esistenti che sono stati valutati meglio o che hanno generato i risultati più efficaci.
Sicurezza dei dati: un pilastro fondamentale
Un aspetto cruciale di questa soluzione è la sicurezza dei dati. Poiché l'affinamento avviene direttamente sui nodi GPU eseguiti all'interno dei container Snowpark nel vostro account Snowflake, i vostri dati di addestramento confidenziali non lasciano mai il vostro account. Essi rimangono nelle tabelle o nei file di archiviazione temporanea di Snowflake, dove sono già residenti. Inoltre, anche il modello creato, che incorpora gli apprendimenti derivati dalle vostre informazioni confidenziali, rimane all'interno di Snowflake in un'area protetta e può essere utilizzato dai container Snowpark. Mantenendo il pre-addestramento, l'affinamento e lo storage end-to-end dei modelli creati, così come l'utilizzo del modello stesso all'interno di Snowflake, le aziende possono sfruttare le più recenti tecnologie LLM open source di NVIDIA e di altri, senza che i propri dati sensibili debbano mai lasciare il perimetro della loro organizzazione.