Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon webbtjänster

Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon webbtjänster

Idag är vi glada att kunna meddela att OpenAI Whisper-grundmodellen är tillgänglig för kunder som använder Amazon SageMaker JumpStart. Whisper är en förtränad modell för automatisk taligenkänning (ASR) och talöversättning. Utbildade på 680 tusen timmar av märkt data, Whisper-modeller visar en stark förmåga att generalisera till många datamängder och domäner utan behov av finjustering. Sagemaker JumpStart är maskininlärningsnavet (ML) i SageMaker som ger tillgång till grundmodeller förutom inbyggda algoritmer och helhetslösningsmallar för att hjälpa dig att snabbt komma igång med ML.

Du kan också göra ASR med Amazon Transcribe ,en fullt hanterad och kontinuerligt utbildad automatisk taligenkänningstjänst.

I det här inlägget visar vi dig hur du distribuerar OpenAI Whisper modellera och anropa modellen för att transkribera och översätta ljud.

OpenAI Whisper-modellen använder huggingface-pytorch-inferens behållare. Som kund hos SageMaker JumpStart modellhubben kan du använda ASR utan att behöva underhålla modellskriptet utanför SageMaker SDK. SageMaker JumpStart-modeller förbättrar också säkerhetsställningen med slutpunkter som möjliggör nätverksisolering.

Grundmodeller i SageMaker

SageMaker JumpStart ger tillgång till en rad modeller från populära modellhubbar inklusive Hugging Face, PyTorch Hub och TensorFlow Hub, som du kan använda i ditt ML-utvecklingsarbetsflöde i SageMaker. De senaste framstegen inom ML har gett upphov till en ny klass av modeller som kallas grundmodeller, som vanligtvis tränas på miljarder parametrar och kan anpassas till en bred kategori av användningsfall, såsom textsammanfattning, generering av digital konst och språköversättning. Eftersom dessa modeller är dyra att träna vill kunderna använda befintliga förutbildade grundmodeller och finjustera dem efter behov, snarare än att träna dessa modeller själva. SageMaker tillhandahåller en utvald lista över modeller som du kan välja mellan på SageMaker-konsolen.

Du kan nu hitta grundmodeller från olika modellleverantörer inom SageMaker JumpStart, vilket gör att du snabbt kan komma igång med grundmodeller. SageMaker JumpStart erbjuder grundmodeller baserade på olika uppgifter eller modellleverantörer, och du kan enkelt granska modellens egenskaper och användningsvillkor. Du kan också prova dessa modeller med en test-UI-widget. När du vill använda en grundmodell i stor skala kan du göra det utan att lämna SageMaker genom att använda förbyggda bärbara datorer från modellleverantörer. Eftersom modellerna är värd och distribueras på AWS litar du på att dina data, oavsett om de används för att utvärdera eller använda modellen i stor skala, inte kommer att delas med tredje part.

OpenAI Whisper foundation modeller

Whisper är en förutbildad modell för ASR och talöversättning. Whisper föreslogs i tidningen Robust taligenkänning via storskalig svag övervakning av Alec Radford, och andra, från OpenAI. Originalkoden kan hittas i detta GitHub-förråd.

Whisper är en transformatorbaserad encoder-decoder-modell, även kallad en sekvens till sekvens modell. Den tränades på 680 tusen timmars märkt taldata kommenterad med hjälp av storskalig svag övervakning. Whisper-modeller visar en stark förmåga att generalisera till många datamängder och domäner utan behov av finjustering.

Modellerna tränades på antingen engelska endast data eller flerspråkig data. Modellerna endast för engelska utbildades i uppgiften taligenkänning. De flerspråkiga modellerna tränades i taligenkänning och talöversättning. För taligenkänning förutsäger modellen transkriptioner i Samma språk som ljud. För talöversättning förutsäger modellen transkriptioner till a olika språk till ljudet.

Whisper checkpoints finns i fem konfigurationer av olika modellstorlekar. De minsta fyra tränas på antingen engelska eller flerspråkig data. De största kontrollpunkterna är endast flerspråkiga. Alla tio förtränade kontrollpunkterna är tillgängliga på Kramande ansiktsnav. Kontrollpunkterna sammanfattas i följande tabell med länkar till modellerna på navet:

Modellnamn Antal parametrar Flerspråkig
visk-liten 39 M Ja
visk-bas 74 M Ja
visk-liten 244 M Ja
viskmedel 769 M Ja
viskande stor 1550 M Ja
viska-stor-v2 1550 M Ja

Låt oss utforska hur du kan använda Whisper-modeller i SageMaker JumpStart.

OpenAI Whisper foundation-modeller WER och latensjämförelse

Ordfelfrekvensen (WER) för olika OpenAI Whisper-modeller baserat på LibriSpeech test-ren visas i följande tabell. WER är ett vanligt mått för prestanda för ett system för taligenkänning eller maskinöversättning. Den mäter skillnaden mellan referenstexten (grundsanningen eller den korrekta transkriptionen) och utdata från ett ASR-system i termer av antalet fel, inklusive substitutioner, infogningar och raderingar som behövs för att omvandla ASR-utdata till referensen text. Dessa siffror har tagits från Kramande ansikte webbsajt.

Modell WER (procent)
visk-liten 7.54
visk-bas 5.08
visk-liten 3.43
viskmedel 2.9
viskande stor 3
viska-stor-v2 3

För den här bloggen tog vi ljudfilen nedan och jämförde taligenkänningens latens mellan olika viskningsmodeller. Latens är tiden från det att en användare skickar en förfrågan tills den tidpunkt då din ansökan indikerar att förfrågan har slutförts. Siffrorna i följande tabell representerar den genomsnittliga latensen för totalt 100 förfrågningar som använder samma ljudfil med modellen på ml.g5.2xlarge-instansen.

Modell Genomsnittlig latens(er) Modellutgång
visk-liten 0.43 Vi lever i mycket spännande tider med maskinbelysning. Hastigheten i utvecklingen av ML-modeller kommer verkligen att öka. Men du kommer inte till det sluttillståndet som vi vann under de kommande åren. Om vi ​​inte faktiskt gör dessa modeller mer tillgängliga för alla.
visk-bas 0.49 Vi lever i mycket spännande tider med maskininlärning. Hastigheten i utvecklingen av ML-modeller kommer verkligen att öka. Men du kommer inte till det sluttillståndet som vi vann under de kommande åren. Om vi ​​inte faktiskt gör dessa modeller mer tillgängliga för alla.
visk-liten 0.84 Vi lever i mycket spännande tider med maskininlärning. Hastigheten i utvecklingen av ML-modeller kommer verkligen att öka. Men du kommer inte till det sluttillstånd som vi vill ha under de kommande åren om vi inte faktiskt gör dessa modeller mer tillgängliga för alla.
viskmedel 1.5 Vi lever i mycket spännande tider med maskininlärning. Hastigheten i utvecklingen av ML-modeller kommer verkligen att öka. Men du kommer inte till det sluttillstånd som vi vill ha under de kommande åren om vi inte faktiskt gör dessa modeller mer tillgängliga för alla.
viskande stor 1.96 Vi lever i mycket spännande tider med maskininlärning. Hastigheten i utvecklingen av ML-modeller kommer verkligen att öka. Men du kommer inte till det sluttillstånd som vi vill ha under de kommande åren om vi inte faktiskt gör dessa modeller mer tillgängliga för alla.
viska-stor-v2 1.98 Vi lever i mycket spännande tider med maskininlärning. Hastigheten i utvecklingen av ML-modeller kommer verkligen att öka. Men du kommer inte till det sluttillstånd som vi vill ha under de kommande åren om vi inte faktiskt gör dessa modeller mer tillgängliga för alla.

Lösning genomgång

Du kan distribuera Whisper-modeller med Amazon SageMaker-konsolen eller med en Amazon SageMaker Notebook. I det här inlägget visar vi hur man distribuerar Whisper API med SageMaker Studio-konsolen eller en SageMaker Notebook och sedan använder den distribuerade modellen för taligenkänning och språköversättning. Koden som används i det här inlägget finns i denna GitHub-anteckningsbok.

Låt oss utöka varje steg i detalj.

Distribuera Whisper från konsolen

  1. För att komma igång med SageMaker JumpStart, öppna Amazon SageMaker Studio-konsolen och gå till startsidan för SageMaker JumpStart och välj Kom igång med JumpStart.
  2. För att välja en Whisper-modell kan du antingen använda flikarna längst upp eller använda sökrutan uppe till höger som visas i följande skärmdump. För det här exemplet, använd sökrutan uppe till höger och skriv in Whisper, och välj sedan lämplig Whisper-modell från rullgardinsmenyn.
    Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. När du har valt Whisper-modellen kan du använda konsolen för att distribuera modellen. Du kan välja en instans för distribution eller använda standardinställningen.
    Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Distribuera grundmodellen från en Sagemaker Notebook

Stegen för att först distribuera och sedan använda den distribuerade modellen för att lösa olika uppgifter är:

  1. Montera myggnät för luckor
  2. Välj en modell
  3. Hämta artefakter och distribuera en slutpunkt
  4. Använd utplacerad modell för ASR
  5. Använd utplacerad modell för språköversättning
  6. Rensa upp ändpunkten

Montera myggnät för luckor

Den här anteckningsboken testades på en ml.t3.medium-instans i SageMaker Studio med Python 3 (data science)-kärnan och i en Amazon SageMaker Notebook-instans med conda_python3 kärna.

%pip install --upgrade sagemaker --quiet

Välj en förutbildad modell

Konfigurera en SageMaker-session med Boto3 och välj sedan det modell-ID som du vill distribuera.

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

Hämta artefakter och distribuera en slutpunkt

Med SageMaker kan du göra slutledning på den förtränade modellen, även utan att finjustera den först på en ny datamängd. För att vara värd för den förtränade modellen, skapa en instans av sagemaker.model.Modell och distribuera den. Följande kod använder standardinstansen ml.g5.2xlarge för slutpunkten för slutpunkten för en whisper-large-v2-modell. Du kan distribuera modellen på andra instanstyper genom att passera instance_typeJumpStartModel klass. Implementeringen kan ta några minuter.

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

Automatisk taligenkänning

Därefter läser du exempelljudfilen sample1.wav från en SageMaker Jumpstart public Amazon Simple Storage Service (Amazon S3) plats och skicka den till prediktor för taligenkänning. Du kan ersätta denna exempelfil med vilken annan ljudexempelfil som helst, men se till att .wav-filen samplas vid 16 kHz eftersom den krävs av modellerna för automatisk taligenkänning. Ingångsljudfilen måste vara mindre än 30 sekunder.

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

Denna modell stöder många parametrar vid slutledning. De inkluderar:

  • max_length: Modellen genererar text fram till utdatalängden. Om det anges måste det vara ett positivt heltal.
  • språk och uppgift: Ange utdataspråk och uppgift här. Modellen stödjer uppgiften att transkriptera eller översätta.
  • max_new_tokens: Det maximala antalet tokens att generera.
  • num_return_sequences: Antalet utgångssekvenser som returneras. Om det anges måste det vara ett positivt heltal.
  • num_beams: Antalet strålar som används i den giriga sökningen. Om det anges måste det vara ett heltal större än eller lika med num_return_sequences.
  • no_repeat_ngram_size: Modellen säkerställer att en sekvens av ord av no_repeat_ngram_size upprepas inte i utgångssekvensen. Om det anges måste det vara ett positivt heltal större än 1.
  • temperatur: Detta styr slumpmässigheten i utgången. Högre temperatur resulterar i en utgångssekvens med ord med låg sannolikhet och lägre temperatur resulterar i en utgångssekvens med ord med hög sannolikhet. Om temperaturen närmar sig 0 resulterar det i girig avkodning. Om det anges måste det vara ett positivt flytande.
  • early_stopping: Om True, är textgenereringen avslutad när alla strålhypoteser når slutet av meningen. Om det anges måste det vara booleskt.
  • do_sample: Om True, prova nästa ord för sannolikheten. Om det anges måste det vara booleskt.
  • top_k: I varje steg av textgenerering, prov från endast top_k mest troliga ord. Om det anges måste det vara ett positivt heltal.
  • top_p: I varje steg av textgenerering, prov från minsta möjliga uppsättning ord med kumulativ sannolikhet top_p. Om det anges måste det vara ett flytande mellan 0 och 1.

Du kan ange vilken delmängd som helst av de föregående parametrarna när du anropar en slutpunkt. Därefter visar vi dig ett exempel på hur man anropar en slutpunkt med dessa argument.

Språköversättning

För att visa upp språköversättning med Whisper-modeller, använd följande ljudfil på franska och översätt den till engelska. Filen måste samplas vid 16 kHz (som krävs av ASR-modellerna), så se till att omsampla filer vid behov och se till att dina samplingar inte överstiger 30 sekunder.

  1. ladda ner sample_french1.wav från SageMaker JumpStart från den offentliga S3-platsen så att den kan skickas i nyttolast för översättning av Whisper-modellen.
    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. Ställ in uppgiftsparametern som translate och språk som French att tvinga Whisper-modellen att utföra talöversättning.
    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. Använda prediktor att förutsäga översättningen av språket. Om du får klientfel (fel 413), kontrollera nyttolaststorleken till slutpunkten. Nyttolaster för SageMaker anropa slutpunktsbegäranden är begränsade till cirka 5 MB.
    response = predictor.predict(payload)
    print(response["text"])

  4. Textutmatningen översatt till engelska från den franska ljudfilen följer:
    [' Welcome to JPBSystem. We have more than 150 employees and 90% of sales. We have developed about 15 patents.']

Städa upp

När du har testat slutpunkten tar du bort SageMaker slutpunkten och tar bort modellen för att undvika avgifter.

Slutsats

I det här inlägget visade vi dig hur du testar och använder OpenAI Whisper-modeller för att bygga intressanta applikationer med Amazon SageMaker. Testa grundmodellen i SageMaker idag och låt oss veta din feedback!

Denna vägledning är endast i informationssyfte. Du bör fortfarande utföra din egen oberoende bedömning och vidta åtgärder för att säkerställa att du följer dina egna specifika praxis och standarder för kvalitetskontroll och de lokala regler, lagar, förordningar, licenser och användarvillkor som gäller för dig, ditt innehåll och tredjepartsmodell som hänvisas till i denna vägledning. AWS har ingen kontroll eller auktoritet över tredjepartsmodellen som hänvisas till i denna vägledning och ger inga utfästelser eller garantier för att tredjepartsmodellen är säker, virusfri, funktionsduglig eller kompatibel med din produktionsmiljö och standarder. AWS lämnar inga utfästelser, garantier eller garanterar att någon information i denna vägledning kommer att resultera i ett visst resultat eller resultat.


Om författarna

Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Hemant Singh är en tillämpad forskare med erfarenhet av Amazon SageMaker JumpStart. Han tog sina masters från Courant Institute of Mathematical Sciences och B.Tech från IIT Delhi. Han har erfarenhet av att arbeta med en mängd olika maskininlärningsproblem inom området naturlig språkbehandling, datorseende och tidsserieanalys.

Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Rachna Chadha är en Principal Solution Architect AI/ML i Strategic Accounts på AWS. Rachna är en optimist som tror att etisk och ansvarsfull användning av AI kan förbättra samhället i framtiden och ge ekonomiskt och socialt välstånd. På fritiden gillar Rachna att umgås med sin familj, vandra och lyssna på musik.

Whisper-modeller för automatisk taligenkänning är nu tillgängliga i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dr Ashish Khetan är en Senior Applied Scientist med Amazon SageMaker inbyggda algoritmer och hjälper till att utveckla maskininlärningsalgoritmer. Han tog sin doktorsexamen från University of Illinois Urbana-Champaign. Han är en aktiv forskare inom maskininlärning och statistisk slutledning och har publicerat många artiklar i NeurIPS, ICML, ICLR, JMLR, ACL och EMNLP-konferenser.

Tidsstämpel:

Mer från AWS maskininlärning