Ricercatori dell’Università di Washington e della Duke University presentano Punica un sistema di intelligenza artificiale per servire più modelli di LoRA in un cluster GPU condiviso.

Ricercatori dell'Università di Washington e della Duke University presentano Punica un sistema di intelligenza artificiale per supportare più modelli di LoRA in un cluster GPU condiviso.

Specializzarsi in modelli di linguaggio di grandi dimensioni pre-addestrati (LLM) per compiti specifici del dominio con dati di addestramento minimi, adattamento a bassa rango o LoRA, sta diventando popolare. Gli utenti possono addestrare vari modelli LoRA a costo minimo poiché LoRA riduce notevolmente il numero di parametri addestrabili mantenendo i pesi del modello pre-addestrato e aggiungendo matrici di decomposizione dei ranghi addestrabili ad ogni layer dell’architettura Transformer. LoRA fa ora parte di diversi framework di fine-tuning ampiamente utilizzati. Per soddisfare le esigenze dei propri utenti, i fornitori di ML devono quindi offrire contemporaneamente molti modelli LoRA specifici. Le risorse GPU vengono sprecate semplicemente fornendo modelli LoRA come se fossero stati addestrati individualmente.

Se per ogni modello LoRA sono necessarie k GPU, allora sembrerebbe necessario avere k × n GPU per supportare n modelli LoRA separati. Questo metodo semplice ignora la possibilità di correlazioni tra i pesi di questi modelli LoRA perché provengono dagli stessi modelli pre-addestrati. Essi sostengono che un sistema efficace che supporta diversi modelli LoRA distinti deve seguire tre principi di progettazione. Dato che le GPU (G1) sono costose e scarse, i carichi di lavoro di servizio LoRA multi-tenant devono essere concentrati su un numero ridotto di GPU per massimizzare l’utilizzo delle GPU. (G2) Il batching è uno dei migliori, se non il migliore, modo per combinare i carichi di lavoro di ML per aumentare le prestazioni e l’utilizzo delle GPU, come hanno notato studi precedenti. Ma fanno il batching solo per funzioni nei casi in cui vengono richiesti modelli identici. Di conseguenza, devono consentire il batching per vari modelli LoRA. (G3) La maggior parte dei costi del servizio di modelli è attribuita alla fase di decodifica. Pertanto, devono concentrarsi solo sulle prestazioni di stage sorprendenti. Possono utilizzare metodi semplici, come il caricamento su richiesta dei pesi del modello LoRA, per componenti meno cruciali del servizio di modelli. Basandosi su questi tre criteri, ricercatori dell’Università di Washington e dell’Università di Duke hanno sviluppato e costruito Punica, una piattaforma di servizio multi-tenant per modelli LoRA su un cluster di GPU condiviso. La moltiplicazione matrice-vettore segmentata (SGMV), un nuovo kernel CUDA, è una delle principali innovazioni.

SGMV rende possibile il batching delle operazioni GPU per l’esecuzione simultanea di diversi modelli LoRA distinti. Riducendo il numero di copie del modello pre-addestrato che una GPU deve mantenere in memoria, SGMV aumenta drasticamente l’efficienza delle GPU sia nella memoria che nel calcolo. Con questo nuovo kernel CUDA, combinano alcuni metodi all’avanguardia per l’ottimizzazione del sistema. Sorprendentemente, riscontrano poche differenze di prestazioni nel batching dei medesimi modelli LoRA rispetto al batching di modelli LoRA diversi. SGMV consente il batching delle richieste da diversi modelli LoRA. Allo stesso tempo, il ritardo del caricamento su richiesta del modello LoRA è di pochi millisecondi.

Punica può ora raggruppare le richieste degli utenti in un gruppo più piccolo di GPU senza essere limitata dai modelli LoRA attualmente in esecuzione sulle GPU. Punica utilizza i seguenti due metodi per organizzare le attività per diversi utenti. Punica indirizza una nuova richiesta a un gruppo selezionato di GPU attualmente in uso, assicurando che siano utilizzate al massimo delle loro potenzialità. Punica impegnerà ulteriori risorse GPU solo quando le GPU attuali saranno completamente utilizzate. Punica sposta regolarmente le richieste attive per la consolidazione. Ciò consente di rilasciare le risorse GPU che Punica ha disponibili. Sui cluster di GPU NVIDIA A100, valutano modelli LoRA derivati dai modelli Llama2 7B, 13B e 70B.

Punica aggiunge un ritardo di 2 ms per token e offre un throughput superiore del 12x rispetto alle soluzioni di servizio LLM all’avanguardia con le stesse risorse GPU. Le seguenti sono le contribuzioni di questo documento:

• Riconoscono il potenziale per l’elaborazione batch delle richieste da vari modelli LoRA.

• Creano e mettono in pratica un kernel CUDA efficace per l’esecuzione simultanea di molti modelli LoRA.

• Forniscono tecniche di pianificazione innovative per combinare le attività di molti utenti in LoRA.