AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

AlexaTM 20B agora está disponível no Amazon SageMaker JumpStart

Hoje, anunciamos a disponibilidade pública do aplicativo de última geração da Amazon Alexa Teacher Model com 20 bilhões de parâmetros  (AlexaTM 20B) através JumpStart do Amazon SageMaker, hub de aprendizado de máquina da SageMaker. AlexaTM 20B é um modelo de linguagem multilíngue de sequência a sequência (seq2seq) em larga escala desenvolvido pela Amazon. Você pode usar o AlexaTM 20B para uma ampla variedade de casos de uso do setor, desde o resumo de relatórios financeiros até a resposta a perguntas para chatbots de atendimento ao cliente. Pode ser aplicado mesmo quando há poucos exemplos de treinamento disponíveis, ou mesmo nenhum. AlexaTM 20B supera um 175 bilhões modelo GPT-3 em tarefas de aprendizado zero-shot, como SuperGLUE, e mostra desempenho de ponta para tarefas zero-shot multilíngues, como XNLI.

Nesta postagem, fornecemos uma visão geral de como implantar e executar a inferência com o modelo AlexaTM 20B programaticamente por meio de APIs JumpStart, disponíveis no SDK Python do SageMaker. Nós exemplificamos como você pode usar este modelo para traduzir entre vários idiomas, resumir texto longo, responder a perguntas com base em um determinado contexto e gerar texto que pareça indistinguível do texto escrito por humanos.

AlexaTM 20B e aprendizado no contexto

O programa Alexa Teacher Model (AlexaTM) da Amazon Alexa AI foi projetado para criar modelos de aprendizagem profunda multilíngues em larga escala (principalmente baseados em Transformer), com o objetivo de melhorar a generalização e lidar com a escassez de dados para tarefas downstream. Com pré-treinamento em larga escala, os modelos de professores podem generalizar bem para aprender novas tarefas a partir de dados esparsos e ajudar os desenvolvedores a melhorar o desempenho em tarefas posteriores. AlexaTM 20B mostrou desempenho competitivo em benchmarks e tarefas comuns de processamento de linguagem natural (NLP), como tradução automática, geração de dados e resumo.

O uso de modelos básicos como o AlexaTM 20B reduz a necessidade de pré-treinamento dispendioso de modelos e fornece um ponto de partida de última geração para desenvolver modelos de tarefas com menos esforço e menos dados de treinamento específicos de tarefas. Uma das principais habilidades dos modelos de fundação é que podemos ensinar um modelo a executar novas tarefas, como perguntas e respostas em diferentes idiomas, com quantidades muito pequenas de exemplos de entrada e sem a necessidade de ajustes finos ou atualizações de gradiente. Isso é conhecido como aprendizagem no contexto. Com apenas alguns exemplos de uma nova tarefa fornecida como contexto para inferência, o modelo AlexaTM 20B pode transferir conhecimento do que foi aprendido durante o pré-treinamento em larga escala, mesmo entre idiomas. Isso é chamado aprendizado de poucas filmagens. Em alguns casos, o modelo pode funcionar bem sem nenhum dado de treinamento, apenas com uma explicação do que deve ser previsto. Isso é chamado aprendizagem zero-shot. Por exemplo, digamos que estamos usando AlexaTM 20B para geração de linguagem natural de uma só vez. A entrada passada para o modelo é o exemplo de treinamento na forma de pares atributo-valor, junto com sua narrativa de texto de saída correspondente. O exemplo de teste é anexado para formar o prompt de entrada completo, conforme mostrado na figura a seguir.

Para saber mais sobre o modelo, confira O modelo Alexa de 20B define novas marcas no aprendizado de poucos disparos ou o original papel.

O uso do AlexaTM 20B é disponibilizado para uso não comercial e é coberto pela Contrato de licença do modelo de professor Alexa.

Visão geral da solução

As seções a seguir fornecem uma demonstração passo a passo sobre como implantar o modelo, executar a inferência e fazer aprendizado no contexto para resolver tarefas de aprendizado de poucos tiros.

Observe que a seção a seguir contém trechos de código; o código completo com todas as etapas desta demonstração está disponível no notebook que o acompanha: Aprendizagem no contexto com AlexaTM 20B no SageMaker JumpStart.

Implantar o modelo

Para usar um modelo de linguagem grande no SageMaker, você precisa de um script de inferência específico para o modelo, que inclui etapas como carregamento do modelo, paralelização e muito mais. Você também precisa criar testes de ponta a ponta para scripts, modelo e os tipos de instância desejados para validar que todos os três podem funcionar juntos. O JumpStart remove esse esforço fornecendo scripts prontos para uso que foram testados de forma robusta.

O SageMaker oferece a capacidade de executar contêineres do Docker extensivamente para treinamento e inferência. O JumpStart usa essas estruturas específicas disponíveis Contêineres de aprendizado profundo do SageMaker (DLC). Começamos buscando o DLC otimizado (deploy_image_uri) Utilizando o model_id. Em seguida, buscamos o model_uri contendo os parâmetros do modelo, junto com scripts de manipulação de inferência e quaisquer dependências associadas. A seguir, criamos um instância de modelo no SageMaker e implemente-o em um endpoint em tempo real. Veja o seguinte código:

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

A implantação do AlexaTM 20B requer uma instância com suporte de GPU com pelo menos 50 GB de memória de CPU e pelo menos 42 GB de memória de GPU. O SageMaker fornece muitas dessas instâncias que oferecem suporte à inferência em tempo real. Testamos essa solução em três instâncias: ml.g4dn.12xlarge, ml.p3.8xlarge, ml.p3.16xlarge. Veja o seguinte código:

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
)

Em seguida, implantamos o modelo em um endpoint em tempo real do 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 requer 40 GB de espaço em disco no contêiner de inferência. Uma instância ml.g4dn.12xlarge atende a esse requisito. Para os tipos de instância ml.p3.8xlarge e ml.p3.16xlarge, anexamos um Loja de blocos elásticos da Amazon (Amazon EBS) volume para lidar com o tamanho grande do modelo. Portanto, estabelecemos volume_size = None ao implantar em ml.g4dn.12xlarge e volume_size=256 ao implantar em ml.p3.8xlarge ou ml.p3.16xlarge.

A implantação do modelo pode levar até 10 minutos. Depois que o modelo é implantado, podemos obter previsões dele em tempo real!

Executar inferência

AlexaTM 20B é um modelo de geração de texto que, dada uma sequência parcial (uma frase ou trecho de texto), gera o próximo conjunto de palavras. O snippet de código a seguir fornece uma ideia de como consultar o endpoint que implantamos e analisar as saídas para a tarefa de preenchimento automático. Para enviar solicitações a um modelo implantado, usamos um dicionário JSON codificado no formato UTF-8. A resposta do endpoint é um objeto JSON contendo uma lista de textos gerados.

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

Em seguida, consultamos o endpoint e analisamos a resposta em um exemplo de texto de entrada:

# 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 atualmente suporta 10 parâmetros de geração de texto durante a inferência: max_length, num_return_sequences, num_beams, no_repeat_ngram_size, temperature, early_stopping, do_sample, top_k, top_p e seed. Para obter informações detalhadas sobre valores válidos para cada parâmetro e seu impacto na saída, consulte o notebook que acompanha: Aprendizagem no contexto com AlexaTM 20B no SageMaker JumpStart.

Aprendizagem no contexto

A aprendizagem no contexto refere-se ao seguinte: fornecemos ao modelo de linguagem um prompt, que consiste em treinar pares de entrada-saída que demonstram a tarefa. Anexamos uma entrada de teste ao prompt e permitimos que o modelo de linguagem faça previsões condicionando o prompt e prevendo os próximos tokens ou palavras. Esta é uma técnica altamente eficaz para resolver alguns problemas de shot-learning, nos quais aprendemos uma tarefa a partir de alguns exemplos de treinamento.

A seguir, mostramos como você pode usar o AlexaTM 20B para várias tarefas de 1 disparo e zero disparo por meio do aprendizado no contexto. Ao contrário dos modelos anteriores de sequência a sequência, o AlexaTM 20B foi treinado em modelagem de linguagem causal, além de redução de ruído, o que o torna um bom modelo para aprendizado no contexto.

Resumo de texto de 1 tiro

A sumarização de texto é a tarefa de encurtar os dados e criar um resumo que represente as informações mais importantes presentes no texto original. Resumo de texto 1-shot refere-se à configuração em que aprendemos a resumir o texto com base em uma única amostra de treinamento. O código a seguir é uma amostra de resumo de texto do Conjunto de dados 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.""

Usamos o seguinte prompt para resumo quando apenas uma amostra de treinamento é fornecida. O texto gerado do modelo é interpretado como o resumo previsto do artigo de teste.

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

O resultado é o seguinte:

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

Geração de linguagem natural de 1 disparo

A geração de linguagem natural é a tarefa de produzir narrativas textuais a partir do texto de entrada. O exemplo a seguir mostra um exemplo de treinamento do conjunto de dados 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"

Usamos o seguinte prompt para geração de linguagem natural quando apenas uma amostra de treinamento (1-shot) é fornecida. O texto gerado do modelo é interpretado como a narrativa de texto prevista para a entrada de teste (test_inp).

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

O resultado é o seguinte:

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

Tradução automática de 1 tiro

Tradução automática é a tarefa de traduzir texto de um idioma para outro. O exemplo a seguir mostra uma amostra de treinamento do conjunto de dados WMT19 em que precisamos traduzir do alemão para o inglês:

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

Usamos o seguinte prompt para tradução automática quando apenas uma amostra de treinamento (1-shot) é fornecida. O texto gerado do modelo é interpretado como a tradução da entrada de teste (test_inp).

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

O resultado é o seguinte:

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

Resposta a perguntas extrativas de tiro zero

A resposta extrativa de perguntas é a tarefa de encontrar a resposta para uma pergunta no parágrafo de contexto. O seguinte é um exemplo de um contexto e uma pergunta do Conjunto de dados 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?"

Observe que não temos nenhum exemplo de treinamento para nossa tarefa. Em vez disso, criamos uma pergunta fictícia sobre a última palavra no prompt , com base no test_context (tiro fictício). Portanto, na verdade, estamos respondendo a perguntas extrativas de tiro zero.

Usamos o seguinte prompt para responder perguntas extrativas quando nenhuma amostra de treinamento é fornecida. O texto gerado a partir do modelo é interpretado como a resposta à pergunta do teste.

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

O resultado é o seguinte:

AlexaTM 20B output: 'France'

Engenharia imediata

A engenharia rápida às vezes pode ser uma arte. Mesmo pequenas alterações no modelo de prompt podem resultar em alterações significativas no desempenho do modelo em uma tarefa específica. A seguir estão alguns conselhos para escrever bons modelos de prompt. Primeiramente, é importante lembrar que o modelo foi treinado para aprender a estrutura de sentenças reais (modelagem de linguagem causal). Como tal, é melhor garantir que seu modelo de prompt esteja gramaticalmente e estruturalmente correto em linguagem natural. Em segundo lugar, esse modelo específico se beneficia de tiros fictícios para ajudar a ensinar a estrutura esperada na resposta, conforme demonstrado acima. Em terceiro lugar, é sempre recomendável examinar o desempenho da tarefa em uma variedade de modelos de prompt de candidatos. Fonte de alerta e Instruções Naturais são duas estruturas de software livre para padronizar modelos de prompt e fornecem uma variedade de prompts de exemplo usados ​​para tarefas de modelagem existentes. Além disso, o Apêndice B do Papel AlexaTM 20B fornece os modelos de prompt usados ​​para gerar os resultados apresentados no artigo. Há um subcampo crescente dedicado à criação automática e ao aprendizado dos melhores prompts para uma tarefa, incluindo linguagem natural e prompts contínuos. Isso está além do escopo deste tutorial.

Conclusão

Nesta postagem, mostramos como implantar o modelo AlexaTM 20B em um endpoint SageMaker e executar a inferência. Você pode usar o modelo AlexaTM 20B para aprendizado no contexto para uma variedade de tarefas de aprendizado de poucos tiros. Para saber mais sobre AlexaTM 20B, consulte O modelo Alexa de 20B define novas marcas no aprendizado de poucos disparos ou o original papel.

Os autores gostariam de agradecer as contribuições técnicas de Maciej Rudnicki, Jakub Debski, Ashish Khetan, Anastasiia Dubinina, Vitaliy Korolev, Karl Albertsen, Saleh Soltan e Mariusz Momotko para tornar este lançamento possível.


Sobre o JumpStart

JumpStart é o hub de aprendizado de máquina (ML) do Amazon SageMaker que oferece mais de 350 modelos pré-treinados, algoritmos integrados e modelos de solução pré-criados para ajudar você a começar a usar o ML rapidamente. O JumpStart hospeda modelos de última geração de hubs de modelos populares, como TensorFlow, PyTorch, Hugging Face e MXNet, que suportam tarefas populares de ML, como detecção de objetos, classificação de texto e geração de texto. A comunidade de pesquisa de ML se esforçou muito para tornar a maioria dos modelos desenvolvidos recentemente disponíveis publicamente para uso. O objetivo do JumpStart é ajudá-lo a encontrar os modelos e algoritmos de ML corretos e começar imediatamente a criar modelos. Especificamente, o JumpStart oferece os seguintes benefícios:

  • Fácil acesso com a IU e o SDK – Você pode acessar modelos e algoritmos no JumpStart de forma programática usando o SageMaker Python SDK ou por meio da IU do JumpStart no Amazon SageMaker Studio. Atualmente, o AlexaTM 20B só pode ser acessado por meio do SageMaker Python SDK.
  • Algoritmos integrados do SageMaker – O JumpStart fornece mais de 350 algoritmos integrados e modelos pré-treinados, juntamente com os scripts de treinamento correspondentes (se suportados), scripts de inferência e notebooks de exemplo. Os scripts são otimizados para cada estrutura e tarefa e fornecem recursos como suporte a GPU, ajuste automático de modelo e treinamento incremental. Os scripts também são testados em instâncias e recursos do SageMaker para que você não tenha problemas de compatibilidade.
  • Soluções pré-construídas – o JumpStart fornece um conjunto de 23 soluções para casos de uso comuns de ML, como previsão de demanda e aplicativos industriais e financeiros, que você pode implantar com apenas alguns cliques. As soluções são aplicativos de ML de ponta a ponta que agrupam vários serviços da AWS para resolver um caso de uso de negócios específico. Eles usam modelos do AWS CloudFormation e arquiteturas de referência para implantação rápida, o que significa que são totalmente personalizáveis.
  • Suporte – O SageMaker fornece uma variedade de suporte, como manter versões atualizadas quando novos recursos do SageMaker ou versões do Deep Learning Container são lançados e criar documentação sobre como usar o conteúdo do JumpStart em um ambiente do SageMaker.

Para saber mais sobre o JumpStart e como você pode usar modelos pré-treinados de código aberto para uma variedade de outras tarefas de ML, confira o seguinte Vídeo AWS re:Invent 2020.


Sobre os autores

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Vivek Madan é um cientista aplicado da equipe Amazon SageMaker JumpStart. Ele obteve seu doutorado na Universidade de Illinois em Urbana-Champaign e foi pesquisador de pós-doutorado na Georgia Tech. Ele é um pesquisador ativo em aprendizado de máquina e design de algoritmos e publicou artigos em conferências EMNLP, ICLR, COLT, FOCS e SODA.

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Jack FitzGerald é um cientista aplicado sênior da Alexa AI, onde atualmente se concentra em modelagem de linguagem grande, modelagem de texto multilíngue e operações de aprendizado de máquina.

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.João moura é arquiteto de soluções especialista em IA/ML na Amazon Web Services. Ele se concentra principalmente em casos de uso de PNL e em ajudar os clientes a otimizar o treinamento e a implantação de modelos de aprendizado profundo. Ele também é um defensor ativo de soluções de ML de baixo código e hardware especializado em ML.

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai. junho ganhou é um gerente de produto com SageMaker JumpStart e algoritmos integrados. Ele se concentra em tornar o conteúdo de ML facilmente detectável e utilizável para os clientes do SageMaker.

AlexaTM 20B já está disponível no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Pulkit Kapur é o líder de produto do programa Alexa Teacher Model com Alexa AI, com foco em inteligência generalizada e aplicações dos modelos de fundação multimodais multitarefa da Alexa.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS