Introducendo Prodigy-HF un’integrazione diretta con Hugging Face

Presentando Prodigy-HF un'integrazione diretta con Hugging Face

Prodigy è uno strumento di annotazione creato da Explosion, un’azienda ben nota come i creatori di spaCy. È un prodotto completamente scriptabile con una vasta comunità intorno ad esso. Il prodotto ha molte caratteristiche, tra cui un’integrazione stretta con spaCy e capacità di apprendimento attivo. Ma la caratteristica principale del prodotto è che è personalizzabile in modo programmabile con Python.

Per favorire questa personalizzabilità, Explosion ha iniziato a rilasciare plugin. Questi plugin si integrano con strumenti di terze parti in modo aperto che incoraggia gli utenti a lavorare su flussi di lavoro di annotazione personalizzati. Tuttavia, una personalizzazione in particolare merita di essere celebrata esplicitamente. La scorsa settimana, Explosion ha introdotto Prodigy-HF, che offre ricette di codice che si integrano direttamente con lo stack di Hugging Face. È stata una caratteristica molto richiesta sul forum di supporto Prodigy, quindi siamo molto entusiasti di averla ora disponibile.

Features

La prima caratteristica principale è che questo plugin ti consente di addestrare e riutilizzare modelli Hugging Face sui tuoi dati annotati. Ciò significa che se hai annotato dati nella nostra interfaccia per il riconoscimento delle entità nominate, puoi raffinare direttamente i modelli BERT.

Come appare l’interfaccia NER di Prodigy.

Dopo aver installato il plugin, puoi chiamare la ricetta hf.train.ner dalla riga di comando per addestrare un modello di trasformazione direttamente sui tuoi dati.

python -m prodigy hf.train.ner fashion-train,eval:fashion-eval path/to/model-out --model "distilbert-base-uncased"

Questo raffinerà il modello distilbert-base-uncased per il dataset che hai memorizzato in Prodigy e lo salverà su disco. Allo stesso modo, questo plugin supporta anche modelli per la classificazione del testo tramite un’interfaccia molto simile.

python -m prodigy hf.train.textcat fashion-train,eval:fashion-eval path/to/model-out --model "distilbert-base-uncased"

Questo offre molta flessibilità perché lo strumento si integra direttamente con le classi AutoTokenizer e AutoModel di Hugging Face transformers. Qualsiasi modello di trasformazione sul hub può essere raffinato sui tuoi dati con un solo comando. Questi modelli verranno serializzati su disco, il che significa che puoi caricarli nell’Hugging Face Hub o riutilizzarli per aiutarti ad annotare i dati. Ciò può risparmiare molto tempo, specialmente per i compiti NER. Per riutilizzare un modello NER addestrato, puoi utilizzare la ricetta hf.correct.ner.

python -m prodigy hf.correct.ner fashion-train path/to/model-out examples.jsonl

Questo ti darà un’interfaccia simile a prima, ma ora le predizioni del modello verranno mostrate anche nell’interfaccia.

Upload

La seconda caratteristica, altrettanto entusiasmante, è che puoi ora pubblicare i tuoi dataset annotati su Hugging Face Hub. Questo è ottimo se sei interessato a condividere dataset che altri vorrebbero utilizzare.

python -m prodigy hf.upload <dataset_name> <username>/<repo_name>

Siamo particolarmente entusiasti di questa funzione di caricamento perché incoraggia la collaborazione. Le persone possono annotare i propri dataset in modo indipendente l’una dall’altra, ma traggono comunque vantaggio quando condividono i dati con la comunità più ampia.

Altro in arrivo

Speriamo che questa integrazione diretta con l’ecosistema di Hugging Face permetta a molti utenti di sperimentare di più. L’Hugging Face Hub offre molti modelli per una vasta gamma di compiti e una vasta gamma di lingue. Speriamo davvero che questa integrazione renda più facile annotare i dati, anche se hai un caso d’uso più specifico nel tuo dominio sperimentale.

Ulteriori funzionalità per questa libreria sono in arrivo e non esitate a contattarci sul forum di Prodigy se avete altre domande.

Vorremmo anche ringraziare il team di Hugging Face per il loro feedback su questo plugin, in particolare a @davanstrien, che ha suggerito di aggiungere la funzione di caricamento. Grazie!