LLM@mittelab

Introduzione

Si vuole progettare e implementare un servizio di IA generativa per testi ed immagini. Alla base del servizio sono presenti un LLM di dimensioni relativamente ridotte (es: Mistral7B) e l’implementazione di un diffusion model (es: Stable Diffusion) L’obiettivo del progetto consiste nello sperimentare alcune configurazioni hardware/software in grado di fornire un sistema di IA generativa sostenibile che sia basato su software libero, modelli di linguaggio “open” e risorse hardware consumer grade.

Hardware

L’utilizzo di llama.cpp consente l’inferenza anche su sola CPU ma è consigliata la presenza di una o più GPU per distribuire in maniera efficace il carico di lavoro e permettere un eventuale utilizzo concorrente. È auspicabile anche la presenza di una certa quantità di RAM (>= 32 GB DDR4 o ancora meglio DDR5) e di una CPU di recente generazione. Dalle sperimentazioni effettuate finora si è compreso che affinché un tale sistema possa essere accettabilmente utilizzabile con un token rate superiore a 10 token/s, le risorse hardware devono essere opportunamente tarate. Un’adeguata scelta dell’hardware sarebbe maggiormente giustificata qualora si decida si sperimentare la promettente strada della RAG (si veda la sezione Progetto demo).

Requisiti minimi

  • CPU i7 dalla nona generazione in poi
  • RAM >= 32 GB DDR4
  • GPU NVIDIA 3090 (24 GB VRAM)
  • 256 GB di spazio disco

Risparmio energetico

E’ utile prevedere delle strategie di risparmio energetico quali ad esempio

  • WOL (Wake-On-LAN)
  • GPU undervolting

Software

Il servizio potrebbe essere confinato all’interno di un container docker/podman. Il container potrebbe a sua volta essere eseguito all’interno di un’architettura virtualizzata con accesso diretto alla GPU (Proxmox?). Il passaggio a k8s potrebbe essere previsto in un secondo momento.

Servizi esposti

I servizi riportati nell’elenco che segue potrebbero essere esposti su una VPN (Wireguard?).

Entrambi i servizi lavorano anche a “basso livello” ed espongono una API REST che rende possibile il loro utilizzo attraverso client quali

  • IDE
  • editor di testi
  • linea di comando
  • scripts
  • webapp

Progetto demo

Realizzazione di un chatbot web che risponda a domande inerenti il Mittelab attraverso l’uso della RAG (risorse prese dal sito web o da altra documentazione anche non strutturata).

Possibili sviluppi futuri

Il passo successivo potrebbe essere quello di sperimentare un modello multimodale come llava.

3 Mi Piace

Sono interessato a partecipare, ottima scelta la web ui di stable diffusion. L’integrazione con civitai massimizza le sue potenzialità. Si potrebbe aggiungere la generazione di video grazie al testo (attualmente sto testando pinokio (trovato grazie a questo video su YouTube)).

Ciao Andrea e Ugo, anche a noi piacerebbe partecipare a questo gruppo.
Ho avuto modo di raccogliere un po’ di feedback quando sono stato li, ed anche in fiera questo weekend.
Penso che dovremmo organizzare un kick-off, purtroppo però non riuscirò ad essere in sede da voi domani sera, però se volete posso essere presente da remoto, per esempio dalle 21:00 alle 22:00.

Di seguito i temi del kick-off che mi vengono in mente.

Penso che il primo passo sia di “procurarsi” l’hardware:

  • partendo dalla configurazione proposta da Andrea, arrivare ad una scelta definitva
  • fare una valutazione dei costi
  • cercare i fornitori e procurarselo

Noi potremmo contribuire a parte del costo dell’hadrdware, o anche ad ospitarlo, una volta capiti alcuni dettagli, sia tecnici che di collaborazione: tema da affrontare assieme ai ragazzi del mittelab come anticipato durante il nostro incontro (anche dopo il kick-off).

Una volta fatto il kick-off penso che si possa lavorare anche in modo asincrono tenendoci allineati anche con incontri regolari (in sede e non: non sono sicuro che potremo essere sempre in sede).
Se c’è bisogno noi siamo disponibili a fornire, eventualmente, quello che può servire di quello che abbiamo (Nextcloud con online editing, BigBlueButton, etc.).
Ditemi voi come preferite procedere, i temi che sono emersi erano diversi e sarebbe bello tenerne traccia ma soprattutto cercare di “tenere le fila” del progetto e delle relative spore.

Ciao a tutti,

grazie per le risposte. Sono d’accordo con il percorso di lavoro delinato da Giorgio e quindi do la mia disponibilità per una riunione a distanza oggi dalle 21.00 alle 22.00.

Ciao a tutti,
Ho creato una stanza BBB dedicata all’incontro di questa sera dalle 21:00 alle 22:00, è sufficiente un browser e si può usare anche un telefono:
link: Continuity Public Cloud
password: aPEeqz4L
Se preferite altri strumenti fatemi sapere.

Ciao a tutti,

durante la riunione tenutasi a distanza il 24.04 a cui hanno partecipato il sottoscritto, @gioque , @Telespalla e @ugo, si è discusso dei prossimi possibili passi per iniziare il progetto. Sono emerse varie ipotesi relativamente all’acquisto dell’hardware e alla logistica per ospitarlo.

Acquisto dell’hardware

Il sottoscritto si è reso disponibile all’acquisto di una scheda grafica usata con GPU NVIDIA 3090. La scheda potrebbe essere donata al Mittelab. Il costo dovrebbe aggirarsi tra i 650 e gli 800 EUR. A tal proposito chiedo se esiste la possibilità di effettuare una deduzione fiscale, anche se il prodotto è usato.
Anche Continuity si è resa disponibile a supportare il progetto con l’acquisto di hardware.

Logistica

@Telespalla ha ipotizzato la possibilità di montare la scheda grafica su uno dei server già presenti nei rack presso la sede del Mittelab. Occorre tuttavia verificare se le dimensioni della scheda sono compatibili con il cabinet oltreché tenere conto dei consumi energetici. A tal proposito, @ugo ha fatto presente che potrebbero esserci modelli di scheda grafica con GPU 3090 più o meno compatibili con lo spazio a disposizione e che è quindi sono necessarie delle specifiche tecniche esatte per un acquisto oculato.

In alternativa, il sistema potrebbe essere ospitato all’interno dell’infrastruttura di Continuity. Anche @gioque ha pensato alla stessa tipologia di server.

Nel caso fosse necessario altro hardware, sarebbe possibile coinvolgere un fornitore che @gioque ha conosciuto in quanto ha dotato una scuola di un’infrastruttura dedicata. Eventualmente, il fornitore può essere invitato in una delle prossime riunioni.

Prossimi passi

  • Definire la logistica: dove verrà collocata l’infrastruttura hardware?
  • Raccogliere delle specifiche hardware precise e formulare una lista della spesa: cosa si dovrà acquistare? Chi acquisterà cosa?
  • Decidere una data per una riunione da tenersi prima dell’acquisto. Propongo l’8 maggio.
  • Procedere con la ricerca e l’acquisto dell’hardware.

Vi ringrazio e rimango in attesa di conoscere le vostre opinioni!