Da quando la bolla AI è esplosa, possiamo dire in concomitanza con il rilascio di ChatGPT da parte di OpenAI lo scorso novembre, sono state parecchie le soluzioni LLM di cui abbiamo parlato. LLM, ossia Large Language Model, un insieme cioè di informazioni interrogabile istruito usando come bacino quantità immense di dati.
Tutte le soluzioni LLM trattate fino ad oggi nascevano come modelli “privati”. Si pensi a ChatGPT: questo può essere interrogato (più o meno liberamente, al momento in Italia è bloccato dal garante per la privacy), ma la natura dei dati interrogati rimane proprietà esclusiva del “fornitore”, in questo caso OpenAI.
Dato quindi questo presupposto, la pubblicazione di Dolly da parte di DataBricks, rappresenta per la questione AI una vera e propria rivoluzione poiché, a quanto riporta l’azienda, è il primo LLM completamente open-source addestrato spendendo meno di trenta dollari per mostrare capacità di iterazione simili a quelle di ChatGPT.
Le cose importanti riguardo questo modello? Anzitutto è libero, poiché è distribuito mediante licenza Creative Commons, e qualsiasi azienda lo può usare, modificare o estendere per costruire ed offrire servizi di chat bot senza pagare licenze.
Curiosi di vedere come funziona? Date un occhio a questo video, partendo dal presupposto che la voce narrante è un tantinello troppo entusiasta:
Come quindi avrete capito, il problema principale di questo prodotto è che necessità di parecchia potenza computazionale e quindi, su sistemi standard senza GPU ultra perfomanti potrebbe essere un filino lento. Per “filino” intendo metterci anche 24 ore per fornire una risposta. Almeno questo è quanto avvenuto su uno dei miei sistemi.
Per ora poco importa, se volete provarlo localmente è sufficiente abbiate Python3 ed almeno una trentina di gigabyte di spazio libero, dopodiché sarà sufficiente creare un Virtual Environment ed installare mediante pip i pacchetti accelerate>=0.12.0 e transformers[torch]==4.25.1:
rasca@globalwarming /storage/dolly # python3 -m venv . rasca@globalwarming /storage/dolly # source bin/activate (dolly) rasca@globalwarming /storage/dolly # pip3 install 'accelerate>=0.12.0' 'transformers[torch]==4.25.1'Ed inizializzare l’ambiente (l’operazione comporterà il download dell’LLM):
(dolly) rasca@globalwarming /storage/dolly # python3 >>> import torch >>> from transformers import pipeline >>> generate_text = pipeline(model="databricks/dolly-v2-12b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto") Downloading (…)lve/main/config.json: 100%|███| 819/819 [00:00<00:00, 393kB/s] Downloading (…)instruct_pipeline.py: 100%|███| 7.16k/7.16k [00:00<00:00, 3.28MB/s] Downloading pytorch_model.bin: 100%|███| 23.8G/23.8G [03:46<00:00, 105MB/s] Downloading (…)okenizer_config.json: 100%|███| 449/449 [00:00<00:00, 136kB/s] Downloading (…)/main/tokenizer.json: 100%|███| 2.11M/2.11M [00:00<00:00, 13.9MB/s] Downloading (…)cial_tokens_map.json: 100%|███| 228/228 [00:00<00:00, 102kB/s]Fatto questo il sistema sarà “pronto” a ricevere domande:
>>> generate_text("Explain to me the difference between nuclear fission and fusion.")Nel caso specifico del sistema usato per il test abbiamo una macchina con 64GB di RAM e 8 CPU, NON DEDICATE UNICAMENTE a questa operazione. Il risultato è stato questo:
"Nuclear fusion occurs when two nuclei merge to form a single, larger nucleus. For example, a water atom fused with another hydrogen atom to form a single molecule of water. Nuclear fusion is commonly found in the sun, where nuclear particles called protons fuse inside the sun's core to form neutrons. These neutrons in turn fuse other protons to form helium.\n\nNuclear fission, on the other hand, occurs when a nucleus breaks up into two or more fragments. In this process, two orethical atoms become one smaller atoms with more neutrons and less protons. For example, uranium-235 is fissionable - when hit by a neutron, it will break up into smaller pieces of barium and ps assess.\n\nOverall, nuclear fusion is a more energy-efficient process than nuclear fission, but the latter produces more carbon dioxide - the release of so much carbon dioxide from nuclear power plants is one of the factors contributing to global warming."Quindi una risposta legittima, arrivata dopo più di 24 ore (che però non hanno bloccato la macchina).
La domanda in sé era quella suggerita dagli sviluppatori stessi, ma il modello è addestrato per rispondere a qualsiasi cosa. Tanto che ho subito fatto una nuova domanda:
>>> generate_text("Explain to me the difference between Red Hat and SUSE.")La risposta? Al momento ancora in elaborazione…
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.