Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Servizi Web di Amazon

Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Servizi Web di Amazon

Oggi siamo lieti di annunciare che il modello di base OpenAI Whisper è disponibile per i clienti che lo utilizzano JumpStart di Amazon SageMaker. Whisper è un modello pre-addestrato per il riconoscimento vocale automatico (ASR) e la traduzione vocale. Addestrati su 680mila ore di dati etichettati, i modelli Whisper dimostrano una forte capacità di generalizzazione a molti set di dati e domini senza la necessità di perfezionamenti. Sagemaker JumpStart è l'hub di machine learning (ML) di SageMaker che fornisce l'accesso a modelli di base oltre ad algoritmi integrati e modelli di soluzioni end-to-end per aiutarti a iniziare rapidamente con ML.

Puoi anche eseguire ASR utilizzando Amazon Transcribe ,un servizio di riconoscimento vocale automatico completamente gestito e continuamente aggiornato.

In questo post ti mostriamo come distribuire il file OpenAI Whisper model e richiamare il modello per trascrivere e tradurre l'audio.

Il modello OpenAI Whisper utilizza il file Huggingface-pytorch-inferenza contenitore. In qualità di cliente dell'hub modello SageMaker JumpStart, puoi utilizzare ASR senza dover mantenere lo script del modello al di fuori dell'SDK SageMaker. I modelli SageMaker JumpStart migliorano inoltre il livello di sicurezza con endpoint che consentono l'isolamento della rete.

Modelli di fondazione in SageMaker

SageMaker JumpStart fornisce l'accesso a una gamma di modelli provenienti da hub di modelli popolari tra cui Hugging Face, PyTorch Hub e TensorFlow Hub, che puoi utilizzare all'interno del flusso di lavoro di sviluppo ML in SageMaker. I recenti progressi nel machine learning hanno dato origine a una nuova classe di modelli noti come modelli di fondazione, che vengono generalmente addestrati su miliardi di parametri e possono essere adattati a un'ampia categoria di casi d'uso, come il riepilogo del testo, la generazione di arte digitale e la traduzione linguistica. Poiché l'addestramento di questi modelli è costoso, i clienti desiderano utilizzare i modelli di base già addestrati esistenti e perfezionarli in base alle necessità, anziché addestrare questi modelli da soli. SageMaker fornisce un elenco curato di modelli tra cui puoi scegliere sulla console SageMaker.

Ora puoi trovare modelli di fondazione di diversi fornitori di modelli all'interno di SageMaker JumpStart, consentendoti di iniziare rapidamente con i modelli di fondazione. SageMaker JumpStart offre modelli di base basati su diverse attività o fornitori di modelli e puoi facilmente esaminare le caratteristiche del modello e i termini di utilizzo. Puoi anche provare questi modelli utilizzando un widget dell'interfaccia utente di prova. Se desideri utilizzare un modello di base su larga scala, puoi farlo senza uscire da SageMaker utilizzando notebook predefiniti dei fornitori di modelli. Poiché i modelli sono ospitati e distribuiti su AWS, hai la certezza che i tuoi dati, utilizzati per la valutazione o per l'utilizzo del modello su larga scala, non verranno condivisi con terze parti.

Modelli di fondazione OpenAI Whisper

Whisper è un modello pre-addestrato per ASR e traduzione vocale. Whisper è stato proposto nel giornale Riconoscimento vocale robusto tramite supervisione debole su larga scala di Alec Radford e altri, di OpenAI. È possibile trovare il codice originale in questo repository GitHub.

Whisper è un modello di codificatore-decodificatore basato su Transformer, noto anche come a sequenza a sequenza modello. È stato addestrato su 680mila ore di dati vocali etichettati e annotati utilizzando una supervisione debole su larga scala. I modelli Whisper dimostrano una forte capacità di generalizzare a molti set di dati e domini senza la necessità di una messa a punto.

I modelli sono stati addestrati su dati solo in inglese o su dati multilingue. I modelli solo in inglese sono stati addestrati al compito di riconoscimento vocale. I modelli multilingue sono stati addestrati al riconoscimento vocale e alla traduzione vocale. Per il riconoscimento vocale, il modello prevede le trascrizioni nei file stesso la lingua come l'audio. Per la traduzione vocale, il modello prevede le trascrizioni in a diverso lingua all'audio.

I checkpoint Whisper sono disponibili in cinque configurazioni di diverse dimensioni del modello. I quattro più piccoli vengono addestrati su dati solo inglesi o multilingue. I checkpoint più grandi sono solo multilingue. Tutti e dieci i checkpoint pre-addestrati sono disponibili su Abbracciare il mozzo del viso. I checkpoint sono riepilogati nella tabella seguente con i collegamenti ai modelli presenti sull'hub:

Nome del modello Numero di parametri Plurilingue
minuscolo 39 M
base sussurrata 74 M
sussurro-piccolo 244 M
sussurro-medio 769 M
grande sussurro 1550 M
sussurro-grande-v2 1550 M

Esploriamo come utilizzare i modelli Whisper in SageMaker JumpStart.

OpenAI Whisper Foundation modella il WER e il confronto della latenza

Il tasso di errore delle parole (WER) per diversi modelli OpenAI Whisper basati su LibriSpeech test-pulito è mostrato nella tabella seguente. WER è una metrica comune per le prestazioni di un sistema di riconoscimento vocale o di traduzione automatica. Misura la differenza tra il testo di riferimento (la verità fondamentale o la trascrizione corretta) e l'output di un sistema ASR in termini di numero di errori, comprese sostituzioni, inserimenti ed eliminazioni necessarie per trasformare l'output ASR nel riferimento testo. Questi numeri sono stati presi da Abbracciare il viso di LPI.

Modello WER (percentuale)
minuscolo 7.54
base sussurrata 5.08
sussurro-piccolo 3.43
sussurro-medio 2.9
grande sussurro 3
sussurro-grande-v2 3

Per questo blog, abbiamo preso il file audio seguente e abbiamo confrontato la latenza del riconoscimento vocale tra diversi modelli di sussurro. La latenza è la quantità di tempo che intercorre dal momento in cui un utente invia una richiesta fino al momento in cui l'applicazione indica che la richiesta è stata completata. I numeri nella tabella seguente rappresentano la latenza media per un totale di 100 richieste utilizzando lo stesso file audio con il modello ospitato sull'istanza ml.g5.2xlarge.

Modello Latenza media Uscita del modello
minuscolo 0.43 Viviamo in tempi molto entusiasmanti per quanto riguarda l'illuminazione delle macchine. La velocità di sviluppo del modello ML aumenterà davvero. Ma non arriveremo allo stato finale che abbiamo raggiunto nei prossimi anni. A meno che non rendiamo effettivamente questi modelli più accessibili a tutti.
base sussurrata 0.49 Viviamo in tempi molto entusiasmanti con l’apprendimento automatico. La velocità di sviluppo del modello ML aumenterà davvero. Ma non arriveremo allo stato finale che abbiamo raggiunto nei prossimi anni. A meno che non rendiamo effettivamente questi modelli più accessibili a tutti.
sussurro-piccolo 0.84 Viviamo in tempi molto entusiasmanti con l’apprendimento automatico. La velocità di sviluppo del modello ML aumenterà davvero. Ma non raggiungeremo lo stato finale che desideriamo nei prossimi anni a meno che non rendiamo effettivamente questi modelli più accessibili a tutti.
sussurro-medio 1.5 Viviamo in tempi molto entusiasmanti con l’apprendimento automatico. La velocità di sviluppo del modello ML aumenterà davvero. Ma non raggiungeremo lo stato finale che desideriamo nei prossimi anni a meno che non rendiamo effettivamente questi modelli più accessibili a tutti.
grande sussurro 1.96 Viviamo in tempi molto entusiasmanti con l’apprendimento automatico. La velocità di sviluppo del modello ML aumenterà davvero. Ma non raggiungeremo lo stato finale che desideriamo nei prossimi anni a meno che non rendiamo effettivamente questi modelli più accessibili a tutti.
sussurro-grande-v2 1.98 Viviamo in tempi molto entusiasmanti con l’apprendimento automatico. La velocità di sviluppo del modello ML aumenterà davvero. Ma non raggiungeremo lo stato finale che desideriamo nei prossimi anni a meno che non rendiamo effettivamente questi modelli più accessibili a tutti.

Soluzione dettagliata

Puoi distribuire modelli Whisper utilizzando la console Amazon SageMaker o utilizzando un notebook Amazon SageMaker. In questo post, dimostriamo come distribuire l'API Whisper utilizzando la console SageMaker Studio o un notebook SageMaker e quindi utilizzare il modello distribuito per il riconoscimento vocale e la traduzione linguistica. Il codice utilizzato in questo post può essere trovato in questo taccuino GitHub.

Espandiamo ogni passaggio in dettaglio.

Distribuisci Whisper dalla console

  1. Per iniziare con SageMaker JumpStart, apri la console Amazon SageMaker Studio e vai alla pagina di avvio di SageMaker JumpStart e seleziona Inizia con JumpStart.
  2. Per scegliere un modello Whisper, puoi utilizzare le schede in alto o utilizzare la casella di ricerca in alto a destra come mostrato nello screenshot seguente. Per questo esempio, utilizza la casella di ricerca in alto a destra e inserisci Whisper, quindi seleziona il modello Whisper appropriato dal menu a discesa.
    Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.
  3. Dopo aver selezionato il modello Whisper, puoi utilizzare la console per distribuire il modello. È possibile selezionare un'istanza per la distribuzione o utilizzare quella predefinita.
    Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Distribuisci il modello di fondazione da un notebook Sagemaker

I passaggi per distribuire prima e quindi utilizzare il modello distribuito per risolvere diverse attività sono:

  1. Impostare
  2. Seleziona un modello
  3. Recupera gli artefatti e distribuisci un endpoint
  4. Utilizza il modello distribuito per ASR
  5. Utilizza il modello distribuito per la traduzione linguistica
  6. Pulisci l'endpoint

Impostare

Questo notebook è stato testato su un'istanza ml.t3.medium in SageMaker Studio con il kernel Python 3 (data science) e in un'istanza Amazon SageMaker Notebook con conda_python3 kernel.

%pip install --upgrade sagemaker --quiet

Seleziona un modello preaddestrato

Configura una sessione SageMaker utilizzando Boto3, quindi seleziona l'ID modello che desideri distribuire.

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

Recupera gli artefatti e distribuisci un endpoint

Utilizzando SageMaker, puoi eseguire l'inferenza sul modello pre-addestrato, anche senza prima perfezionarlo su un nuovo set di dati. Per ospitare il modello pre-addestrato, crea un'istanza di sagemaker.model.Model e distribuirlo. Il codice seguente utilizza l'istanza predefinita ml.g5.2xlarge per l'endpoint di inferenza di un modello Whisper-Large-v2. Puoi distribuire il modello su altri tipi di istanza passando instance_type nel  JumpStartModel classe. La distribuzione potrebbe richiedere alcuni minuti.

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

Riconoscimento vocale automatico

Successivamente, leggi il file audio di esempio, sample1.wav, da un pubblico Jumpstart di SageMaker Servizio di archiviazione semplice Amazon (Amazon S3) posizione e passarlo a predittore per il riconoscimento vocale. Puoi sostituire questo file di esempio con qualsiasi altro file audio di esempio, ma assicurati che il file .wav sia campionato a 16 kHz poiché è richiesto dai modelli di riconoscimento vocale automatico. Il file audio di input deve durare meno di 30 secondi.

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

Questo modello supporta molti parametri durante l'esecuzione dell'inferenza. Loro includono:

  • max_length: il modello genera testo fino alla lunghezza dell'output. Se specificato, deve essere un numero intero positivo.
  • lingua e attività: specificare qui la lingua di output e l'attività. Il modello supporta il compito di trascrizione o traduzione.
  • max_new_tokens: il numero massimo di token da generare.
  • num_return_sequences: il numero di sequenze di output restituite. Se specificato, deve essere un numero intero positivo.
  • num_beams: Il numero di raggi utilizzati nella ricerca golosa. Se specificato, deve essere un numero intero maggiore o uguale a num_return_sequences.
  • no_repeat_ngram_size: Il modello garantisce che una sequenza di parole of no_repeat_ngram_size non viene ripetuto nella sequenza di output. Se specificato, deve essere un numero intero positivo maggiore di 1.
  • temperatura: controlla la casualità nell'output. Una temperatura più alta dà luogo a una sequenza di uscita con parole a bassa probabilità, mentre una temperatura più bassa dà luogo a una sequenza di uscita con parole ad alta probabilità. Se la temperatura si avvicina allo 0, il risultato è una decodificazione avida. Se specificato, deve essere un float positivo.
  • early_stopping: Se True, la generazione del testo termina quando tutte le ipotesi del fascio raggiungono il token di fine frase. Se specificato, deve essere booleano.
  • do_sample: Se True, campiona la parola successiva per la probabilità. Se specificato, deve essere booleano.
  • top_k: in ogni passaggio della generazione del testo, campiona solo il file top_k parole molto probabili. Se specificato, deve essere un numero intero positivo.
  • top_p: in ogni fase della generazione del testo, campiona il più piccolo insieme possibile di parole con probabilità cumulativa top_p. Se specificato, deve essere un float compreso tra 0 e 1.

È possibile specificare qualsiasi sottoinsieme dei parametri precedenti quando si richiama un endpoint. Successivamente, ti mostriamo un esempio di come richiamare un endpoint con questi argomenti.

Traduzione della lingua

Per mostrare la traduzione linguistica utilizzando i modelli Whisper, utilizza il seguente file audio in francese e traducilo in inglese. Il file deve essere campionato a 16 kHz (come richiesto dai modelli ASR), quindi assicurati di ricampionare i file se necessario e assicurati che i campioni non superino i 30 secondi.

  1. Scarica la sample_french1.wav da SageMaker JumpStart dalla posizione pubblica S3 in modo che possa essere passato nel payload per la traduzione da parte del modello 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. Imposta il parametro dell'attività come translate e la lingua come French per forzare il modello Whisper a eseguire la traduzione vocale.
    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. Usa il predittore prevedere la traduzione della lingua. Se ricevi un errore del client (errore 413), controlla la dimensione del payload sull'endpoint. I payload per le richieste di endpoint di chiamata SageMaker sono limitati a circa 5 MB.
    response = predictor.predict(payload)
    print(response["text"])

  4. Di seguito è riportato l'output del testo tradotto in inglese dal file audio francese:
    [' Welcome to JPBSystem. We have more than 150 employees and 90% of sales. We have developed about 15 patents.']

ripulire

Dopo aver testato l'endpoint, elimina l'endpoint di inferenza SageMaker ed elimina il modello per evitare addebiti.

Conclusione

In questo post ti abbiamo mostrato come testare e utilizzare i modelli OpenAI Whisper per creare applicazioni interessanti utilizzando Amazon SageMaker. Prova oggi stesso il modello di fondazione in SageMaker e facci sapere il tuo feedback!

Questa guida è solo a scopo informativo. Dovresti comunque eseguire la tua valutazione indipendente e adottare misure per assicurarti di rispettare le tue pratiche e standard specifici di controllo della qualità, nonché le norme, le leggi, i regolamenti, le licenze e i termini di utilizzo locali che si applicano a te, ai tuoi contenuti e al modello di terze parti a cui si fa riferimento nella presente guida. AWS non ha alcun controllo o autorità sul modello di terze parti a cui si fa riferimento in queste linee guida e non rilascia alcuna dichiarazione o garanzia che il modello di terze parti sia sicuro, privo di virus, operativo o compatibile con l'ambiente e gli standard di produzione. AWS non rilascia alcuna dichiarazione o garanzia che qualsiasi informazione contenuta in questa guida comporterà un risultato o un risultato particolare.


Circa gli autori

Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Hemant Singh è uno scienziato applicato con esperienza in Amazon SageMaker JumpStart. Ha conseguito il master presso il Courant Institute of Mathematical Sciences e B.Tech presso l'IIT Delhi. Ha esperienza nel lavorare su una vasta gamma di problemi di apprendimento automatico nel campo dell'elaborazione del linguaggio naturale, della visione artificiale e dell'analisi delle serie temporali.

Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Rachna Chada è Principal Solution Architect AI/ML in Strategic Accounts presso AWS. Rachna è un'ottimista che crede che l'uso etico e responsabile dell'IA possa migliorare la società in futuro e portare prosperità economica e sociale. Nel tempo libero, a Rachna piace passare il tempo con la sua famiglia, fare escursioni e ascoltare musica.

Modelli Whisper per il riconoscimento vocale automatico ora disponibili in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Ashish Khetan è un Senior Applied Scientist con algoritmi integrati di Amazon SageMaker e aiuta a sviluppare algoritmi di machine learning. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois Urbana-Champaign. È un ricercatore attivo nell'apprendimento automatico e nell'inferenza statistica e ha pubblicato numerosi articoli nelle conferenze NeurIPS, ICML, ICLR, JMLR, ACL e EMNLP.

Timestamp:

Di più da Apprendimento automatico di AWS