AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart

Oggi annunciamo la disponibilità al pubblico dello stato dell'arte di Amazon Alexa Teacher Model con 20 miliardi di parametri  (AlexaTM 20B) attraverso JumpStart di Amazon SageMaker, l'hub di machine learning di SageMaker. AlexaTM 20B è un modello linguistico sequenziale su larga scala multilingue (seq2seq) sviluppato da Amazon. Puoi utilizzare AlexaTM 20B per un'ampia gamma di casi d'uso del settore, dal riepilogo dei report finanziari alla risposta alle domande per i chatbot del servizio clienti. Può essere applicato anche quando sono disponibili solo pochi esempi di formazione o addirittura nessuno. Alexa™ 20B Sorpassa un 175 miliardi Modello GPT-3 su attività di apprendimento zero-shot come SuperGLUE e mostra prestazioni all'avanguardia per attività multilingue zero-shot come XNLI.

In questo post, forniamo una panoramica su come distribuire ed eseguire l'inferenza con il modello AlexaTM 20B in modo programmatico tramite le API JumpStart, disponibili nel SDK Python di SageMaker. Illustriamo come utilizzare questo modello per tradurre tra più lingue, riassumere testo lungo, rispondere a domande basate su un determinato contesto e generare testo che appare indistinguibile dal testo scritto dall'uomo.

AlexaTM 20B e apprendimento contestuale

Il programma Alexa Teacher Model (AlexaTM) di Amazon Alexa AI è progettato per creare modelli di deep learning multilingue su larga scala (principalmente basati su Transformer), con l'obiettivo di migliorare la generalizzazione e gestire la scarsità di dati per le attività a valle. Con la pre-formazione su larga scala, i modelli degli insegnanti possono generalizzare bene per apprendere nuove attività da dati sparsi e aiutare gli sviluppatori a migliorare le prestazioni nelle attività a valle. AlexaTM 20B ha mostrato prestazione competitiva su benchmark e attività comuni di elaborazione del linguaggio naturale (NLP), come la traduzione automatica, la generazione di dati e il riepilogo.

L'utilizzo di modelli di base come AlexaTM 20B riduce la necessità di costosi pre-addestramento del modello e fornisce un punto di partenza all'avanguardia per sviluppare modelli di attività con meno sforzo e meno dati di addestramento specifici per attività. Una delle capacità chiave dei modelli di base è che possiamo insegnare a un modello a eseguire nuove attività come domande e risposte in diverse lingue, con quantità molto ridotte di esempi di input e senza bisogno di perfezionamenti o aggiornamenti del gradiente. Questo è noto come apprendimento contestuale. Con solo pochi esempi di una nuova attività forniti come contesto per l'inferenza, il modello AlexaTM 20B può trasferire la conoscenza da ciò che è stato appreso durante la pre-formazione su larga scala, anche attraverso le lingue. Questo è chiamato apprendimento a pochi colpi. In alcuni casi, il modello può funzionare bene senza alcun dato di addestramento, con solo una spiegazione di ciò che dovrebbe essere previsto. Questo è chiamato apprendimento zero-shot. Ad esempio, supponiamo di utilizzare AlexaTM 20B per la generazione di un linguaggio naturale one-shot. L'input passato al modello è l'esempio di addestramento sotto forma di coppie attributo-valore, insieme alla corrispondente descrizione del testo di output. L'esempio di test viene quindi aggiunto per formare il prompt di input completo, come mostrato nella figura seguente.

Per saperne di più sul modello, dai un'occhiata Il modello Alexa con parametro 20B stabilisce nuovi traguardi nell'apprendimento a pochi scatti o l'originale carta.

L'uso di AlexaTM 20B è reso disponibile per uso non commerciale ed è coperto dal Contratto di licenza modello insegnante Alexa.

Panoramica della soluzione

Le sezioni seguenti forniscono una demo dettagliata su come distribuire il modello, eseguire l'inferenza ed eseguire l'apprendimento nel contesto per risolvere attività di apprendimento di pochi colpi.

Si noti che la sezione seguente contiene frammenti di codice; il codice completo con tutti i passaggi di questa demo è disponibile nel taccuino allegato: Apprendimento contestuale con AlexaTM 20B in SageMaker JumpStart.

Distribuire il modello

Per utilizzare un modello di linguaggio di grandi dimensioni in SageMaker, è necessario uno script di inferenza specifico per il modello, che includa passaggi come caricamento del modello, parallelizzazione e altro. È inoltre necessario creare test end-to-end per script, modello e tipi di istanza desiderati per verificare che tutti e tre possano funzionare insieme. JumpStart elimina questo sforzo fornendo script pronti all'uso che sono stati ampiamente testati.

SageMaker ti offre la possibilità di eseguire ampiamente i container Docker per l'addestramento e l'inferenza. JumpStart utilizza questi framework disponibili specifici Contenitori di deep learning di SageMaker (DLC). Iniziamo recuperando il DLC ottimizzato (deploy_image_uri) usando il model_id. Quindi recuperiamo il model_uri contenente i parametri del modello, insieme agli script di gestione dell'inferenza e alle eventuali dipendenze associate. Successivamente, creiamo un file istanza del modello in SageMaker e distribuirlo a un endpoint in tempo reale. Vedere il seguente codice:

# model_version="*" fetches the latest version of the model
model_id, model_version = "pytorch-textgeneration1-alexa20b", "*"

instance_type = "ml.g4dn.12xlarge"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the model uri. This includes the model parameters, all dependencies and scripts for model loading, inference handling etc.
 model_uri = model_uris.retrieve(
 model_id=model_id, 
 model_version=model_version, 
 model_scope="inference")

L'implementazione di AlexaTM 20B richiede un'istanza supportata da GPU con almeno 50 GB di memoria CPU e almeno 42 GB di memoria GPU. SageMaker fornisce molte di queste istanze che supportano l'inferenza in tempo reale. Abbiamo testato questa soluzione su tre istanze: ml.g4dn.12xlarge, ml.p3.8xlarge, ml.p3.16xlarge. Vedere il seguente codice:

env = {
        "SAGEMAKER_MODEL_SERVER_TIMEOUT": str(3600),
        "MODEL_CACHE_ROOT": "/opt/ml/model",
        "SAGEMAKER_ENV": "1",
        "SAGEMAKER_SUBMIT_DIRECTORY":"/opt/ml/model/code/",
        "SAGEMAKER_PROGRAM": "inference.py",
        "SAGEMAKER_MODEL_SERVER_WORKERS": "1", # One worker for the endpoint rather than one worker per GPU by default
        "TS_DEFAULT_WORKERS_PER_MODEL":"1" # 1 TS worker which allocates all memory to the single master worker.
    }
    
#Create the SageMaker model instance. Note that we need to pass Predictor class when we deploy model through Model class,
#for being able to run inference through the sagemaker API.
model = Model(
    image_uri=deploy_image_uri,
    model_data=model_uri,
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
    env=env
)

Successivamente, distribuiamo il modello su un endpoint SageMaker in tempo reale:

# deploy the Model.
model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=instance_type,
    endpoint_name=endpoint_name,
    volume_size= volume_size, # Specify the size of the Amazon EBS volume in GBs.
    model_data_download_timeout = 3600, # Specify the model download timeout in seconds.
    container_startup_health_check_timeout = 3600, # Specify the health checkup timeout in seconds
)

AlexaTM 20B richiede 40 GB di spazio su disco nel contenitore di inferenza. Un'istanza ml.g4dn.12xlarge soddisfa questo requisito. Per esempio i tipi ml.p3.8xlarge e ml.p3.16xlarge, alleghiamo un Negozio di blocchi elastici di Amazon (Amazon EBS) per gestire le dimensioni del modello di grandi dimensioni. Pertanto, impostiamo volume_size = None durante la distribuzione su ml.g4dn.12xlarge e volume_size=256 durante la distribuzione su ml.p3.8xlarge o ml.p3.16xlarge.

La distribuzione del modello può richiedere fino a 10 minuti. Dopo che il modello è stato implementato, possiamo ricavarne previsioni in tempo reale!

Esegui l'inferenza

AlexaTM 20B è un modello di generazione di testo che, data una sequenza parziale (una frase o un pezzo di testo), genera il successivo set di parole. Il seguente frammento di codice offre un'idea di come interrogare l'endpoint che abbiamo distribuito e analizzare gli output per l'attività di completamento automatico. Per inviare richieste a un modello distribuito, utilizziamo un dizionario JSON codificato in formato UTF-8. La risposta dell'endpoint è un oggetto JSON contenente un elenco di testi generati.

def query(model_predictor, text, kwargs = None):
    """Query the model predictor."""

    payload = {"text_inputs": text}
    if kwargs is not None:
        payload.update(kwargs)
        
    encoded_inp = json.dumps(payload).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_inp,
        {
            "ContentType": "application/json",
            "Accept": "application/json",
        },
    )
    return query_response
 
def parse_response(query_response):
    """Parse response and return the generated texts."""

    model_predictions = json.loads(query_response)
    generated_texts = model_predictions["generated_texts"]
    return generated_texts

Successivamente, interroghiamo l'endpoint e analizziamo la risposta su un testo di input di esempio:

# text can be a single string or a list of strings
text = “[CLM]My name is Lewis and I like to"
kwargs = {"num_beams": 5, "no_repeat_ngram_size": 2, “max_length”: 50}
query_response = query_endpoint(model_predictor, text, kwargs)
generated_texts = parse_response(query_response)

Generated_texts: “travel and meet new people. I have been to many countries and I like to meet people from all over the world. If you are interested in meeting me, please feel free to send me a message and we can arrange a meeting.”

AlexaTM 20B attualmente supporta 10 parametri di generazione del testo durante l'inferenza: max_length, num_return_sequences, num_beams, no_repeat_ngram_size, temperature, early_stopping, do_sample, top_k, top_pe seed. Per informazioni dettagliate sui valori validi per ogni parametro e il relativo impatto sull'output, vedere il taccuino allegato: Apprendimento contestuale con AlexaTM 20B in SageMaker JumpStart.

Apprendimento contestuale

L'apprendimento nel contesto si riferisce a quanto segue: forniamo al modello linguistico un prompt, che consiste nell'addestrare coppie input-output che dimostrano l'attività. Aggiungiamo un input di test al prompt e consentiamo al modello linguistico di fare previsioni condizionando il prompt e prevedendo i token o le parole successive. Questa è una tecnica molto efficace per risolvere alcuni problemi di apprendimento del tiro, in cui apprendiamo un compito da alcuni campioni di allenamento.

Successivamente, mostriamo come utilizzare AlexaTM 20B per diverse attività 1-shot e zero-shot tramite l'apprendimento contestuale. A differenza dei precedenti modelli sequenza-sequenza, AlexaTM 20B è stato addestrato sulla modellazione del linguaggio causale oltre che sul denoising, il che lo rende un buon modello per l'apprendimento contestuale.

Riepilogo del testo a 1 colpo

Il riepilogo del testo è il compito di accorciare i dati e creare un riepilogo che rappresenti le informazioni più importanti presenti nel testo originale. Il riepilogo del testo 1-shot si riferisce all'impostazione in cui impariamo a riassumere il testo sulla base di un singolo campione di addestramento. Il codice seguente è un esempio di riepilogo del testo da Set di dati XSUM:

train_article = "The announcement ends months of uncertainty for Cornish Language Partnership staff whose contracts had been due to end. Local government minister Andrew Stunnell said the three-year funding package for the service would help make sure the language survived. But he warned that long term funding should come from Cornwall. He said it was "important to make sure the Cornish were given the opportunity to put down sound foundations." "In the longer term support for the Cornish language is going to be something which is going to have to be based in Cornwall and will not come from London," he added. The Cornish Language Partnership's, Jennifer Lowe, said: "We can now plan for the future thanks to the funding." The United Nations recently upgraded the status of the Cornish language from "extinct" to "critically endangered". It is thought fewer than 500 people worldwide are fluent in the language.""
                
train_summary = "The government is spending nearly £400,000 to help save the Cornish language."

test_article = "Torrents of water brought down a suspended ceiling and damaged stock "
                "in the Victoria Centre store at about 22:40 BST on Tuesday. Managers "
                "had hoped for a weekend reopening but it is now closed "until "
                "further notice". Staff have been helping with the clean-up "
                "operation. Water poured through from a rooftop room, leaving the "
                "top floor under three inches of water and stock "significantly" "
                "damaged. A spokeswoman said: "Our teams are working around the "
                "clock to get the shop open as quickly as possible and we're sorry "
                "for the inconvenience this has caused to our customers.""

Usiamo il seguente prompt per il riepilogo quando viene fornito un solo campione di addestramento. Il testo generato dal modello viene interpretato come il riepilogo previsto dell'articolo di prova.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

L'output è il seguente:

AlexaTM 20B output: 'The top floor of a London department store has been flooded.'

Generazione del linguaggio naturale in un colpo solo

La generazione del linguaggio naturale è il compito di produrre narrazioni testuali dato il testo di input. L'esempio seguente mostra un esempio di addestramento da Set di dati E2E:

train_inp = "name[The Punter], food[Indian], priceRange[cheap]"
train_out = "The Punter provides Indian food in the cheap price range."

test_inp = "name[Blue Spice], eatType[coffee shop], area"

Usiamo il prompt seguente per la generazione del linguaggio naturale quando viene fornito un solo campione di addestramento (1 colpo). Il testo generato dal modello viene interpretato come testo narrativo previsto per l'input del test (test_inp).

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

L'output è il seguente:

AlexaTM 20B output: 'Blue Spice is a coffee shop in the city centre. '

Traduzione automatica a 1 colpo

La traduzione automatica è il compito di tradurre il testo da una lingua all'altra. L'esempio seguente mostra un campione di addestramento da Set di dati WMT19 in cui dobbiamo tradurre dal tedesco all'inglese:

train_inp = "Das Parlament erhebt sich zu einer Schweigeminute."
train_out = "The House rose and observed a minute' s silence"

test_inp = "Kleingärtner bewirtschaften den einstigen Grund von Bauern."

Utilizziamo il seguente prompt per la traduzione automatica quando viene fornito un solo campione di addestramento (1 colpo). Il testo generato dal modello viene interpretato come la traduzione dell'input del test (test_inp).

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

L'output è il seguente:

AlexaTM 20B translation: 'Gardeners cultivate the former land of farmers.'

Risposta a domande estrattive a colpo zero

La risposta estrattiva alla domanda è il compito di trovare la risposta a una domanda dal paragrafo di contesto. Di seguito è riportato un esempio di un contesto e una domanda dal Set di dati SQuAD v2:

test_context = "The Normans (Norman: Nourmands; French: Normands; Latin: Normanni) were the people who in the 10th and 11th centuries gave their name to Normandy, a region in France. They were descended from Norse ("Norman" comes from "Norseman") raiders and pirates from Denmark, Iceland and Norway who, under their leader Rollo, agreed to swear fealty to King Charles III of West Francia. Through generations of assimilation and mixing with the native Frankish and Roman-Gaulish populations, their descendants would gradually merge with the Carolingian-based cultures of West Francia. The distinct cultural and ethnic identity of the Normans emerged initially in the first half of the 10th century, and it continued to evolve over the succeeding centuries."
test_question = "In what country is Normandy located?"

Si noti che non abbiamo campioni di addestramento per il nostro compito. Invece, creiamo una domanda fittizia sull'ultima parola nel prompt , basata sul test_context (colpo fittizio). Pertanto, in realtà stiamo rispondendo a domande estrattive a colpo zero.

Utilizziamo il seguente prompt per rispondere a domande estrattive quando non viene fornito alcun campione di addestramento. Il testo generato dal modello viene interpretato come risposta alla domanda del test.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

L'output è il seguente:

AlexaTM 20B output: 'France'

Ingegneria rapida

L'ingegneria rapida a volte può essere un'arte. Anche piccole modifiche al modello di richiesta possono comportare modifiche significative alle prestazioni del modello su un'attività specifica. Di seguito sono riportati alcuni consigli per scrivere buoni modelli di prompt. Innanzitutto, è importante ricordare che il modello è stato addestrato per apprendere la struttura delle frasi reali (modellazione del linguaggio causale). Pertanto, è meglio assicurarsi che il modello di prompt sia grammaticalmente e strutturalmente corretto nel linguaggio naturale. In secondo luogo, questo particolare modello beneficia di colpi fittizi per insegnargli la struttura prevista nella risposta, come dimostrato sopra. In terzo luogo, si consiglia sempre di esaminare le prestazioni dell'attività su una varietà di modelli di prompt candidati. Promptsource ed Istruzioni naturali sono due framework open source per la standardizzazione dei modelli di prompt e forniscono una varietà di prompt di esempio utilizzati per le attività di modellazione esistenti. Inoltre, l'Appendice B del Carta AlexaTM 20B fornisce i modelli di richiesta utilizzati per generare i risultati presentati nel documento. Esiste un sottocampo in crescita dedicato alla creazione automatica e all'apprendimento dei migliori prompt per un'attività, inclusi sia il linguaggio naturale che i prompt continui. Questo va oltre lo scopo di questo tutorial.

Conclusione

In questo post, abbiamo mostrato come distribuire il modello AlexaTM 20B su un endpoint SageMaker ed eseguire l'inferenza. Puoi utilizzare il modello AlexaTM 20B per l'apprendimento contestuale per una varietà di attività di apprendimento di poche riprese. Per ulteriori informazioni su AlexaTM 20B, fare riferimento a Il modello Alexa con parametro 20B stabilisce nuovi traguardi nell'apprendimento a pochi scatti o l'originale carta.

Gli autori desiderano ringraziare i contributi tecnici di Maciej Rudnicki, Jakub Debski, Ashish Khetan, Anastasiia Dubinina, Vitaliy Korolev, Karl Albertsen, Saleh Soltan e Mariusz Momotko per rendere possibile questo lancio.


Informazioni su JumpStart

JumpStart è l'hub di machine learning (ML) di Amazon SageMaker che offre oltre 350 modelli pre-addestrati, algoritmi integrati e modelli di soluzioni pre-costruiti per aiutarti a iniziare rapidamente con il ML. JumpStart ospita modelli all'avanguardia da hub di modelli popolari come TensorFlow, PyTorch, Hugging Face e MXNet, che supportano attività ML comuni come il rilevamento di oggetti, la classificazione del testo e la generazione di testo. La comunità di ricerca sul machine learning si è impegnata molto per rendere pubblicamente disponibile per l'uso la maggior parte dei modelli sviluppati di recente. JumpStart ha lo scopo di aiutarti a trovare i modelli e gli algoritmi ML corretti e iniziare immediatamente a creare modelli. Nello specifico, JumpStart offre i seguenti vantaggi:

  • Facile accesso con l'interfaccia utente e l'SDK: puoi accedere a modelli e algoritmi in JumpStart in modo programmatico utilizzando SageMaker Python SDK o tramite l'interfaccia utente di JumpStart in Amazon SageMaker Studio. Attualmente, AlexaTM 20B è accessibile solo tramite SageMaker Python SDK.
  • Algoritmi integrati di SageMaker: JumpStart fornisce oltre 350 algoritmi integrati e modelli pre-addestrati, insieme ai corrispondenti script di addestramento (se supportati), script di inferenza e notebook di esempio. Gli script sono ottimizzati per ogni framework e attività e forniscono funzionalità come supporto GPU, ottimizzazione automatica del modello e formazione incrementale. Gli script vengono inoltre testati rispetto alle istanze e alle funzionalità di SageMaker in modo da non incorrere in problemi di compatibilità.
  • Soluzioni predefinite: JumpStart fornisce un set di 23 soluzioni per casi d'uso ML comuni, come la previsione della domanda e le applicazioni industriali e finanziarie, che puoi implementare con pochi clic. Le soluzioni sono applicazioni ML end-to-end che mettono insieme vari servizi AWS per risolvere un particolare caso d'uso aziendale. Usano i modelli AWS CloudFormation e le architetture di riferimento per una distribuzione rapida, il che significa che sono completamente personalizzabili.
  • Supporto: SageMaker fornisce una gamma di supporto, come il mantenimento di versioni aggiornate quando vengono rilasciate nuove funzionalità di SageMaker o versioni di Deep Learning Container e la creazione di documentazione su come utilizzare i contenuti JumpStart in un ambiente SageMaker.

Per ulteriori informazioni su JumpStart e su come utilizzare modelli pre-addestrati open source per una varietà di altre attività ML, consulta quanto segue Video di AWS re:Invent 2020.


Informazioni sugli autori

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dott. Vivek Madan è uno scienziato applicato con il team Amazon SageMaker JumpStart. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois a Urbana-Champaign ed è stato ricercatore post-dottorato presso la Georgia Tech. È un ricercatore attivo nell'apprendimento automatico e nella progettazione di algoritmi e ha pubblicato articoli in conferenze EMNLP, ICLR, COLT, FOCS e SODA.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Jack FitzGerald è uno scienziato applicato senior con Alexa AI, dove attualmente si concentra sulla modellazione di linguaggi di grandi dimensioni, sulla modellazione di testi multilingue e sulle operazioni di apprendimento automatico.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.João Moura è un architetto specializzato in soluzioni AI/ML presso Amazon Web Services. Si concentra principalmente sui casi d'uso della NLP e aiuta i clienti a ottimizzare la formazione e l'implementazione del modello di deep learning. È anche un attivo sostenitore di soluzioni ML a basso codice e hardware specializzato in ML.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai. Giugno vinto è un product manager con SageMaker JumpStart e algoritmi integrati. Si concentra sul rendere i contenuti ML facilmente individuabili e utilizzabili per i clienti SageMaker.

AlexaTM 20B è ora disponibile in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Pulkit Kapur è il responsabile del prodotto per il programma Alexa Teacher Model con Alexa AI, incentrato sull'intelligenza generalizzata e sulle applicazioni dei modelli di base multimodali multitasking di Alexa.

Timestamp:

Di più da Apprendimento automatico di AWS