Come usare Hugging Face, il tool per sperimentare LLM e IA in modo facile

Hugging Face Logo Emoji
Come cominciare a usare Hugging Face, il servizio online che unisce un repository di modelli IA open source, librerie dedicate e una attiva community di sviluppatori e ricercatori da cui imparare. Il tutto in modo gratuito.

L’Intelligenza Artificiale si basa su modelli pre-addestrati che hanno superato una fase di learning in cui grandi dataset tematici sono stati analizzati ed elaborati per fornire capacità di interpretazione. Un modello di intelligenza artificiale cresce nel tempo con diverse fasi di learning costose, onerose e lunghe. Pertanto, una volta pronto, deve possibilmente essere conservato e condiviso.

Hugging Face è una piattaforma che nasce proprio con l’intento di facilitare la pubblicazione e la condivisione di modelli di intelligenza artificiale, ma fa anche molto di più. È un hub completo che, grazie ad una vasta e attivissima community, include tanti strumenti utilizzabili in linguaggio Python come librerie (includendo transformers, tokenizer eccetera), dataset e qualsiasi altro materiale utile per cominiciare a lavorare con l’intelligenza artificiale. HuggingFace è fortemente incentrato sul NLP (Natural Language Processing, Elaborazione del Linguaggio Naturale) che è la culla degli LLM e dell’Intelligenza Artificiale generativa. Proprio questo spiega come mai, nato già come progetto di successo nel 2017, Hugging Face sia oggi un punto di riferimento assoluto dello scenario AI mondiale.

In questo articolo vogliamo esplorare Hugging Face in maniera assolutamente pratica, per mettere aziende, programmatori e curiosi in condizione di iniziare ad apprezzarlo e ricavarne velocemente i primi risultati.

Organizzazione di Hugging Face

Hugging Face è un sito molto vasto, ma le sezioni principali sono tre: Models, Spaces e Datasets.

Schermata del sito Hugging Face con le principali sezioni: Models, Spaces e Dataset

Modelli Hugging Face

Una delle zone più interessanti di Hugging Face è l’archivio di modelli sempre aggiornato, in cui troviamo un elenco di modelli IA, ciascuno ognuno dei quali è identificato con un nome che indica il produttore e il nome del modello separati da uno slash (per esempio: microsoft/phi-2). È possibile, mediante un form di ricerca, applicare filtri per identificare i modelli che rispondono alle nostre specifiche richieste e ci mettano in condizione di perseguire i nostri scopi. A ogni modello corrisponde una pagina web con descrizione, caratteristiche, utilizzi e documentazione varia, nonché statistiche di impiego da parte della community.

La base di modelli presenti in Hugging Face cresce in continuazione ma, come si può immaginare, non tutti saranno progetti attivi e ben mantenuti. Alcuni non sono ottimizzati e altri ancora sono abbandonati, ma l’aspetto social di questo hub permette di comprendere quali utilizzare e qual è il livello di maturità che li contraddistingue.

HuggingSpaces

Gli Hugging Face Spaces, ho HuggingSpaces, sono ambienti runtime in cui i membri della community pubblicano le proprie applicazioni di intelligenza artificiale in modo da poterne dimostrare le funzionalità, sebbene a volte con un’interfaccia un po’ rudimentale. Ci sono al momento più di 100.000 Spaces pronti da esplorare, sperimentare e – se si vuole – scaricare il codice per modificarlo, creare un progetto pilota o farne un’implementazione sul proprio sito o applicazione, nel rispetto delle licenze open source.

Gli ambiti sono tantissimi: si va dall’analisi e generazione di testo alla sostituzione di oggetti nelle immagini, dalla sintesi vocale per il text-to-speech utilizzando voci specifiche ai manichini virtuali per mostrare l’aspetto di una combinazione di vestiti. Nella vastità degli esempi disponibili, è molto probabile trovare uno Space che soddisfi il caso d’uso che si vuole sviluppare.

Hugging Face Dataset

Una raccolta di più di 50.000 dataset per l’addestramento o il fine tuning dei modelli di intelligenza virtuale, classificati per media e destinazione d’uso (testi per NLP, computer vision, audio, dati tabellari o modelli multimodali), ma anche per dimensione, lingua, task specifici e licenza d’uso.

Usare i modelli di Hugging Face con la libreria transformers

Per conoscere questa splendida realtà il modo migliore, come sempre, è quello di iniziare a metterci mano. Cominciamo in questo articolo a vedere come utilizzare i modelli di Hugging Face usando la libreria che ci consente accesso immediato alle migliaia di modelli disponibili.

Come ambiente di lavoro si può optare per una serie di alternative in base alle proprie abitudini ma, nel nostro caso, abbiamo scelto un contesto basato su Python, interamente on line e completo di supporto e librerie per l’Intelligenza Artificiale: Google Colab. Hugging Face può comunque essere usato anche per lavorare in ambienti on-premises o su ambienti cloud differenti.

Quello che dovremo fare sarà importare la libreria che detiene tutti gli strumenti per i transformer, e prima di questo uno dei framework che gli faranno da supporto: nel nostro caso, PyTorch.

Quelle che seguono sono due righe che possono rappresentare un ottimo inizio con Hugging Face (i punti esclamativi all’inizio servono, qualora si utilizzi Colab, a far eseguire il comando su sistema operativo):


!pip install torch
!pip install transformers

Dalla libreria dei transformer, il primo approccio che conviene avere è sicuramente quello con le pipeline. Possiamo considerare questo tipo di oggetto come un’astrazione di meccanismi più complessi che permette di utilizzare direttamente un modello.

Con una pipeline, possiamo affrontare direttamente lavori complessi come il question answering, la traduzione e la classificazione di testo, la sentiment analysis e molto altro.

Noi specificheremo qual è il task che vogliamo affrontare e l’oggetto pipeline cercherà di farcelo svolgere immediatamente utilizzando un modello preimpostato.

Vediamo il caso più diretto possibile.

L’esempio: classificare recensioni con Hugging Face

Diciamo che vogliamo che Hugging Face, mediante una pipeline, ci faccia svolgere un task di classificazione di recensioni commerciali, i commenti che gli utenti di un sito di e-commerce lasciano in risposta ai propri acquisti, per farne una sentiment analysis di base, valutando se si tratti di un commento positivo oppure negativo.

Per semplicità inizieremo il nostro lavoro partendo da una classificazione di testo generico, sebbene esistano modelli specializzati nel linguaggio relativo ad uno specifico settore (politica, commenti sportivi, notizie di finanza e molto altro).

Questo è l’intero codice necessario. Nonostante una brevità sorprendente, ha una enorme efficacia:


from transformers import pipeline
classifier = pipeline("text-classification")

sentences=["The best product I've ever bought",
           "It doesn't work...not recommended"]

result=classifier(sentences)
print(result)

Abbiamo scelto la classificazione di due frasi dal significato opposto (le abbiamo scritte in inglese solo per omogeneità: i modelli in genere sono multilingua e se ne possono sempre creare) e abbiamo chiesto alla pipeline di svolgere un task di text-classification. Ecco i risultati:

[{'label': 'POSITIVE', 'score': 0.9998494386672974}]
[{'label': 'NEGATIVE', 'score': 0.9997959733009338}}]

Quindi, rispettivamente, alla frase “The best product I’ve ever bought” (“Il miglior prodotto che abbia mai comprato”) è associato ad un sentimento POSITIVE, mentre “It doesn’t work…not recommended” (“Non funziona…non consigliato”) è considerato NEGATIVE, in entrambi i casi con una confidenza che si avvicina al 100%.

Niente male, potremmo dire: abbiamo svolto un task così complesso con tre righe di codice ottenendo dei risultati, da un punto di vista logico, assolutamente sensati.

Tuttavia, ci viene mostrato anche un messaggio di warning:

No model was supplied, defaulted to distilbert-base-uncased-finetuned-sst-2-english 
and revision af0f99b (https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english).
Using a pipeline without specifying a model name and revision in production is not recommended.

che ci avvisa in pratica che:

  • non abbiamo indicato nessun modello;
  • di default, il task è stato svolto con DistilBERT (scelta piuttosto tipica per la text classification essendo un LLM encoder-only) di cui ci viene anche dato il riferimento esplicito comprensivo di revisione;
  • usare una pipeline in produzione (quindi, in un lavoro “vero”) senza indicare esplicitamente il nome del modello da utilizzare e la sua revisione è assolutamente sconsigliato.

Selezionare il modello con cui lavorare in Hugging Face

Quando vogliamo indicare un modello specifico per poter lavorare con Hugging Face possiamo sempre utilizzare sempre una pipeline, ma indicando in questo caso il parametro model.

Se infatti usassimo il seguente codice:

classifier = pipeline("text-classification", 
                       model="distilbert-base-uncased-finetuned-sst-2-english")

indicheremmo esplicitamente che stiamo usando il modello distilbert ricevendo gli stessi risultati ma senza più alcun avviso.

Il parametro model è particolarmente utile quindi per indicare quale modello utilizzare e, con tutti quelli che propone Hugging Face, possiamo ottenere incrementi di prestazioni molto interessanti. Per esempio, visitando il portale, possiamo individuare tutti i modelli specializzati in text-classification, ordinati per numero di download in senso decrescente (quindi partendo dai più scaricati).

A questo punto, senza complicarci troppo la vita, potremmo ripetere il nostro esperimento utilizzando un altro modello: stesso codice ma valore diverso per il parametro model.

Scegliamo, ad esempio, nlptown/bert-base-multilingual-uncased-sentiment un modello multilingua che mira a classificare recensioni attribuendo un certo numero di stelle ad una review testuale.
Con il seguente codice (applicato alle frasi di prima):


classifier = pipeline("text-classification", 
                      model="nlptown/bert-base-multilingual-uncased-sentiment")
result=classifier(sentences)

Otteniamo come risultato:


[{'label': '5 stars', 'score': 0.969106912612915}, 
 {'label': '1 star', 'score': 0.7973095774650574}]

Quindi la prima recensione ha una probabilità del 97% quasi di essere a 5 stelle (“The best product I’ve ever bought”) mentre la seconda (“It doesn’t work…not recommended”) al 79% sarà ad una sola stella.

Anche questo modello, con poche righe ha fornito risultati assolutamente sensati. Basterà creare uno script che fornisca al modello i testi delle recensioni che si vogliono valutare per avere in output una loro classificazione tra positive, negative, punteggio medio in stelle e intervallo di confidenza.

Conclusioni

Al di là dei modelli scelti e dei risultati ottenuti quello che si è voluto dimostrare è che Hugging Face mette a disposizione tantissime risorse costantemente aggiornate, provate e valutate dalla sua community ed il tutto è utilizzabile con grande facilità e senza costi.

Questo non è che l’inizio della sperimentazione che proseguirà, in primis, mettendo alla prova modelli dedicati anche ad altri ambiti dell’Intelligenza Artificiale ma soprattutto continuando lo studio dei suoi strumenti applicativi e delle metodologie da applicare concentrandosi su ottimizzazione e addestramento personalizzato di modelli.

Condividi:
 

Red Hat Developer Hub promette di superare i colli di bottiglia del DevOps

linguaggi di programmazione
Red Hat Developer Hub punta ad accelerare il percorso dallo sviluppo alla produzione grazie a una maggiore produttività e collaborazione e riduce il carico cognitivo dei team ingegneristici.

Red Hat ha annunciato la disponibilità generale di Red Hat Developer Hub, una piattaforma interna per sviluppatori (IDP) di livello enterprise basata su Backstage (progetto open source della Cloud Native Computing Foundation). Dotato di un portale self-service, di modelli software standardizzati, di una gestione dinamica dei plug-in, di un controllo degli accessi basato sui ruoli aziendali (RBAC) e di un supporto premium, Red Hat Developer Hub fornisce alle organizzazioni gli strumenti e le funzionalità per poter superare i colli di bottiglia del DevOps e affrontare problemi come la complessità, la mancanza di standardizzazione e il carico cognitivo.

Red Hat Developer Hub consente ai team di accelerare lo sviluppo e la distribuzione su qualsiasi piattaforma con pipeline più coerenti e standardizzate ed è completamente integrato con Red Hat OpenShift sia per supportare le organizzazioni che desiderano standardizzare le operazioni nell’open hybrid cloud, sia per consentire di sbloccare innovazioni come l’intelligenza artificiale e le architetture applicative native del cloud.

“La frammentazione delle conoscenze, la mancanza di standardizzazione degli strumenti e della documentazione e l’eccessiva complessità soffocano l’innovazione e rendono difficile per le aziende soddisfare le esigenze dell’odierno imperativo del business digitale, ha commentato Lara Greden, research director for Cloud Platforms di IDC. “I team ingegneristici di piattaforma possono contribuire a mettere ordine nel caos, ma la costruzione e la manutenzione di portali personalizzati possono essere difficili da scalare a lungo termine. Red Hat Developer Hub punta ad alleggerire il lavoro di questi team e fornisce loro strumenti che supportano l’impegno collettivo DevOps, in modo che gli sviluppatori possano concentrarsi sulla scrittura del codice e sulla creazione di un vantaggio competitivo per le loro organizzazioni.”

Red Hat Developer Hub risponde a queste sfide con un portale self-service che riunisce tutte le informazioni di cui gli sviluppatori hanno bisogno, tra cui l’accesso a varie console, un catalogo software unificato e una documentazione aggiornata all’interno dello stesso repository. Un ambiente di questo tipo non solo è più facile da gestire per i team, ma consente ai nuovi membri di trovare più facilmente ciò di cui hanno bisogno già nella fase iniziale di familiarizzazione di strumenti e processi, così da diventare produttivi più velocemente. Modelli software standardizzati semplificano ulteriormente l’integrazione tra applicazioni e sviluppatori, eliminando le attività accessorie e i dettagli tecnologici che possono rallentare il processo di sviluppo e distribuzione.

Red Hat Developer Hub presenta la stessa architettura di plug-in del progetto Backstage, consentendo agli utenti di integrare nuove funzionalità nella propria toolchain di sviluppo. Gli utenti possono installare, aggiornare e rimuovere i plug-in in modo semplice e veloce, senza dover pianificare tempi di inattività per modificare il codice sorgente, ricostruire e distribuire nuovamente l’ambiente Backstage di base.

Red Hat Developer Hub devops

Red Hat ha creato una serie di plug-in tecnologici basati sul feedback degli utenti e li ha messi a disposizione della comunità di Backstage. Questi plug-in sono supportati da Red Hat Developer Hub e sono verificati per l’uso, al fine di ridurre i potenziali rischi di compatibilità e i problemi operativi. Inoltre, Red Hat Developer Hub è in grado di eseguire e ospitare i plug-in della community, offrendo alle organizzazioni maggiore controllo e flessibilità sui loro ambienti.

A livello di sicurezza Red Hat Developer Hub semplifica e standardizza la gestione degli utenti con il controllo degli accessi basato sui ruoli (RBAC) grazie a un nuovo plug-in già disponibile, che offre agli amministratori e ai responsabili di progetto la possibilità di gestire l’accesso degli utenti al portale in base al loro ruolo all’interno di un team. Il plug-in può essere collegato al provider di autenticazione dell’organizzazione e mappato ai ruoli personalizzati del workstream, consentendo agli utenti di ottenere le autorizzazioni appropriate per il catalogo software e i dati associati.

Red Hat Developer Hub è inoltre complementare e integrato con Red Hat Trusted Software Supply Chain, una soluzione per la sicurezza della supply chain del software che offre un quadro di riferimento per la raccolta di contenuti affidabili in fase di codice, con una trusted chain automatizzata in grado di verificare la conformità della pipeline in fase di compilazione. Questi strumenti forniscono la provenienza e l’attestazione dei linguaggi, dei framework e delle dipendenze utilizzati nel portale Red Hat Developer Hub e danno agli ingegneri della piattaforma la possibilità di rispondere più rapidamente con gli aggiornamenti necessari per la sicurezza e la conformità.

Aziende:
Red Hat
Condividi: