Negli ultimi anni, la comprensione del linguaggio naturale (NLU) ha trovato sempre più valore aziendale, alimentato dai miglioramenti dei modelli, nonché dalla scalabilità e dall’efficienza in termini di costi dell’infrastruttura basata su cloud. Nello specifico, il trasformatore architettura di deep learning, spesso implementata sotto forma di BERTA modelli, ha avuto molto successo, ma la formazione, la messa a punto e l’ottimizzazione di questi modelli si sono rivelati un problema impegnativo. Grazie al Collaborazione tra AWS e Hugging Face, ora è più semplice addestrare e ottimizzare i modelli NLU Amazon Sage Maker utilizzando SageMaker Python SDK, ma reperire dati etichettati per questi modelli è ancora difficile e richiede molto tempo.
Un problema della NLU di particolare interesse commerciale è il compito di rispondere alle domande. In questo post, mostriamo come creare un set di dati con risposte a domande personalizzate utilizzando Amazon SageMaker verità fondamentale per addestrare una domanda Hugging Face che risponde al modello NLU.
Domande che rispondono a sfide
La risposta alle domande implica che un modello produca automaticamente una risposta a una query dato un corpo di testo che può contenere o meno la risposta. Ad esempio, data la seguente domanda: "Quali flussi di lavoro supporta SageMaker Ground Truth?" un modello dovrebbe essere in grado di identificare il segmento “annotazione consolidamento e revisione” nel paragrafo seguente:
SageMaker Ground Truth aiuta a migliorare la qualità delle etichette attraverso il consolidamento delle annotazioni e i flussi di lavoro di controllo. Il consolidamento delle annotazioni è il processo di raccolta degli input di etichette da due o più etichettatori di dati e di loro combinazione per creare un'unica etichetta di dati per il modello di machine learning. Con i flussi di lavoro di controllo e revisione integrati, i lavoratori possono eseguire la verifica delle etichette e apportare modifiche per migliorare la precisione.
Questo problema è impegnativo perché richiede che un modello comprenda il significato di una domanda, piuttosto che eseguire semplicemente una ricerca per parole chiave. Modelli accurati in quest'area possono ridurre i costi di assistenza clienti potenziando chatbot intelligenti, fornendo prodotti di assistenza vocale di alta qualità e aumentando le entrate dei negozi online attraverso risposte personalizzate alle domande sui prodotti. Un grande set di dati in quest'area è il Set di dati sulle risposte alle domande di Stanford (SQuAD), un set di dati di risposte a domande diversificato che presenta un modello con brevi passaggi di testo e richiede che il modello preveda la posizione dell'intervallo di testo della risposta nel passaggio. SQuAD è un set di dati sulla comprensione della lettura, costituito da domande poste dai crowdworker su una serie di articoli di Wikipedia, in cui la risposta a ogni domanda è una porzione di testo del passaggio corrispondente o altrimenti contrassegnata come impossibile a cui rispondere.
Una sfida nell'adattare SQuAD ai casi d'uso aziendali è generare set di dati personalizzati specifici del dominio. Questo processo di creazione di nuovi set di dati di domande e risposte richiede un'interfaccia utente specializzata che consenta agli annotatori di evidenziare intervalli e aggiungere domande a tali intervalli. Deve inoltre essere in grado di supportare l'aggiunta di domande impossibili per supportare il formato SQuAD 2.0, che include domande senza risposta. Queste domande impossibili aiutano i modelli ad acquisire ulteriore comprensione riguardo alle domande a cui non è possibile rispondere utilizzando il passaggio fornito. IL modelli di lavoratori personalizzati in Ground Truth semplifica la generazione di questi set di dati fornendo ai lavoratori un'esperienza di annotazione su misura per la creazione di set di dati di domande e risposte.
Panoramica della soluzione
Questa soluzione crea e gestisce processi di etichettatura Ground Truth per etichettare un set di dati di domande-risposte personalizzate specifico del dominio utilizzando un'interfaccia utente di annotazione personalizzata. Utilizziamo SageMaker per addestrare, mettere a punto, ottimizzare e distribuire a Hugging Face
Modello BERT creato con PyTorch su un set di dati di risposta a domande personalizzate.
È possibile implementare la soluzione distribuendo il file fornito AWS CloudFormazione modello nel tuo account AWS. AWS CloudFormation gestisce la distribuzione di AWS Lambda funzioni che supportano la pre-annotazione e il consolidamento delle annotazioni per l'interfaccia utente di annotazione. Crea anche un file Servizio di archiviazione semplice Amazon (Amazon S3) e il Gestione dell'identità e dell'accesso di AWS (IAM) ruoli da utilizzare durante la creazione di un processo di etichettatura.
Questo post illustra come eseguire le seguenti operazioni:
- Crea il tuo set di dati con risposte alle domande o aumentane uno esistente utilizzando Ground Truth
- Utilizza i set di dati Hugging Face per combinare e tokenizzare il testo
- Perfeziona un modello BERT sui dati delle risposte alle domande utilizzando la formazione SageMaker
- Distribuisci il tuo modello su un endpoint SageMaker e visualizza i risultati
Interfaccia utente di annotazione
Usiamo un nuovo modello di attività lavoratore personalizzato con Ground Truth per aggiungere nuove annotazioni al set di dati SQuAD esistente. Questa soluzione offre un modello di attività lavoratore, nonché una funzione Lambda pre-annotazione (che gestisce l'inserimento dei dati nell'interfaccia utente) e una funzione Lambda post-annotazione (che estrae i risultati dall'interfaccia utente una volta completata l'etichettatura).
Questo modello di attività lavoratore personalizzato ti dà la possibilità di evidenziare il testo nel riquadro di destra, quindi aggiungere una domanda corrispondente nel riquadro di sinistra correlata al testo evidenziato. È inoltre possibile aggiungere il testo evidenziato nel riquadro di destra a qualsiasi domanda creata in precedenza. Inoltre, puoi aggiungere domande impossibili secondo SQUADRA 2.0 formato. Le domande impossibili consentono ai modelli di ridurre il numero di ipotesi false positive inaffidabili quando il passaggio non è in grado di rispondere a una domanda.
Questa interfaccia utente utilizza lo stesso schema JSON del set di dati SQuAD 2.0, il che significa che può operare su più articoli e paragrafi, visualizzando un paragrafo alla volta utilizzando il metodo Precedente ed Avanti pulsanti. L'interfaccia utente semplifica il monitoraggio e la determinazione del lavoro di etichettatura che ciascun annotatore deve completare durante la fase di invio dell'attività.
Perché l'interfaccia utente dell'annotazione è contenuta in un file single Liquido HTML, puoi personalizzare l'esperienza di etichettatura con la conoscenza di JavaScript di base. Puoi anche modificare Tag liquidi per passare informazioni aggiuntive all'interfaccia utente di etichettatura ed è possibile modificare il modello stesso per includere istruzioni più dettagliate per il lavoratore.
Costi stimati
L'implementazione di questa soluzione può comportare un costo massimo di circa 20 dollari, senza tenere conto dei costi di etichettatura umana. Amazon S3, Lambda, SageMaker e Ground Truth offrono tutti la funzionalità Livello gratuito AWS, con addebito per utilizzi aggiuntivi. Per ulteriori informazioni, consultare le seguenti pagine dei prezzi:
- Prezzi di Amazon S3
- Prezzi di AWS Lambda
- Prezzi di Amazon SageMaker
- Prezzi dell'etichettatura dei dati di Amazon SageMaker – Questa tariffa dipende dal tipo di forza lavoro utilizzata. Se sei un nuovo utente di Ground Truth, ti suggeriamo di utilizzare una forza lavoro privata e di includerti come lavoratore per testare la configurazione del tuo lavoro di etichettatura.
Prerequisiti
Per implementare questa soluzione, è necessario disporre dei seguenti prerequisiti:
- An Account AWS.
- Familiarità con la verità fondamentale. Per ulteriori informazioni, fare riferimento a Usa Amazon SageMaker Ground Truth per etichettare i dati.
- Familiarità con AWS CloudFormation. Per ulteriori informazioni, fare riferimento a Guida per l'utente di AWS CloudFormation.
- Un SageMaker forza lavoro. Per questa dimostrazione utilizziamo manodopera privata. Puoi creare una forza lavoro sulla console SageMaker.
La GIF seguente mostra come creare una forza lavoro privata. Per istruzioni, vedere Crea una forza lavoro Amazon Cognito utilizzando la pagina Etichettatura forza lavoro.
Avvia lo stack CloudFormation
Ora che hai visto la struttura della soluzione, distribuiscila nel tuo account in modo da poter eseguire un flusso di lavoro di esempio. Tutte le fasi di distribuzione relative alla pipeline di etichettatura sono gestite da AWS CloudFormation. Ciò significa che AWS CloudFormation crea le funzioni Lambda di pre-annotazione e consolidamento delle annotazioni, nonché un bucket S3 per archiviare i dati di input e output.
Puoi avviare lo stack nella regione AWS us-east-1
sulla console AWS CloudFormation utilizzando il file Avvia Stack pulsante. Per avviare lo stack in una regione diversa, utilizzare le istruzioni che si trovano nel README del file Repository GitHub.
Utilizzare il notebook
Dopo che la soluzione è stata distribuita nel tuo account, un'istanza del notebook denominata gt-hf-squad-notebook
è disponibile nel tuo account. Per iniziare a utilizzare il notebook, completare i seguenti passaggi:
- Nella console Amazon SageMaker, vai alla pagina dell'istanza notebook.
- Scegli Apri JupyterLab per aprire l'istanza.
- All'interno dell'istanza, vai al repository
hf-gt-custom-qa
e apri il taccuinohf_squad_finetuning.ipynb
. - Scegli
conda_pytorch_p38
come il tuo kernel.
Ora che hai creato un'istanza del notebook e aperto il notebook, puoi eseguire le celle nel notebook per utilizzare la soluzione. Il resto di questo post fornisce dettagli aggiuntivi su ciascuna sezione del taccuino man mano che procedi.
Scarica e controlla i dati
Il Set di dati SQuAD contiene un set di dati di addestramento nonché set di dati di test e sviluppo. Il notebook scarica il set di dati SQuAD2.0 per te, ma puoi scegliere quale versione di SQuAD utilizzare modificando la cella del notebook in Scarica e controlla i dati.
SQuAD è stato creato da Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev e Percy Liang. Per ulteriori informazioni, fare riferimento a carta originale ed dataset. SQuAD è stato concesso in licenza dagli autori con la licenza Licenza pubblica internazionale Creative Commons Attribuzione-Condividi allo stesso modo 4.0.
Diamo un'occhiata a un esempio di coppia di domande e risposte di SQuAD:
Titolo del paragrafo: Sistema_immunitario
Il sistema immunitario è un sistema di molte strutture e processi biologici all’interno di un organismo che protegge dalle malattie. Per funzionare correttamente, un sistema immunitario deve rilevare un’ampia varietà di agenti, noti come agenti patogeni, dai virus ai vermi parassiti, e distinguerli dal tessuto sano dell’organismo. In molte specie, il sistema immunitario può essere classificato in sottosistemi, come il sistema immunitario innato rispetto al sistema immunitario adattativo, o l’immunità umorale rispetto all’immunità cellulo-mediata. Negli esseri umani, la barriera ematoencefalica, la barriera sangue-liquido cerebrospinale e simili barriere fluido-encefaliche separano il sistema immunitario periferico dal sistema neuroimmune che protegge il cervello.
Domanda: Il sistema immunitario protegge gli organismi da cosa?
Risposta: malattia
Carica modello
Ora che hai visualizzato un esempio di coppia di domande e risposte in SQuAD, puoi scaricare un modello che puoi ottimizzare per la risposta alle domande. Hugging Face ti consente di scaricare facilmente un modello base che è stato sottoposto a pre-addestramento su larga scala e reinizializzarlo per un'attività a valle diversa. In questo caso, scarichi il file distilbert-base-uncased
modellarlo e riproporlo per la risposta alle domande utilizzando il file AutoModelForQuestionAnswering
lezione da Hugging Face. Utilizzi anche il AutoTokenizer
classe per recuperare il tokenizzatore pre-addestrato del modello. Approfondiremo il modello che utilizzeremo più avanti nel post.
Visualizza l'input BERT
BERT richiede di trasformare i dati di testo in una rappresentazione numerica nota come token. Sono disponibili diversi tokenizzatori; i seguenti token sono stati creati da un tokenizzatore appositamente progettato per BERT che istanzia con un vocabolario impostato. Ogni token corrisponde a una parola nel vocabolario. Diamo un'occhiata alla domanda sul sistema immunitario trasformato e al contesto fornito a BERT per l'inferenza.
Inferenza del modello
Ora che hai visto cosa prende BERT come input, vediamo come ottenere risultati di inferenza dal modello. Il codice seguente illustra come utilizzare l'input tokenizzato generato in precedenza e restituire i risultati dell'inferenza dal modello. Allo stesso modo in cui BERT non può accettare testo non elaborato come input, non genera nemmeno testo non elaborato come output. Traduci l'output di BERT identificando i punti di inizio e fine nel paragrafo che BERT ha identificato come risposta. Quindi mappi l'output sui nostri token e torni al testo inglese.
I risultati tradotti sono i seguenti:
Domanda: Il sistema immunitario protegge gli organismi da cosa?
Risposta: malattia
Aumenta la SQUAD
Successivamente, per ottenere dati etichettati aggiuntivi, utilizziamo a modello di attività lavoratore personalizzato nella verità fondamentale. Possiamo prima creare un nuovo articolo in formato SQuAD. Il notebook copia questo file dal repository su Amazon S3, ma sentiti libero di apportare eventuali modifiche prima di eseguire il file Aumenta la SQUAD cellula. Il formato di SQuAD è mostrato nel codice seguente. Ogni file SQuAD JSON contiene più articoli archiviati nel file data
chiave. Ogni articolo ha un title
campo e uno o più paragrafi. Questi paragrafi contengono segmenti di testo chiamati context
e tutte le domande associate nel file qas
elenco. Poiché stiamo annotando da zero, possiamo lasciare il file qas
elenco vuoto e fornisci solo il contesto. L'interfaccia utente è in grado di scorrere sia i paragrafi che gli articoli, consentendoti di rendere ogni attività del lavoratore grande o piccola come desideri.
Dopo aver generato un file di dati SQuAD di esempio, dobbiamo creare un Ground Truth file manifest aumentato che si riferisce ai nostri dati di input. Lo facciamo generando un file in formato righe JSON con un "source
"chiave corrispondente alla posizione in Amazon S3 in cui abbiamo archiviato i nostri dati SQuAD di input:
Accedi al portale di etichettatura
Dopo aver inviato il lavoro a Ground Truth, puoi visualizzare il lavoro di etichettatura generato sulla console Ground Truth.
Per eseguire l'etichettatura, devi accedere all'account del portale lavoratori che hai creato come parte dei passaggi prerequisiti. Il tuo lavoro è disponibile nel portale lavoratori dopo alcuni minuti di pre-elaborazione. Dopo aver aperto l'attività, ti viene presentato il modello di lavoratore personalizzato per l'annotazione di domande e risposte. Puoi aggiungere domande evidenziando sezioni di testo nel contesto, quindi scegliendo Aggiungi domanda.
Controlla lo stato del lavoro di etichettatura
Dopo l'invio è possibile eseguire il file Controlla lo stato del lavoro di etichettatura cella per vedere se il lavoro di etichettatura è completo. Attendere il completamento prima di procedere con ulteriori celle.
Carica i dati etichettati
Dopo l'etichettatura, il manifest di output contiene una voce con il nome dell'attributo etichetta (in questo caso squad-1626282229
) contenente un URI S3 per dati in formato SQuAD che è possibile utilizzare durante l'addestramento. Consulta il seguente contenuto del manifest di output:
Ogni riga nel manifest corrisponde a una singola attività del lavoratore.
Carica il set di treni SQuAD
Il viso abbracciato ha un pacchetto di set di dati che ti offre la possibilità di scaricare e preelaborare SQuAD, ma per aggiungere le nostre domande e risposte personalizzate, dobbiamo eseguire un po' di elaborazione. SQuAD è strutturato attorno a una serie di argomenti. Ogni argomento ha una varietà di dichiarazioni di contesto diverse e ciascuna dichiarazione di contesto ha coppie di domande e risposte. Poiché vogliamo creare le nostre domande per la formazione, dobbiamo combinare le nostre domande con SQuAD. Fortunatamente per noi, le nostre annotazioni sono già in formato SQuAD, quindi possiamo prendere le nostre etichette di esempio e aggiungerle come nuovo argomento ai dati SQuAD esistenti.
Crea un oggetto Dataset Hugging Face
Per inserire i nostri dati nel formato del set di dati di Hugging Face, abbiamo diverse opzioni. Possiamo usare il caricare_dataset opzione, nel qual caso possiamo fornire un file CSV, JSON o di testo caricato come oggetto set di dati. Puoi anche fornire load_dataset
con uno script di elaborazione per convertire il file nel formato desiderato. Per questo post utilizziamo invece il file Dataset.from_dict()
metodo, che ci consente di fornire un dizionario in memoria per creare un oggetto set di dati. Definiamo anche le caratteristiche del nostro set di dati. Possiamo visualizzare le funzionalità utilizzando Il visualizzatore di set di dati di Hugging Face, come mostrato nella seguente schermata.
Le nostre caratteristiche sono le seguenti:
- ID – L'ID del testo
- titolo – Il titolo associato all'argomento
- contesto – La dichiarazione di contesto che il modello deve cercare per trovare una risposta
- domanda – La domanda che viene posta al modello
- rispondere – Il testo della risposta accettata e la posizione nella dichiarazione di contesto
I set di dati Hugging Face ci consentono facilmente di definire questo schema:
Dopo aver creato il nostro oggetto set di dati, dobbiamo farlo tokenize il testo. Poiché i modelli non possono accettare testo grezzo come input, dobbiamo convertire il nostro testo in un input numerico che possa comprendere, altrimenti noto come tokenizzazione. La tokenizzazione è specifica del modello, quindi comprendiamo il modello che perfezioneremo. Stiamo usando a distillbert-base-senza custodia modello. Sembra molto simile a BERT: utilizza input embedding, attenzione multi-head (per maggiori informazioni su questa operazione, fare riferimento a Il trasformatore illustrato) e livelli feed forward, ma ha la metà dei parametri del modello base BERT originale. Vedere i seguenti livelli del modello iniziale:
Analizziamo ogni componente del titolo del modello. Il nome distilbert
denota il fatto che si tratta di una versione distillata del modello base BERT, ottenuto attraverso un processo chiamato distillazione della conoscenza. La distillazione della conoscenza ci consente di addestrare un modello di studente più piccolo non solo sui dati di formazione ma anche sulle risposte allo stesso set di formazione da un modello di insegnante pre-addestrato più ampio. base
si riferisce alla dimensione del modello, in questo caso il modello è stato distillato da un modello base BERT (al contrario di un modello BERT grande). uncased
si riferisce al testo su cui è stato addestrato. In questo caso il testo non teneva conto del caso; tutto il testo su cui è stato addestrato era in minuscolo. IL uncased
L'aspetto influenza direttamente il modo in cui tokenizziamo il nostro testo. Per fortuna, oltre a fornire un facile accesso al download dei modelli di trasformatori, Hugging Face fornisce anche il tokenizzatore associato al modello. Abbiamo anche scaricato un tokenizzatore personalizzato per il nostro distilbert-base-uncased model
che ora usiamo per trasformare il nostro testo:
Un'altra caratteristica della classe del set di dati è che ci consente di eseguire la preelaborazione e la tokenizzazione in parallelo con la sua funzione di mappa. Definiamo una funzione di elaborazione e poi la passiamo al metodo map.
Per rispondere alle domande, Hugging Face necessita di diversi componenti (definiti anche nel file glossario):
- maschera di attenzione – Una maschera che indica al modello a quali token prestare attenzione, utilizzata principalmente per distinguere tra testo effettivo e token di riempimento
- posizioni_iniziali – La posizione iniziale della risposta nel testo
- posizioni_finali – La posizione finale della risposta nel testo
- input_id – Gli indici dei token associano i token al vocabolario
Il nostro tokenizzatore tokenizzerà il testo, ma dobbiamo acquisire esplicitamente le posizioni iniziale e finale della nostra risposta, motivo per cui abbiamo definito una funzione di preelaborazione personalizzata. Ora che abbiamo i nostri input pronti, iniziamo ad allenarci!
Avviare il lavoro di formazione
Possiamo eseguire l'addestramento nel nostro notebook, ma i tipi di istanze di cui abbiamo bisogno per addestrare il nostro modello di domande e risposte in un periodo di tempo ragionevole, istanze p3 e p4, sono piuttosto potenti. Queste istanze tendono ad essere eccessive per l'esecuzione di un notebook o come persistente Cloud di calcolo elastico di Amazon (Amazon EC2). È qui che entra in gioco la formazione SageMaker. La formazione SageMaker ti consente di avviare un lavoro di formazione su un'istanza specifica o su istanze che sono attive solo per la durata del lavoro di formazione. Questo ci consente di funzionare su istanze più grandi come p4d.24xlarge, con 8 GPU NVIDIA A100, ma senza preoccuparci di pagare una bolletta enorme nel caso in cui ci dimentichiamo di spegnerlo. Ci dà anche un facile accesso ad altre funzionalità di SageMaker, come Esperimenti di SageMaker per monitorare le sessioni di formazione ML e Debugger di SageMaker per comprendere e profilare i tuoi lavori di formazione.
Formazione locale
Iniziamo comprendendo come funziona localmente l'addestramento di un modello in Hugging Face, quindi esaminiamo le modifiche apportate per eseguirlo in SageMaker.
Hugging Face semplifica l'allenamento attraverso l'uso della lezione per istruttori. La classe trainer ci consente di trasferire il nostro modello, i nostri set di dati di training e convalida, i nostri iperparametri e persino il nostro tokenizzatore. Poiché disponiamo già del nostro modello e dei nostri set di training e validazione, dobbiamo solo definire i nostri iperparametri. Possiamo farlo attraverso il TrainingArguments
classe. Ciò ci consente di specificare elementi come la velocità di apprendimento, la dimensione del batch, il numero di epoche e parametri più approfonditi come il decadimento del peso o una strategia di pianificazione della velocità di apprendimento. Dopo aver definito il nostro TrainingArguments
, possiamo passare il nostro modello, set di training, set di validazione e argomenti per creare un'istanza della nostra classe trainer. Allora possiamo semplicemente chiamare trainer.train()
per iniziare ad addestrare il nostro modello. Il seguente blocco di codice dimostra come eseguire la formazione locale:
Invia dati a S3
Fare la stessa cosa nella formazione SageMaker è semplice. Il primo passo è inserire i nostri dati in Amazon S3 in modo che il nostro modello possa accedervi. La formazione SageMaker consente di specificare un'origine dati; puoi utilizzare fonti come Amazon S3, File system elastico Amazon (Amazon EFS), o Amazon FSx per Lustre per l'acquisizione di dati ad alte prestazioni. Nel nostro caso, il nostro set di dati SQuAD aumentato non è particolarmente grande, quindi Amazon S3 è una buona scelta. Carichiamo i nostri dati di addestramento in una cartella in Amazon S3 e quando SageMaker avvia la nostra istanza di addestramento, scarica i dati dalla nostra posizione specificata.
Istanziare il modello
Per avviare il nostro lavoro di formazione, possiamo utilizzare lo stimatore Hugging Face integrato nel file SDK di SageMaker. SageMaker utilizza la classe estimator per definire i parametri per un lavoro di formazione nonché il numero e il tipo di istanze da utilizzare per la formazione. La formazione SageMaker si basa sull'uso dei contenitori Docker. Puoi utilizzare i contenitori predefiniti in SageMaker o fornire il tuo contenitore personalizzato per la formazione. Nel caso dei modelli Hugging Face, SageMaker dispone di contenitori Hugging Face integrati con tutte le dipendenze necessarie per eseguire processi di formazione Hugging Face. Tutto quello che dobbiamo fare è definire il nostro script di formazione, che il nostro contenitore Hugging Face utilizza come punto di ingresso.
In questo script di training definiamo i nostri argomenti, che passiamo al nostro punto di ingresso sotto forma di un insieme di iperparametri, nonché il nostro codice di training. Il nostro codice di formazione è lo stesso come se lo eseguissimo localmente; possiamo semplicemente usare il file TrainingArguments
e poi passarli a un oggetto trainer. L'unica differenza è che dobbiamo specificare la posizione di output in cui deve trovarsi il nostro modello /opt/ml/model
in modo che la formazione SageMaker possa prenderlo, impacchettarlo e inviarlo ad Amazon S3. Il seguente blocco di codice mostra come istanziare il nostro stimatore Hugging Face:
Metti a punto il modello
Per il nostro lavoro di formazione specifico, utilizziamo un'istanza p3.8xlarge composta da 4 GPU V100. La classe trainer supporta automaticamente l'addestramento su istanze multi-GPU, quindi non abbiamo bisogno di alcuna configurazione aggiuntiva per tenerne conto. Addestriamo il nostro modello per due epoche, con una dimensione batch di 16 e un tasso di apprendimento di 4e5. Stiamo anche abilitando l'addestramento a precisione mista, che utilizza la precisione mista nelle aree in cui possiamo ridurre la precisione numerica senza influire sulla precisione del nostro modello. Ciò aumenta la nostra memoria disponibile e la velocità di allenamento. Per avviare il lavoro di formazione, chiamiamo il fit
metodo dal ns huggingface_estimator
classe.
Una volta terminato l'addestramento del nostro modello, possiamo scaricarlo localmente e caricarlo nella memoria del nostro notebook per testarlo, come mostrato nel notebook. Ci concentreremo su un'altra opzione, distribuendola come endpoint SageMaker!
Distribuire il modello addestrato
Oltre a fornire utilità per la formazione, SageMaker può anche consentire ai data scientist e agli ingegneri ML di distribuire facilmente endpoint REST per i loro modelli addestrati. È possibile distribuire modelli addestrati all'interno o all'esterno di SageMaker. Per ulteriori informazioni, fare riferimento a Distribuire un modello in Amazon SageMaker.
Poiché il nostro modello è stato addestrato in SageMaker, è già nel formato corretto per essere distribuito come endpoint. Analogamente alla formazione, definiamo una classe del modello SageMaker che definisce il modello, il codice di servizio e il numero e il tipo di istanze che vogliamo distribuire come endpoint. Analogamente alla formazione, il servizio è basato su contenitori Docker e possiamo utilizzare uno dei contenitori SageMaker integrati o fornirne uno nostro. Per questo post, utilizziamo un contenitore di servizio PyTorch integrato, quindi dobbiamo semplicemente definire alcune cose per rendere operativo il nostro endpoint. Il nostro codice di servizio necessita di quattro funzioni:
- modello_fn – Definisce come l'endpoint carica il modello (lo fa solo una volta e poi lo mantiene in memoria per le previsioni successive)
- ingresso_fn – Definisce il modo in cui l'input viene deserializzato ed elaborato
- predizione_fn – Definisce il modo in cui il nostro modello effettua previsioni sul nostro input
- uscita_fn – Definisce il modo in cui l'endpoint formatta e restituisce i dati di output al client che effettua la richiesta
Dopo aver definito queste funzioni, possiamo distribuire il nostro endpoint, passargli istruzioni e domande di contesto e restituire la risposta prevista:
Visualizza i risultati del modello
Poiché abbiamo distribuito un endpoint SageMaker che ci consente di inviare istruzioni di contesto e ricevere risposte, possiamo tornare indietro e visualizzare le inferenze risultanti all'interno del visualizzatore SQuAD originale per visualizzare meglio ciò che il nostro modello ha trovato nel contesto del passaggio. A tale scopo, riformattando i risultati dell'inferenza nel formato SQuAD, quindi sostituendo i tag Liquid nel modello di lavoro con il JSON formattato SQuAD. Possiamo quindi iframe l'interfaccia utente risultante all'interno del nostro modello di lavoro per rivedere in modo iterativo i risultati nel contesto di un singolo notebook, come mostrato nello screenshot seguente. È possibile fare clic su ciascuna domanda a sinistra per evidenziare le parti di testo a destra corrispondenti alla query. Senza alcuna domanda selezionata, tutte le porzioni di testo vengono evidenziate a destra come mostrato di seguito.
ripulire
Per evitare di incorrere in addebiti futuri, eseguire il ripulire sezione del notebook per eliminare tutte le risorse, inclusi gli endpoint SageMaker, gli oggetti S3 che contengono il set di dati non elaborati ed elaborati e lo stack CloudFormation. Una volta completata l'eliminazione, assicurati di arrestare ed eliminare l'istanza del notebook che ospita lo script del notebook corrente.
Conclusione
In questo post, hai imparato come creare il tuo set di dati di risposta alle domande utilizzando Ground Truth e combinarlo con SQuAD per addestrare e distribuire il tuo modello di risposta alle domande utilizzando SageMaker. Dopo aver completato il notebook, disponi di un endpoint SageMaker distribuito che è stato addestrato sul tuo set di dati di domande e risposte personalizzato. Questo endpoint è pronto per l'integrazione nei flussi di lavoro NLU di produzione, poiché gli endpoint SageMaker sono disponibili tramite API REST standard. Hai anche un set di dati personalizzato annotato in formato SQuAD 2.0, che ti consente di riqualificare il tuo modello esistente o provare ad addestrare altre architetture di modelli di risposta alle domande. Infine, hai un meccanismo per visualizzare rapidamente i risultati della tua inferenza caricando il modello di lavoro nel tuo taccuino locale.
Prova il notebook, amplialo con le tue domande e addestra e distribuisci il tuo modello di risposta alle domande personalizzato per i casi d'uso della NLU!
Felice costruzione!
Informazioni sugli autori
Jeremy Feltracco è un ingegnere di sviluppo software con Amazon ML Solutions Lab presso Amazon Web Services. Usa il suo background in computer vision, robotica e machine learning per aiutare i clienti AWS ad accelerare l'adozione dell'IA.
Vidya Sagar Ravipati è Manager presso il Laboratorio di soluzioni Amazon ML, dove sfrutta la sua vasta esperienza nei sistemi distribuiti su larga scala e la sua passione per il machine learning per aiutare i clienti AWS in diversi settori verticali ad accelerare la loro adozione di intelligenza artificiale e cloud. In precedenza, era un ingegnere di machine learning nei servizi di connettività presso Amazon che ha contribuito a creare piattaforme di personalizzazione e manutenzione predittiva.
Isacco Privitera è Senior Data Scientist presso Amazon Machine Learning Solutions Lab, dove sviluppa soluzioni personalizzate di machine learning e deep learning per affrontare i problemi aziendali dei clienti. Lavora principalmente nello spazio della visione artificiale, concentrandosi sull'offerta ai clienti AWS di formazione distribuita e apprendimento attivo.
- Coinsmart. Il miglior scambio di bitcoin e criptovalute d'Europa.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. ACCESSO LIBERO.
- Criptofalco. Radar Altcoin. Prova gratuita.
- Fonte: https://aws.amazon.com/blogs/machine-learning/build-a-custom-qa-dataset-using-amazon-sagemaker-ground-truth-to-train-a-hugging-face-qa- modello nlu/
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- WRI
- accelerare
- accesso
- Secondo
- Il mio account
- Contabilità
- preciso
- operanti in
- attivo
- aggiunta
- aggiuntivo
- indirizzo
- Adozione
- agenti
- AI
- Tutti
- Consentire
- già
- Amazon
- Amazon Web Services
- quantità
- Un altro
- rispondere
- API
- architettura
- RISERVATA
- argomenti
- in giro
- articolo
- news
- Assistant
- attenzione
- revisione
- aumentata
- gli autori
- Automatizzata
- Automatico
- disponibile
- AWS
- sfondo
- barriera
- barriere
- Inizio
- essendo
- sotto
- Conto
- Po
- Bloccare
- stile di vita
- sistema
- costruire
- incassato
- affari
- chiamata
- Può ottenere
- catturare
- casi
- Challenge
- impegnativo
- oneri
- Scegli
- classe
- Cloud
- codice
- Raccolta
- componente
- Calcolare
- computer
- Configurazione
- Connettività
- consolle
- consolidamento
- Contenitore
- Tecnologie Container
- contiene
- testuali
- appaltatori
- Corrispondente
- Costi
- creare
- creato
- crea
- Creazione
- Corrente
- costume
- cliente
- Assistenza clienti
- Clienti
- dati
- scienziato di dati
- più profondo
- consegna
- dimostrare
- dimostrato
- dipende
- schierare
- schierato
- distribuzione
- deployment
- progettato
- dettagliati
- dettagli
- Determinare
- Mercato
- diverso
- difficile
- direttamente
- Malattia
- distribuito
- docker
- non
- giù
- scaricare
- download
- guida
- durante
- facilmente
- consentendo
- endpoint
- ingegnere
- Ingegneri
- Inglese
- valutazione
- esempio
- esistente
- esperienza
- estratti
- Faccia
- caratteristica
- Caratteristiche
- Infine
- Nome
- Focus
- messa a fuoco
- i seguenti
- modulo
- formato
- Avanti
- essere trovato
- Gratis
- function
- ulteriormente
- futuro
- generare
- la generazione di
- ELETTRICA
- GitHub
- andando
- buono
- Aiuto
- aiuta
- alta qualità
- Highlight
- Evidenziato
- vivamente
- di hosting
- Come
- Tutorial
- HTTPS
- Enorme
- umano
- Gli esseri umani
- centinaia
- identificare
- identificazione
- Identità
- Immagine
- realizzare
- implementato
- impossibile
- competenze
- Inc.
- includere
- inclusi
- Compreso
- sempre più
- industria
- informazioni
- Infrastruttura
- ingresso
- integrazione
- Intelligente
- interesse
- Interfaccia
- Internazionale
- intuitivo
- IT
- stessa
- JavaScript
- Lavoro
- Offerte di lavoro
- Le
- conoscenze
- conosciuto
- laboratorio
- etichettatura
- per il tuo brand
- Lingua
- grandi
- superiore, se assunto singolarmente.
- lanciare
- imparato
- apprendimento
- Lasciare
- leveraggi
- Autorizzato
- probabile
- linea
- Liquido
- Lista
- caricare
- Caricamento in corso
- locale
- a livello locale
- località
- macchina
- machine learning
- FA
- Fare
- gestito
- direttore
- carta geografica
- mappatura
- Maps
- Marketing
- mask
- corrispondenza
- significato
- si intende
- Memorie
- misto
- ML
- modello
- modelli
- Monitorare
- Scopri di più
- maggior parte
- multiplo
- Naturale
- taccuino
- numero
- ottenuto
- offrire
- Offerte
- online
- aprire
- apertura
- operare
- operativo
- operazione
- OTTIMIZZA
- ottimizzazione
- Opzione
- Opzioni
- minimo
- organizzazione
- Altro
- altrimenti
- proprio
- parte
- particolare
- particolarmente
- Paga le
- esecuzione
- personalizzazione
- Piattaforme
- punto
- punti
- Portale
- posizione
- positivo
- potente
- predire
- Previsioni
- prezzi
- un bagno
- Problema
- problemi
- processi
- i processi
- lavorazione
- Prodotto
- Produzione
- Prodotti
- profiling
- fornire
- fornisce
- fornitura
- la percezione
- Domande e risposte
- qualità
- domanda
- rapidamente
- Crudo
- Lettura
- ragionevole
- ricevere
- ridurre
- deposito
- rappresentazione
- Risorse
- REST
- Risultati
- ritorno
- Le vendite
- recensioni
- robotica
- tondo
- Correre
- running
- Scalabilità
- Scienziato
- scienziati
- sdk
- Cerca
- problemi di
- segmento
- segmentazione
- segmenti
- selezionato
- Servizi
- servizio
- set
- flessibile.
- Corti
- mostrato
- simile
- Un'espansione
- Taglia
- abilità
- piccole
- So
- Software
- lo sviluppo del software
- solido
- soluzione
- Soluzioni
- alcuni
- lo spazio
- la nostra speciale
- specializzata
- in particolare
- pila
- Standard
- inizia a
- dichiarazione
- dichiarazioni
- conservazione
- Tornare al suo account
- Strategia
- strutturato
- studente
- di successo
- fornire
- supporto
- supporti
- sistema
- SISTEMI DI TRATTAMENTO
- task
- test
- Attraverso
- tempo
- richiede tempo
- Titolo
- token
- tokenizzazione
- token
- Tokens
- Argomenti
- torcia
- Tracking
- Training
- Trasformare
- Tipi di
- ui
- capire
- e una comprensione reciproca
- us
- uso
- utilizzare
- convalida
- APPREZZIAMO
- varietà
- fornitori
- Convalida
- contro
- verticali
- Video
- Visualizza
- virus
- visione
- Voce
- aspettare
- sito web
- servizi web
- Che
- while
- OMS
- wikipedia
- entro
- senza
- Lavora
- lavoratori
- Forza lavoro
- lavori
- worm
- anni