Inteligência de dados generativa

Modelos Whisper para reconhecimento automático de fala agora disponíveis no Amazon SageMaker JumpStart | Amazon Web Services

Data:

Hoje, temos o prazer de anunciar que o modelo básico OpenAI Whisper está disponível para clientes que usam JumpStart do Amazon SageMaker. Whisper é um modelo pré-treinado para reconhecimento automático de fala (ASR) e tradução de fala. Treinados em 680 mil horas de dados rotulados, os modelos Whisper demonstram uma forte capacidade de generalização para muitos conjuntos de dados e domínios sem a necessidade de ajuste fino. Sagemaker JumpStart é o centro de aprendizado de máquina (ML) do SageMaker que fornece acesso a modelos básicos, além de algoritmos integrados e modelos de solução ponta a ponta para ajudá-lo a começar a usar ML rapidamente.

Você também pode fazer ASR usando Amazon Transcribe , um serviço de reconhecimento automático de fala totalmente gerenciado e continuamente treinado.

Nesta postagem, mostramos como implantar o Sussurro OpenAI modelo e invocar o modelo para transcrever e traduzir áudio.

O modelo OpenAI Whisper usa o abraçandoface-pytorch-inferência recipiente. Como cliente do hub de modelo SageMaker JumpStart, você pode usar o ASR sem precisar manter o script do modelo fora do SDK do SageMaker. Os modelos SageMaker JumpStart também melhoram a postura de segurança com endpoints que permitem o isolamento da rede.

Modelos de fundação no SageMaker

O SageMaker JumpStart fornece acesso a uma variedade de modelos de hubs de modelos populares, incluindo Hugging Face, PyTorch Hub e TensorFlow Hub, que você pode usar em seu fluxo de trabalho de desenvolvimento de ML no SageMaker. Avanços recentes em ML deram origem a uma nova classe de modelos conhecida como modelos de fundação, que normalmente são treinados em bilhões de parâmetros e podem ser adaptados a uma ampla categoria de casos de uso, como resumo de texto, geração de arte digital e tradução de idiomas. Como o treinamento desses modelos é caro, os clientes desejam usar modelos básicos pré-treinados existentes e ajustá-los conforme necessário, em vez de treinar eles próprios esses modelos. O SageMaker fornece uma lista selecionada de modelos que você pode escolher no console do SageMaker.

Agora você pode encontrar modelos de base de diferentes fornecedores de modelos no SageMaker JumpStart, permitindo que você comece a usar modelos de base rapidamente. O SageMaker JumpStart oferece modelos básicos baseados em diferentes tarefas ou provedores de modelos, e você pode revisar facilmente as características do modelo e os termos de uso. Você também pode experimentar esses modelos usando um widget de IU de teste. Quando quiser usar um modelo básico em escala, você pode fazer isso sem sair do SageMaker usando notebooks pré-construídos de fornecedores de modelos. Como os modelos são hospedados e implantados na AWS, você confia que seus dados, sejam usados ​​para avaliação ou para uso do modelo em escala, não serão compartilhados com terceiros.

Modelos de base OpenAI Whisper

Whisper é um modelo pré-treinado para ASR e tradução de fala. Whisper foi proposto no jornal Reconhecimento robusto de fala por meio de supervisão fraca em larga escala por Alec Radford e outros, da OpenAI. O código original pode ser encontrado neste repositório GitHub.

Whisper é um modelo de codificador-decodificador baseado em Transformer, também conhecido como sequência a sequência modelo. Ele foi treinado em 680 mil horas de dados de fala rotulados anotados usando supervisão fraca em larga escala. Os modelos Whisper demonstram uma forte capacidade de generalização para muitos conjuntos de dados e domínios sem a necessidade de ajuste fino.

Os modelos foram treinados em dados somente em inglês ou em dados multilíngues. Os modelos somente em inglês foram treinados na tarefa de reconhecimento de fala. Os modelos multilíngues foram treinados em reconhecimento e tradução de fala. Para reconhecimento de fala, o modelo prevê transcrições no mesmo idioma como o áudio. Para tradução de fala, o modelo prevê transcrições para um diferente idioma ao áudio.

Os pontos de verificação Whisper vêm em cinco configurações de tamanhos variados de modelo. Os quatro menores são treinados apenas em inglês ou em dados multilíngues. Os maiores postos de controle são apenas multilíngues. Todos os dez pontos de verificação pré-treinados estão disponíveis no Hub de rosto abraçado. Os pontos de verificação estão resumidos na tabela a seguir com links para os modelos no hub:

Nome do modelo Número de parâmetros Multilíngue
sussurrar-minúsculo 39 M Sim
base de sussurro 74 M Sim
sussurrar-pequeno 244 M Sim
sussurro-médio 769 M Sim
sussurrante 1550 M Sim
sussurro-grande-v2 1550 M Sim

Vamos explorar como você pode usar modelos Whisper no SageMaker JumpStart.

Modelos de base OpenAI Whisper WER e comparação de latência

A taxa de erro de palavra (WER) para diferentes modelos OpenAI Whisper com base no LibriSpeech teste limpo é mostrado na tabela a seguir. WER é uma métrica comum para o desempenho de um sistema de reconhecimento de fala ou tradução automática. Ele mede a diferença entre o texto de referência (a verdade ou a transcrição correta) e a saída de um sistema ASR em termos do número de erros, incluindo substituições, inserções e exclusões que são necessárias para transformar a saída ASR na referência. texto. Esses números foram retirados do Abraçando o rosto .

Modelo WER (porcentagem)
sussurrar-minúsculo 7.54
base de sussurro 5.08
sussurrar-pequeno 3.43
sussurro-médio 2.9
sussurrante 3
sussurro-grande-v2 3

Para este blog, pegamos o arquivo de áudio abaixo e comparamos a latência do reconhecimento de fala em diferentes modelos de sussurro. Latência é o tempo desde o momento em que um usuário envia uma solicitação até o momento em que seu aplicativo indica que a solicitação foi concluída. Os números na tabela a seguir representam a latência média para um total de 100 solicitações usando o mesmo arquivo de áudio com o modelo hospedado na instância ml.g5.2xlarge.

Modelo Latência(s) média(s) Saída do modelo
sussurrar-minúsculo 0.43 Estamos vivendo tempos muito emocionantes com a iluminação de máquinas. A velocidade de desenvolvimento do modelo de ML realmente aumentará. Mas você não chegará ao estado final que conquistamos nos próximos anos. A menos que tornemos estes modelos mais acessíveis a todos.
base de sussurro 0.49 Estamos vivendo tempos muito emocionantes com o aprendizado de máquina. A velocidade de desenvolvimento do modelo de ML realmente aumentará. Mas você não chegará ao estado final que conquistamos nos próximos anos. A menos que tornemos estes modelos mais acessíveis a todos.
sussurrar-pequeno 0.84 Estamos vivendo tempos muito emocionantes com o aprendizado de máquina. A velocidade de desenvolvimento do modelo de ML realmente aumentará. Mas não chegaremos ao estado final que desejamos nos próximos anos, a menos que tornemos estes modelos mais acessíveis a todos.
sussurro-médio 1.5 Estamos vivendo tempos muito emocionantes com o aprendizado de máquina. A velocidade de desenvolvimento do modelo de ML realmente aumentará. Mas não chegaremos ao estado final que desejamos nos próximos anos, a menos que tornemos estes modelos mais acessíveis a todos.
sussurrante 1.96 Estamos vivendo tempos muito emocionantes com o aprendizado de máquina. A velocidade de desenvolvimento do modelo de ML realmente aumentará. Mas não chegaremos ao estado final que desejamos nos próximos anos, a menos que tornemos estes modelos mais acessíveis a todos.
sussurro-grande-v2 1.98 Estamos vivendo tempos muito emocionantes com o aprendizado de máquina. A velocidade de desenvolvimento do modelo de ML realmente aumentará. Mas não chegaremos ao estado final que desejamos nos próximos anos, a menos que tornemos estes modelos mais acessíveis a todos.

Passo a passo da solução

Você pode implantar modelos Whisper usando o console do Amazon SageMaker ou um notebook do Amazon SageMaker. Nesta postagem, demonstramos como implantar a API Whisper usando o console do SageMaker Studio ou um SageMaker Notebook e, em seguida, usar o modelo implantado para reconhecimento de fala e tradução de idiomas. O código usado neste post pode ser encontrado em este caderno GitHub.

Vamos expandir cada etapa em detalhes.

Implante o Whisper no console

  1. Para começar a usar o SageMaker JumpStart, abra o console do Amazon SageMaker Studio, acesse a página de inicialização do SageMaker JumpStart e selecione Comece com JumpStart.
  2. Para escolher um modelo Whisper, você pode usar as guias na parte superior ou a caixa de pesquisa no canto superior direito, conforme mostrado na imagem a seguir. Para este exemplo, use a caixa de pesquisa no canto superior direito e digite Whispere selecione o modelo Whisper apropriado no menu suspenso.
  3. Depois de selecionar o modelo Whisper, você poderá usar o console para implementar o modelo. Você pode selecionar uma instância para implantação ou usar o padrão.

Implante o modelo básico de um notebook Sagemaker

As etapas para primeiro implantar e depois usar o modelo implantado para resolver diferentes tarefas são:

  1. Estabelecer
  2. Selecione um modelo
  3. Recupere artefatos e implante um endpoint
  4. Use o modelo implantado para ASR
  5. Use o modelo implantado para tradução de idiomas
  6. Limpe o terminal

Estabelecer

Este notebook foi testado em uma instância ml.t3.medium no SageMaker Studio com o kernel Python 3 (ciência de dados) e em uma instância do Amazon SageMaker Notebook com o conda_python3 núcleo.

%pip install --upgrade sagemaker --quiet

Selecione um modelo pré-treinado

Configure uma sessão SageMaker usando Boto3 e selecione o ID do modelo que você deseja implantar.

model_id = "huggingface-asr-whisper-large-v2"

Recupere artefatos e implante um endpoint

Usando o SageMaker, você pode realizar inferências no modelo pré-treinado, mesmo sem ajustá-lo primeiro em um novo conjunto de dados. Para hospedar o modelo pré-treinado, crie uma instância de sábio.modelo.modelo e implantá-lo. O código a seguir usa a instância padrão ml.g5.2xlarge para o ponto final de inferência de um modelo sussurro-grande-v2. Você pode implantar o modelo em outros tipos de instância passando instance_type no JumpStartModel aula. A implantação pode levar alguns minutos.

#Deploying the model from sagemaker.jumpstart.model import JumpStartModel
from sagemaker.serializers import JSONSerializer my_model = JumpStartModel(model_id=dropdown.value)
predictor = my_model.deploy()

Reconhecimento automático de fala

Em seguida, você lê o arquivo de áudio de amostra, sample1.wav, de um arquivo público do SageMaker Jumpstart Serviço de armazenamento simples da Amazon (Amazon S3) localização e passe-o para o preditor para reconhecimento de fala. Você pode substituir este arquivo de amostra por qualquer outro arquivo de áudio de amostra, mas certifique-se de que o arquivo .wav seja amostrado em 16 kHz, pois é exigido pelos modelos de reconhecimento automático de fala. O arquivo de áudio de entrada deve ter menos de 30 segundos.

from scipy.io.wavfile import read
import json
import boto3
from sagemaker.jumpstart import utils # The wav files must be sampled at 16kHz (this is required by the automatic speech recognition models), so make sure to resample them if required. The input audio file must be less than 30 seconds.
s3_bucket = utils.get_jumpstart_content_bucket(boto3.Session().region_name)
key_prefix = "training-datasets/asr_notebook_data"
input_audio_file_name = "sample1.wav" s3_client = boto3.client("s3")
s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name ) with open(input_audio_file_name, "rb") as file: wav_file_read = file.read() # If you receive client error (413) please check the payload size to the endpoint. Payloads for SageMaker invoke endpoint requests are limited to about 5MB
response = predictor.predict(wav_file_read)
print(response["text"])

Este modelo oferece suporte a muitos parâmetros ao realizar inferência. Eles incluem:

  • max_length: O modelo gera texto até o comprimento de saída. Se especificado, deve ser um número inteiro positivo.
  • idioma e tarefa: especifique o idioma de saída e a tarefa aqui. O modelo suporta a tarefa de transcrição ou tradução.
  • max_new_tokens: o número máximo de tokens a serem gerados.
  • num_return_sequences: o número de sequências de saída retornadas. Se especificado, deve ser um número inteiro positivo.
  • num_beams: O número de feixes usados ​​na busca gananciosa. Se especificado, deve ser um número inteiro maior ou igual a num_return_sequences.
  • no_repeat_ngram_size: O modelo garante que uma sequência de palavras de no_repeat_ngram_size não é repetido na sequência de saída. Se especificado, deve ser um número inteiro positivo maior que 1.
  • temperatura: Isso controla a aleatoriedade na saída. Temperatura mais alta resulta em uma sequência de saída com palavras de baixa probabilidade e temperatura mais baixa resulta em uma sequência de saída com palavras de alta probabilidade. Se a temperatura se aproximar de 0, isso resultará em uma decodificação gananciosa. Se especificado, deve ser um ponto flutuante positivo.
  • early_stopping: Se True, a geração do texto termina quando todas as hipóteses de feixe atingem o token de final da frase. Se especificado, deve ser booleano.
  • do_sample: Se True, experimente a próxima palavra para ver a probabilidade. Se especificado, deve ser booleano.
  • top_k: Em cada etapa da geração de texto, faça uma amostra apenas do top_k palavras mais prováveis. Se especificado, deve ser um número inteiro positivo.
  • top_p: Em cada etapa de geração de texto, faça uma amostra do menor conjunto possível de palavras com probabilidade cumulativa top_p. Se especificado, deve ser um valor flutuante entre 0 e 1.

Você pode especificar qualquer subconjunto dos parâmetros anteriores ao invocar um terminal. A seguir, mostramos um exemplo de como invocar um endpoint com esses argumentos.

Tradução de linguagem

Para mostrar a tradução de idiomas usando modelos Whisper, use o seguinte arquivo de áudio em francês e traduza-o para o inglês. O arquivo deve ser amostrado a 16 kHz (conforme exigido pelos modelos ASR), portanto, certifique-se de reamostrar os arquivos, se necessário, e certifique-se de que suas amostras não excedam 30 segundos.

  1. Faça o download do sample_french1.wav do SageMaker JumpStart do local público do S3 para que possa ser transmitido em carga útil para tradução pelo modelo Whisper.
    input_audio_file_name = "sample_french1.wav" s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )

  2. Defina o parâmetro de tarefa como translate e a linguagem como French para forçar o modelo Whisper a realizar a tradução de fala.
    with open(input_audio_file_name, "rb") as file: wav_file_read = file.read() payload = {"audio_input": wav_file_read.hex(), "language": "french", "task": "translate"} predictor.serializer = JSONSerializer()
    predictor.content_type = "application/json"

  3. Use preditor para prever a tradução do idioma. Se você receber um erro do cliente (erro 413), verifique o tamanho da carga útil para o endpoint. As cargas para solicitações de endpoint de invocação do SageMaker são limitadas a cerca de 5 MB.
    response = predictor.predict(payload)
    print(response["text"])

  4. A saída de texto traduzida para o inglês a partir do arquivo de áudio francês é a seguinte:
    [' Welcome to JPBSystem. We have more than 150 employees and 90% of sales. We have developed about 15 patents.']

limpar

Depois de testar o endpoint, exclua o endpoint de inferência do SageMaker e exclua o modelo para evitar cobranças.

Conclusão

Nesta postagem, mostramos como testar e usar modelos OpenAI Whisper para criar aplicativos interessantes usando Amazon SageMaker. Experimente o modelo básico no SageMaker hoje e deixe-nos saber seus comentários!

Esta orientação é apenas para fins informativos. Você ainda deve realizar sua própria avaliação independente e tomar medidas para garantir o cumprimento de suas práticas e padrões específicos de controle de qualidade e das regras, leis, regulamentos, licenças e termos de uso locais que se aplicam a você, ao seu conteúdo e ao modelo de terceiros mencionado nesta orientação. A AWS não tem controle nem autoridade sobre o modelo de terceiros mencionado nesta orientação e não faz nenhuma representação ou garantia de que o modelo de terceiros seja seguro, livre de vírus, operacional ou compatível com seu ambiente e padrões de produção. A AWS não faz nenhuma representação ou garantia de que qualquer informação nesta orientação resultará em um resultado ou resultado específico.


Sobre os autores

Hemant Singh é cientista aplicado com experiência no Amazon SageMaker JumpStart. Ele obteve seu mestrado no Courant Institute of Mathematical Sciences e B.Tech no IIT Delhi. Ele tem experiência trabalhando em uma ampla gama de problemas de aprendizado de máquina no domínio de processamento de linguagem natural, visão computacional e análise de séries temporais.

Rachna Chadha é Arquiteto Principal de Soluções AI/ML em Contas Estratégicas na AWS. Rachna é uma otimista que acredita que o uso ético e responsável da IA ​​pode melhorar a sociedade no futuro e trazer prosperidade econômica e social. Em seu tempo livre, Rachna gosta de passar tempo com sua família, fazer caminhadas e ouvir música.

Dr. é um cientista aplicado sênior com algoritmos integrados do Amazon SageMaker e ajuda a desenvolver algoritmos de aprendizado de máquina. Ele obteve seu PhD pela University of Illinois Urbana-Champaign. Ele é um pesquisador ativo em aprendizado de máquina e inferência estatística e publicou muitos artigos em conferências NeurIPS, ICML, ICLR, JMLR, ACL e EMNLP.

local_img

Inteligência mais recente

local_img