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.

4 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.

1 Mi Piace

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!

2 Mi Piace

Ciao riporto qui, come d’accordo, i dettagli del cluster fatto dalla scuola di cui vi parlavo, così come me li ha girati il loro fornitore:

N. 1 FRONTEND - Server 1 SOCKET XEON
• 1 x Chassis 2U – 8 x 3,5’’ hot swap SAS/SATA - Alim. ridond. 800W Titanium
• 1 x CPU Xeon 4410Y 12 core 2,0Ghz
• 4 x Memoria 16GB DDR5-4800 Reg. ECC
• 2 x SSD 240GB 2,5” SATA (RAID1 per O.S.)
• 2 x HDD 14TB SATA 3,5” 7200RPM (RAID1 per dati)
• 2 x Interfaccia Ethernet 10Gb/s Intel RJ45
• 1 x Management BMC / IPMI 2.0

N. 2 COMPUTE NODE - Server 2 SOCKET XEON GPU
• 1 x Chassis 1U – 12 x SAS/SATA hot swap 2,5” - Aliment. ridond. 1200W Titanium
• 2 x CPU Intel Xeon 4310 12 core 2,1Ghz
• 4 x Memoria 16GB DDR4-3200 Reg. ECC
• 1 x SSD 960GB 2,5” SATA
• 1 x GPU Nvidia A16
• 2 x Interfaccia Ethernet 10Gb/s Intel RJ45
• 1 x Management BMC / IPMI 2.0
SYS-120U-TNR | 1U | SuperServer | Products | Supermicro

Il fornitore è molto disponibile se necessario possiamo interpellarlo
Possiamo usare questa lista come spunto o, se necessario, possiamo anche valutare se può essere utile collaborare con la scuola per qualche motivo.

Questa sera dovremmo venire su in quattro: io, Mauro (del PNLug dove sta germinando anche li un gruppo sulla AI) e due ragazzi dell’ITS in stage da noi che sono interessati.

1 Mi Piace

Per la compatibilità della scheda con il server la risposta rapida é si puo fare.

Qualche dato in piu:

  • Esiste un riser con kit specifico per GPU, volendo, con cavi alimentazione etc.
  • Da spec supporta 2 GPU da 300W Full length e double wide, la 3090 supera il consumo, vanno collegate due alimentazioni in parallelo con un adattatore.
  • ho trovato spec troppo restrittive, tipo max 6Gb Ram… che credo siano da intendersi relativamente ai limiti dell’hardware di quando è uscito il server, poi ho trovato questo:
    https://www.reddit.com/r/homelab/comments/l2jt1g/3090_in_r730/

E dopo un po di dubbi e discussioni l OP dice di essere riuscito Yay!
Ha installato la versione Gigabyte e sta al pelo.
Ha dovuto applicare un semplice fix per evitare che le ventole decollino per il device sconosciuto.

Ciao a tutti scrivo di seguito un riassunto delle attività dopo essere stati al mittelab (08/05/24), dopo essermi confrontato con Andrea e dopo essere stato martedì al PNLug.

Mercoledì 08/05/24 ci siamo incontrati e abbiamo avuto la conferma da parte del mittelab relativamente alla disponibilità di ospitare la scheda video (che Andrea vorrebbe donare al Mittelab) in uno dei loro server con proxmox. Rispetto questo punto Andrea vorrebbe poter procedere a verificare le specifiche con qualcuno del mittelab (ugo, telespalla, ?? Aljaz? ??) per assicurarsi di comprare la scheda giusta.

Abbiamo concordato con Andrej che avremmo lavorato ad un documento condiviso dove definire le linee giuda di questo progetto. Ho scritto al bot di telegram :slight_smile: ed ad una mail (vecchia?) di Andrej che avevo per sapere dove mandare il link. Appena ho la mail corretta procedo con l’invio del link e procederemo anche su questo punto a creare una bozza che pubblicheremo qui su talk. I passi successivi sono i seguenti:

  • Definizione “regole” [Andrej e Gioque]
  • Definizione scheda da acquistare [Andrea e Mittelab]
  • definizione ambiente da installare: Vi sono due team necessari per questo task: Andrea (con anche l’aiuto di altri se vogliono) dettaglia meglio la lista degli strumenti che ritiene utili per raggiungere gli obiettivi di progetto, partendo dalla VM installata, configurata e con la scheda video dedicata a lei. Un altro team (anche noi siamo disponibili per questo) si occupa di installare la vm con le varie configurazioni ed i software previsti da Andrea.

Si è pensato di fare una call o incontro (di un paio d’ore massimo) in cui creare i primi cortocircuiti e condividere alcuni percorsi e strumenti che in questo periodo sono venuti “a galla”. Elenco di seguito quello che ho raccolto (sentitevi liberi di integrare, correggere aggiustare):

  • Mittelab:
    • Andrea (esposizione di questo progetto)
    • shi_4 text_generation_WEBUI
    • ugo OpenWebUI
  • PnLug:
    • Claudio: https://cheshirecat.ai/
    • Cleverson: usava la IA da un notebook Jupiter (quindi si vedrà quanto poco python sia necessario per far girare i modelli)

Per organizzare questo incontro (o questa call): il PNLug si trova il martedì, il mittelab il lunedì o il mercoledì… Si accettano consigli e disponibilità :slight_smile: Posso chiedere ai ragazzi del lug se sono interessati/possibilitati a venire a TS presso la sede del mittelab o viceversa se volete. Possiamo anche fare tutto da remoto (noi mettiamo a disposizione BBB e quant’altro se serve).

Ciao ragazzi,
dato che si vogliono mettere le schede video nei server, proviamo a pensare anche ai modelli “corretti”, e non a quelli consumer.
Per esempio:

Bisognerebbe capire se per i nostri scopi vanno bene piú o meno tutte (e si decide solo su base di prestazioni e prezzo), oppure se per l’IA serve “da una generazione in poi” o qualcosa di simile, perché magari migliora molto semplicemente perché la versione 2020 ha delle istruzioni macchina che la 2019 non ha (sparo una cosa).

Non ho mai indagato se vi é un constrait di questo tipo, magari avete maggiori info.

Metto anche la doc degli r730… che potrebbe essere utile:

Ma Andrea è del Mittelab! :slight_smile:

info@mittelab.org potrebbe essere un buon punto di partenza, poi distribuisco io!

@zetsu : come fai a differenziare carte consumer vs. professional ?

Correggetmi se sbaglio.
Ci sono schede piu pensate ad esempio per il gaming, e altre per uso in datacenter o su workstation. Sono proprio serie, avrai sentito delle Quadro o le Tesla.

I vantaggi principali delle schede pro sono feature come la possibilità di suddividere una GPU in più GPU virtuali, o di combinare la memoria di più schede grafiche.
Inoltre le quadro etc… se non sbaglio lavorano con precisione a 64 bit (inutile per llm) mentre le RTX sono ottimizzate per 32

Per contro le schede consumer costano meno quindi di fatto dato che serve tanta vRAM si puo prendere una scheda che ne ha di piu rispetto ad esempio a una Tesla dello stesso

oggi abbiamo guardato un po di info, e faccio qui un dump:
focalizzandoci su schede nvidia (anche se io sono un amd fanboy XD)
Ollama richiede schede con cuda versione 5.0 o piú.

Vedendo le schede di servershop24, andando sull’economico, vi é la 2080 TI. La quadro p500 costa di piú e ha minori performance (meno cuda core).

andando invece su nuovo, pensando di prendere un pc “bello che pronto”. Abbiamo visto da pcspecialist, e abbiamo optato per processore intel dopo aver confrontato il rapporto prestazioni prezzo anche con AMD.
Con <1200 si prende un

  • i5-12400,
  • asus b760-plus (4 banchi di ram)
  • 64 GB ram (su 2 banchi, ne restano 2 se serve ram, ma questa é una cosa scelta a caso, non so quanta ram ci serva)
  • nvidia rtx 4060 ti (dovrebbe overperformare la 2080 ti di un buon 80%)
  • 256GB nvme
  • 550W corsair (alim)
  • ovviamente senza Windows

la 4060 ti si trova nuova 400<$$$<500, vi sono notizie che la 2080 ti entra e gira sui dell r730 (anche xd) stando a reddit/homelab. la 4070ti é piú piccola, quindi dovrebbe andare. Va capito qualé il connettore/sdoppiatore/cavo per alimentare queste schede.

</end dump>

Il cavo per alimentarle penso sia il classico molex e in caso lo sdoppiatore ce lo possiamo fare in casa se finisce nel server

Ciao a tutti, sono felice che la discussione si sia accesa! :smiley:

Se capisco bene, @zetsu stai valutando la possibilità che si possa acquistare un PC desktop? Per quanto riguarda le GPU da server, da quello che sto vedendo, oltre agli aggiustamenti hardware per integrarla nel rack, c’è in effetti un problema legato ai driver. Infatti, al di là della compatibilità con ollama, ci dobbiamo chiedere quanto un blob proprietario non più mantenuto possa essere efficiente nel far girare un LLM. Chiedo ancora a @zetsu: il PC che avete configurato è con DDR5 giusto?

stiamo valutando varie possibilitá, non abbiamo ancora deciso, e il post era proprio per capire e fare due analisi. Il pc che abbiamo “assemblato virtualmente” é con ddr4.
Non ho verificato il costo della versione con ddr5.
Diciamo che vi sono varie strade:

  • scheda su server
    • che se non funziona gli metti intorno un pc desktop
  • pc desktop
    • che quando “si va in produzione” dovremo capire come farlo andare in server, o decidere qual’é il prodotto… (ma questo é un problema aziendale, non ha senso porre a voi questa problematica).

I vantaggi del pc desktop é che “funziona” senza porsi troppe bare di compatibilitá tra gpu e server.

Uno delle milestone iniziali é iniziare a capire che vantaggi porta una gpu rispetto all’altra, in modo da poter decidere cosa comprare con del senso, senza andare a spendere 2000$ per una gpu che poi ci da le stesse prestazioni di una da 500 (di cui ne possiamo prendere 4).

Cosa che mi sono dimenticato, molte schede nvidia, dalla serie 30x0 in poi, hanno il lhr (limited hash r…), sostanzialmente sono schede video a cui hanno limitato la capacitá di calcolare has, per evitare che siano appetibili ai miner. In teoria questa limitazione non influisce sulla AI, ma non ho trovato informazioni attendibili.