Dolly, un modello AI simile a ChatGPT, ma libero ed open-source!

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.

11 risposte a “Dolly, un modello AI simile a ChatGPT, ma libero ed open-source!”

  1. Avatar Raoul Scarazzini

    Ecco arrivata nel frattempo la risposta alla domanda (ci ha messo qualcosa meno di 24 ore stavolta):

    'Red Hat and SUSE are both Linux distributors. The main difference is that Red Hat focuses on customer service and support. SUSE stands for Surface Under Study and follows the "student model" which is a model where the operating system is freely available for academic use. This allows university campuses, schools and other educational institutions to buy SUSE machines in large quantities at low cost.'

    Giudicate voi la qualità.

  2. Avatar Gianluca Gabrielli

    Un po’ scarna come risposta :), ma comunque molto interessante.

  3. Avatar Marco Scarpa
    Marco Scarpa

    30GB come Large Language Model non è neanche tantissimo.

  4. Avatar Raoul Scarazzini

    Spendendo 30 dollari eh…

  5. Avatar Denis
    Denis

    Una risposta piena di assurdità dopo 24 ore di calcolo. Spero che il commento “risposta legittima” fosse ironico.

  6. Avatar Denis
    Denis

    Forse intendevi “scarsa” 🙂

  7. Avatar Raoul Scarazzini

    Devi contestualizzare. Dietro questa risposta c’è un modello che occupa 25-30GB, elaborato in locale e che è costato 30 dollari. Non l’intero Azure cloud istruito con Wikipedia e GitHub. Quindi in questo senso la risposta è legittima.
    Certamente più “bruttina” la risposta sotto su RH/SUSE di cui ho scritto nell’altro commento.

  8. Avatar Denis
    Denis

    Il problema non é tanto il tempo impiegato, ma il fatto che la risposta é completamente sbagliata dopo un tale lasso di tempo.

  9. Avatar Denis
    Denis

    Ciao Gianluca, la mia era piú che altro una battuta, come volevo sottolineare con virgolette e sorriso alla fine.
    Conosco bene il significato di “scarno”.
    🙂

  10. Avatar Gianluca Gabrielli

    Ora mi e’ chiaro. Sfortunatamente tutta la ricchezza della comunicazione non-verbale viene persa nei brevi messaggi solamente testuali. Ci tengo ad evidenziarlo perche’ spesso l’unica lettura che diamo a quello che scriviamo e’ come noi stessi la interpretiamo e non come suonerebbe nella mente di chi la legge.

    My 2c.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *