AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart

Vandaag kondigen we de publieke beschikbaarheid aan van Amazon's state-of-the-art Alexa Teacher-model met 20 miljard parameters  (AlexaTM 20B) door Amazon SageMaker JumpStart, de machine learning-hub van SageMaker. AlexaTM 20B is een meertalig grootschalig sequence-to-sequence (seq2seq) taalmodel ontwikkeld door Amazon. U kunt AlexaTM 20B gebruiken voor een breed scala aan industriële toepassingen, van het samenvatten van financiële rapporten tot het beantwoorden van vragen voor klantenservice-chatbots. Het kan zelfs worden toegepast als er maar een paar trainingsvoorbeelden beschikbaar zijn, of zelfs helemaal geen. AlexaTM 20B beter presteert een 175 miljard GPT-3-model op zero-shot leertaken zoals SuperGLUE en toont state-of-the-art prestaties voor meertalige zero-shot taken zoals XNLI.

In dit bericht geven we een overzicht van hoe inferentie met het AlexaTM 20B-model programmatisch kan worden geïmplementeerd en uitgevoerd via JumpStart API's, beschikbaar in de SageMaker Python-SDK. We laten zien hoe u dit model kunt gebruiken om tussen meerdere talen te vertalen, lange tekst samen te vatten, vragen te beantwoorden op basis van een bepaalde context en tekst te genereren die niet te onderscheiden lijkt van door mensen geschreven tekst.

AlexaTM 20B en in-context leren

Het Alexa Teacher Model (AlexaTM) -programma van Amazon Alexa AI is ontworpen om grootschalige, meertalige deep learning-modellen te bouwen (voornamelijk op Transformer gebaseerd), gericht op het verbeteren van de generalisatie en het omgaan met gegevensschaarste voor downstream-taken. Met grootschalige pre-training kunnen lerarenmodellen goed generaliseren om nieuwe taken te leren uit schaarse gegevens en ontwikkelaars te helpen de prestaties van downstream-taken te verbeteren. AlexaTM 20B heeft getoond competitieve prestaties op gemeenschappelijke benchmarks en taken voor natuurlijke taalverwerking (NLP), zoals machinevertaling, gegevensgeneratie en samenvatting.

Het gebruik van basismodellen zoals AlexaTM 20B vermindert de behoefte aan dure modelvooropleiding en biedt een state-of-the-art startpunt om taakmodellen te ontwikkelen met minder inspanning en minder taakspecifieke trainingsgegevens. Een van de belangrijkste mogelijkheden van basismodellen is dat we een model kunnen leren om nieuwe taken uit te voeren, zoals vraag en antwoord in verschillende talen, met zeer kleine hoeveelheden invoervoorbeelden en zonder dat er fijnafstemming of gradiëntupdates nodig zijn. Dit staat bekend als contextueel leren. Met slechts een paar voorbeelden van een nieuwe taak als context voor inferentie, kan het AlexaTM 20B-model kennis overdragen van wat is geleerd tijdens grootschalige pre-training, zelfs tussen talen. Dit heet weinig schot leren. In sommige gevallen kan het model goed presteren zonder enige trainingsgegevens, met alleen een uitleg van wat er voorspeld moet worden. Dit heet zero-shot leren. Laten we bijvoorbeeld aannemen dat we AlexaTM 20B gebruiken voor eenmalige natuurlijke taalgeneratie. De invoer die aan het model wordt doorgegeven, is het trainingsvoorbeeld in de vorm van attribuut-waardeparen, samen met het bijbehorende uitvoertekstverhaal. Het testvoorbeeld wordt vervolgens toegevoegd om de volledige invoerprompt te vormen, zoals weergegeven in de volgende afbeelding.

Voor meer informatie over het model, ga naar 20B-parameter Alexa-model zet nieuwe markeringen in het leren met weinig schoten of de oorspronkelijke papier.

Het gebruik van de AlexaTM 20B is beschikbaar voor niet-commercieel gebruik en valt onder de Licentieovereenkomst voor Alexa Teacher-model.

Overzicht oplossingen

De volgende secties bieden een stapsgewijze demo over het implementeren van het model, het uitvoeren van gevolgtrekkingen en het doen van in-context-leren om kleine leertaken op te lossen.

Merk op dat de volgende sectie codefragmenten bevat; de volledige code met alle stappen in deze demo is beschikbaar in het bijbehorende notitieboek: In-context-leren met AlexaTM 20B in SageMaker JumpStart.

Implementeer het model

Om een ​​groot taalmodel in SageMaker te gebruiken, hebt u een inferentiescript nodig dat specifiek is voor het model, dat stappen omvat zoals het laden van modellen, parallellisatie en meer. U moet ook end-to-end-tests maken voor scripts, modellen en de gewenste instantietypen om te valideren dat ze alle drie kunnen samenwerken. JumpStart neemt deze inspanning weg door kant-en-klare scripts te bieden die robuust zijn getest.

SageMaker geeft u de mogelijkheid om Docker-containers uitgebreid uit te voeren voor training en inferentie. JumpStart gebruikt deze beschikbare framework-specifieke SageMaker Deep Learning-containers (DLC's). We beginnen met het ophalen van de geoptimaliseerde DLC (deploy_image_uri) de ... gebruiken model_id. Dan halen we de model_uri met de modelparameters, samen met scripts voor het afhandelen van conclusies en eventuele bijbehorende afhankelijkheden. Vervolgens maken we een model instantie in SageMaker en implementeer het op een real-time eindpunt. Zie de volgende code:

# 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")

Het implementeren van AlexaTM 20B vereist een GPU-ondersteunde instance met minimaal 50 GB CPU-geheugen en minimaal 42 GB GPU-geheugen. SageMaker biedt veel van dergelijke instanties die real-time inferentie ondersteunen. We hebben deze oplossing op drie instanties getest: ml.g4dn.12xlarge, ml.p3.8xlarge, ml.p3.16xlarge. Zie de volgende code:

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
)

Vervolgens implementeren we het model op een real-time eindpunt van SageMaker:

# 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 vereist 40 GB schijfruimte in de inferentiecontainer. Een instantie ml.g4dn.12xlarge voldoet aan deze vereiste. Voor bijvoorbeeld typen ml.p3.8xlarge en ml.p3.16xlarge voegen we een Amazon elastische blokwinkel (Amazon EBS) volume om de grote modelgrootte aan te kunnen. Daarom zetten we volume_size = None bij implementatie op ml.g4dn.12xlarge en volume_size=256 bij implementatie op ml.p3.8xlarge of ml.p3.16xlarge.

Het implementeren van het model kan tot 10 minuten duren. Nadat het model is geïmplementeerd, kunnen we er in realtime voorspellingen uit halen!

Voer gevolgtrekking uit

AlexaTM 20B is een model voor het genereren van tekst dat, gegeven een gedeeltelijke reeks (een zin of stuk tekst), de volgende reeks woorden genereert. Het volgende codefragment geeft u een glimp van hoe u het door ons geïmplementeerde eindpunt kunt opvragen en de uitvoer kunt parseren voor een taak voor automatisch aanvullen. Om verzoeken naar een geïmplementeerd model te sturen, gebruiken we een JSON-woordenboek dat is gecodeerd in UTF-8-indeling. Het eindpuntantwoord is een JSON-object dat een lijst met gegenereerde teksten bevat.

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

Vervolgens vragen we het eindpunt en parseren we het antwoord op een voorbeeldinvoertekst:

# 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 ondersteunt momenteel 10 parameters voor het genereren van tekst tijdens inferentie: max_length, num_return_sequences, num_beams, no_repeat_ngram_size, temperature, early_stopping, do_sample, top_k, top_p en seed. Zie het bijbehorende notitieblok voor gedetailleerde informatie over geldige waarden voor elke parameter en hun impact op de uitvoer: In-context-leren met AlexaTM 20B in SageMaker JumpStart.

In-context leren

In-context leren verwijst naar het volgende: we voorzien het taalmodel van een prompt, die bestaat uit het trainen van input-outputparen die de taak demonstreren. We voegen een testinvoer toe aan de prompt en laten het taalmodel voorspellingen doen door de prompt te conditioneren en de volgende tokens of woorden te voorspellen. Dit is een zeer effectieve techniek om enkele shot-learning-problemen op te lossen, waarbij we een taak leren van een paar trainingsvoorbeelden.

Vervolgens laten we zien hoe u AlexaTM 20B kunt gebruiken voor verschillende 1-shot- en zero-shot-taken via in-context learning. In tegenstelling tot eerdere sequentie-naar-sequentie-modellen, werd de AlexaTM 20B naast denoising ook getraind in causale taalmodellering, waardoor het een goed model is voor in-context leren.

1-shot tekstsamenvatting

Tekstsamenvatting is de taak om de gegevens in te korten en een samenvatting te maken die de belangrijkste informatie in de originele tekst vertegenwoordigt. 1-shot tekstsamenvatting verwijst naar de setting waarin we leren om de tekst samen te vatten op basis van een enkel trainingsvoorbeeld. De volgende code is een voorbeeld van een tekstsamenvatting uit het XSUM-gegevensset:

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.""

We gebruiken de volgende prompt voor samenvatting wanneer er slechts één trainingsvoorbeeld wordt verstrekt. De gegenereerde tekst uit het model wordt geïnterpreteerd als de voorspelde samenvatting van het testartikel.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De output is als volgt:

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

1-shot generatie van natuurlijke taal

Het genereren van natuurlijke taal is de taak om tekstverhalen te produceren op basis van de invoertekst. Het volgende voorbeeld toont een trainingsvoorbeeld van de E2E-gegevensset:

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"

We gebruiken de volgende prompt voor het genereren van natuurlijke taal wanneer er slechts één trainingsvoorbeeld (1-shot) wordt verstrekt. De gegenereerde tekst uit het model wordt geïnterpreteerd als het voorspelde tekstverhaal voor de testinvoer (test_inp).

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De output is als volgt:

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

1-shot machinevertaling

Machinevertaling is de taak van het vertalen van tekst van de ene taal naar de andere. Het volgende voorbeeld toont een trainingsvoorbeeld van de WMT19-gegevensset waarin we moeten vertalen van het Duits naar het Engels:

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."

We gebruiken de volgende prompt voor machinevertaling wanneer er slechts één trainingsvoorbeeld (1-shot) wordt verstrekt. Gegenereerde tekst uit het model wordt geïnterpreteerd als de vertaling van de testinvoer (test_inp).

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De output is als volgt:

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

Zero-shot extractieve vraag beantwoorden

Extractieve vraagbeantwoording is de taak om het antwoord op een vraag uit de contextparagraaf te vinden. Het volgende is een voorbeeld van een context en een vraag uit de SQuAD v2-gegevensset:

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?"

Merk op dat we geen trainingsvoorbeelden hebben voor onze taak. In plaats daarvan maken we een dummy-vraag over het laatste woord in de prompt , gebaseerd op de test_context (dummy-shot). Daarom doen we eigenlijk aan zero-shot extractieve vraagbeantwoording.

We gebruiken de volgende prompt voor het extractief beantwoorden van vragen wanneer er geen trainingsvoorbeeld wordt verstrekt. Gegenereerde tekst uit het model wordt geïnterpreteerd als het antwoord op de testvraag.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De output is als volgt:

AlexaTM 20B output: 'France'

Snelle techniek

Snelle engineering kan soms een kunst zijn. Zelfs kleine wijzigingen in de aanwijzingssjabloon kunnen leiden tot aanzienlijke wijzigingen in de prestaties van het model voor een specifieke taak. Hieronder volgen enkele adviezen voor het schrijven van goede promptsjablonen. Ten eerste is het belangrijk om te onthouden dat het model is getraind om de structuur van echte zinnen te leren (causale taalmodellering). Daarom is het het beste om ervoor te zorgen dat uw promptsjabloon grammaticaal en structureel correct is in natuurlijke taal. Ten tweede profiteert dit specifieke model van dummy-opnamen om het de structuur te leren die in het antwoord wordt verwacht, zoals hierboven aangetoond. Ten derde is het altijd aan te raden om taakprestaties te onderzoeken op verschillende sjablonen voor kandidaat-prompts. Promptbron en Natuurlijke instructies zijn twee open-source frameworks voor het standaardiseren van promptsjablonen, en ze bieden een verscheidenheid aan voorbeeldprompts die worden gebruikt voor bestaande modelleringstaken. Daarnaast bijlage B van de AlexaTM 20B-papier biedt de promptsjablonen die worden gebruikt om de resultaten te genereren die in het artikel worden gepresenteerd. Er is een groeiend subveld gewijd aan het automatisch creëren en leren van de beste prompts voor een taak, inclusief zowel natuurlijke taal als doorlopende prompts. Dit valt buiten het bestek van deze zelfstudie.

Conclusie

In dit bericht hebben we laten zien hoe het AlexaTM 20B-model op een SageMaker-eindpunt kan worden geïmplementeerd en inferentie kan worden uitgevoerd. U kunt het AlexaTM 20B-model gebruiken voor in-context-leren voor een verscheidenheid aan kleine leertaken. Raadpleeg voor meer informatie over AlexaTM 20B 20B-parameter Alexa-model zet nieuwe markeringen in het leren met weinig schoten of de oorspronkelijke papier.

De auteurs willen graag de technische bijdragen van Maciej Rudnicki, Jakub Debski, Ashish Khetan, Anastasiia Dubinina, Vitaliy Korolev, Karl Albertsen, Saleh Soltan en Mariusz Momotko erkennen om deze lancering mogelijk te maken.


Over Jump Start

JumpStart is de machine learning (ML) hub van Amazon SageMaker die meer dan 350 vooraf getrainde modellen, ingebouwde algoritmen en vooraf gebouwde oplossingssjablonen biedt om u te helpen snel aan de slag te gaan met ML. JumpStart host state-of-the-art modellen van populaire modelhubs zoals TensorFlow, PyTorch, Hugging Face en MXNet, die populaire ML-taken ondersteunen, zoals objectdetectie, tekstclassificatie en tekstgeneratie. De ML-onderzoeksgemeenschap heeft veel moeite gestoken in het openbaar maken van de meeste recent ontwikkelde modellen voor gebruik. JumpStart is bedoeld om u te helpen de juiste ML-modellen en algoritmen te vinden en direct te beginnen met het bouwen van modellen. Concreet biedt JumpStart de volgende voordelen:

  • Gemakkelijke toegang met de gebruikersinterface en SDK - U hebt programmatisch toegang tot modellen en algoritmen in JumpStart met behulp van de SageMaker Python SDK of via de JumpStart-gebruikersinterface in Amazon SageMaker Studio. Momenteel is AlexaTM 20B alleen toegankelijk via de SageMaker Python SDK.
  • SageMaker ingebouwde algoritmen – JumpStart biedt meer dan 350 ingebouwde algoritmen en vooraf getrainde modellen, samen met bijbehorende trainingsscripts (indien ondersteund), inferentiescripts en voorbeeldnotitieboekjes. Scripts zijn geoptimaliseerd voor elk framework en elke taak en bieden functies zoals GPU-ondersteuning, automatische modelafstemming en incrementele training. Scripts worden ook getest op SageMaker-instanties en -functies, zodat u geen compatibiliteitsproblemen tegenkomt.
  • Kant-en-klare oplossingen – JumpStart biedt een set van 23 oplossingen voor veelvoorkomende ML-use-cases, zoals vraagprognoses en industriële en financiële toepassingen, die u met slechts een paar klikken kunt implementeren. Oplossingen zijn end-to-end ML-applicaties die verschillende AWS-services aan elkaar rijgen om een ​​bepaalde zakelijke use case op te lossen. Ze gebruiken AWS CloudFormation-sjablonen en referentiearchitecturen voor snelle implementatie, wat betekent dat ze volledig aanpasbaar zijn.
  • Ondersteuning - SageMaker biedt een scala aan ondersteuning, zoals het onderhouden van up-to-date versies wanneer nieuwe SageMaker-functies of Deep Learning Container-versies worden uitgebracht, en het maken van documentatie over het gebruik van JumpStart-inhoud in een SageMaker-omgeving.

Bekijk het volgende voor meer informatie over JumpStart en hoe u voorgetrainde open-sourcemodellen kunt gebruiken voor tal van andere ML-taken AWS re:Invent 2020-video.


Over de auteurs

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Vivek Madan is een Applied Scientist bij het Amazon SageMaker JumpStart-team. Hij promoveerde aan de Universiteit van Illinois in Urbana-Champaign en was een postdoctoraal onderzoeker bij Georgia Tech. Hij is een actief onderzoeker op het gebied van machine learning en algoritmeontwerp en heeft artikelen gepubliceerd op EMNLP-, ICLR-, COLT-, FOCS- en SODA-conferenties.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jack FitzGerald is een senior toegepaste wetenschapper bij Alexa AI, waar hij zich momenteel richt op grote taalmodellering, meertalige tekstmodellering en machine learning-operaties.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Joao Moura is een AI/ML Specialist Solutions Architect bij Amazon Web Services. Hij is vooral gericht op NLP-gebruiksscenario's en helpt klanten bij het optimaliseren van training en implementatie van deep learning-modellen. Hij is ook een actief voorstander van low-code ML-oplossingen en ML-gespecialiseerde hardware.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. juni gewonnen is een productmanager met SageMaker JumpStart en ingebouwde algoritmen. Hij richt zich op het gemakkelijk vindbaar en bruikbaar maken van ML-inhoud voor klanten van SageMaker.

AlexaTM 20B is nu beschikbaar in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Pulkit Kapoer is de productleider voor het Alexa Teacher Model-programma met Alexa AI, gericht op algemene intelligentie en toepassingen van Alexa's multitask multimodale basismodellen.

Tijdstempel:

Meer van AWS-machine learning