Overfør læring for TensorFlow-tekstklassifiseringsmodeller i Amazon SageMaker

Amazon SageMaker gir en suite av innebygde algoritmer, ferdig trente modellerog forhåndsbygde løsningsmaler for å hjelpe dataforskere og maskinlæringsutøvere (ML) med å komme raskt i gang med opplæring og distribusjon av ML-modeller. Du kan bruke disse algoritmene og modellene for både veiledet og uovervåket læring. De kan behandle ulike typer inndata, inkludert tabeller, bilder og tekst.

Dette innlegget er det tredje i en serie om de nye innebygde algoritmene i SageMaker. I første innlegg, viste vi hvordan SageMaker gir en innebygd algoritme for bildeklassifisering. I andre innlegg, viste vi hvordan SageMaker gir en innebygd algoritme for objektdeteksjon. I dag kunngjør vi at SageMaker tilbyr en ny innebygd algoritme for tekstklassifisering ved hjelp av TensorFlow. Denne overvåkede læringsalgoritmen støtter overføringslæring for mange forhåndstrente modeller tilgjengelig i TensorFlow-hub. Den tar et stykke tekst som input og sender ut sannsynligheten for hver av klasseetikettene. Du kan finjustere disse forhåndstrente modellene ved å bruke overføringslæring selv når et stort korpus med tekst ikke er tilgjengelig. Den er tilgjengelig gjennom SageMaker innebygde algoritmer, samt gjennom SageMaker JumpStart UI in Amazon SageMaker Studio. For mer informasjon, se Tekstklassifisering og eksempelnotisboken Introduksjon til JumpStart – Tekstklassifisering.

Tekstklassifisering med TensorFlow i SageMaker gir overføringslæring på mange ferdigtrente modeller tilgjengelig i TensorFlow Hub. I henhold til antall klasseetiketter i treningsdataene, er det knyttet et klassifiseringslag til den ferdigtrente TensorFlow-hubmodellen. Klassifiseringslaget består av et utfallslag og et tett lag, fullt sammenkoblet lag, med 2-norm regularizer, som initialiseres med tilfeldige vekter. Modelltreningen har hyperparametere for frafallsrate for frafallslag, og L2-regulariseringsfaktor for det tette laget. Deretter kan enten hele nettverket, inkludert den forhåndstrente modellen, eller bare det øverste klassifiseringslaget finjusteres på de nye treningsdataene. I denne overføringslæringsmodusen kan trening oppnås selv med et mindre datasett.

Slik bruker du den nye TensorFlow-tekstklassifiseringsalgoritmen

Denne delen beskriver hvordan du bruker TensorFlow-tekstklassifiseringsalgoritmen med SageMaker Python SDK. For informasjon om hvordan du bruker det fra Studio UI, se SageMaker JumpStart.

Algoritmen støtter overføringslæring for de forhåndstrente modellene som er oppført i Tensorflow-modeller. Hver modell er identifisert med en unik model_id. Følgende kode viser hvordan du finjusterer BERT-basismodellen identifisert av model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 på et tilpasset opplæringsdatasett. For hver model_id, for å lansere en SageMaker-treningsjobb gjennom Estimator klasse av SageMaker Python SDK, må du hente Docker-bilde-URI, treningsskript-URI og forhåndstrent modell-URI gjennom verktøyfunksjonene i SageMaker. Treningsskriptets URI inneholder all nødvendig kode for databehandling, lasting av den forhåndstrente modellen, modellopplæring og lagring av den trente modellen for slutning. Den forhåndstrente modellen URI inneholder den forhåndstrente modellarkitekturdefinisjonen og modellparametrene. Den forhåndstrente modellen URI er spesifikk for den aktuelle modellen. De forhåndstrente modell-tarballene er forhåndslastet ned fra TensorFlow og lagret med passende modellsignatur i Amazon enkel lagringstjeneste (Amazon S3) bøtter, slik at treningsjobben går i nettverksisolasjon. Se følgende kode:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Med disse modellspesifikke treningsartefaktene kan du konstruere et objekt av Estimator klasse:

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

Deretter, for å overføre læring på det tilpassede datasettet ditt, må du kanskje endre standardverdiene til treningshyperparametrene, som er oppført i Hyperparametere. Du kan hente en Python-ordbok med disse hyperparametrene med standardverdiene ved å ringe hyperparameters.retrieve_default, oppdater dem etter behov, og send dem deretter til Estimator-klassen. Merk at standardverdiene til noen av hyperparametrene er forskjellige for forskjellige modeller. For store modeller er standard batchstørrelse mindre og train_only_top_layer hyperparameter er satt til True. Hyperparameteren Train_only_top_layer definerer hvilke modellparametre som endres under finjusteringsprosessen. Hvis train_only_top_layer is True, så endres parametrene til klassifiseringslagene og resten av parametrene forblir konstante under finjusteringsprosessen. På den annen side, hvis train_only_top_layer is False, så finjusteres alle parameterne til modellen. Se følgende kode:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Vi tilbyr SST2 som standard datasett for finjustering av modellene. Datasettet inneholder positive og negative filmanmeldelser. Den er lastet ned fra tensorflow etter Apache 2.0-lisens. Følgende kode gir standard treningsdatasett som er vert i S3-bøtter.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Til slutt, for å starte SageMaker-treningsjobben for finjustering av modellen, ring .fit på objektet til Estimator-klassen, mens du passerer Amazon S3-plasseringen til treningsdatasettet:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

For mer informasjon om hvordan du bruker den nye SageMaker TensorFlow tekstklassifiseringsalgoritmen for overføring av læring på et tilpasset datasett, distribuer den finjusterte modellen, kjør inferens på den distribuerte modellen, og distribuer den forhåndstrente modellen som den er uten første finjustering på et tilpasset datasett, se følgende eksempelnotatbok: Introduksjon til JumpStart – Tekstklassifisering.

Input/output-grensesnitt for TensorFlow-tekstklassifiseringsalgoritmen

Du kan finjustere hver av de forhåndstrente modellene som er oppført i TensorFlow-modeller til et gitt datasett som består av tekstsetninger med et hvilket som helst antall klasser. Den forhåndstrente modellen knytter et klassifiseringslag til tekstinnbyggingsmodellen og initialiserer lagparametrene til tilfeldige verdier. Utgangsdimensjonen til klassifiseringslaget bestemmes basert på antall klasser oppdaget i inngangsdataene. Målet er å minimere klassifiseringsfeil på inndataene. Modellen som returneres ved finjustering kan distribueres videre for slutninger.

Følgende instruksjoner beskriver hvordan treningsdataene skal formateres for input til modellen:

  • Input – En katalog som inneholder en data.csv-fil. Hver rad i den første kolonnen skal ha heltallsklasseetiketter mellom 0 og antall klasser. Hver rad i den andre kolonnen skal ha de tilsvarende tekstdataene.
  • Output – En finjustert modell som kan distribueres for inferens eller videreutdannes ved hjelp av inkrementell trening. En fil som kartlegger klasseindekser til klasseetiketter, lagres sammen med modellene.

Følgende er et eksempel på en CSV-inndatafil. Merk at filen ikke skal ha noen overskrift. Filen skal være vert i en S3-bøtte med en bane som ligner på følgende: s3://bucket_name/input_directory/. Merk at etterfølgende / er nødvendig.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

Inferens med TensorFlow-tekstklassifiseringsalgoritmen

De genererte modellene kan være vert for inferens og støttetekst som application/x-text innholdstype. Utdataene inneholder sannsynlighetsverdier, klasseetiketter for alle klassene og den predikerte etiketten som tilsvarer klasseindeksen med høyest sannsynlighet kodet i JSON-formatet. Modellen behandler en enkelt streng per forespørsel og sender bare ut én linje. Følgende er et eksempel på et JSON-formatsvar:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept er satt til application/json, da gir modellen bare ut sannsynligheter. For mer informasjon om trening og slutninger, se eksempelnotatboken Introduksjon til Introduksjon til JumpStart – Tekstklassifisering.

Bruk SageMaker innebygde algoritmer gjennom JumpStart UI

Du kan også bruke SageMaker TensorFlow-tekstklassifisering og hvilken som helst av de andre innebygde algoritmene med noen få klikk via JumpStart-grensesnittet. JumpStart er en SageMaker-funksjon som lar deg trene og distribuere innebygde algoritmer og forhåndstrente modeller fra ulike ML-rammeverk og modellhuber gjennom et grafisk grensesnitt. Videre lar den deg distribuere fullverdige ML-løsninger som setter sammen ML-modeller og forskjellige andre AWS-tjenester for å løse en målrettet brukssituasjon.

Følgende er to videoer som viser hvordan du kan replikere den samme finjusterings- og distribusjonsprosessen som vi nettopp gikk gjennom med noen få klikk via JumpStart UI.

Finjuster den ferdigtrente modellen

Her er prosessen for å finjustere den samme ferdigtrente tekstklassifiseringsmodellen.

Distribuer den finjusterte modellen

Etter at modellopplæringen er fullført, kan du distribuere modellen direkte til et vedvarende endepunkt i sanntid med ett klikk.

konklusjonen

I dette innlegget kunngjorde vi lanseringen av SageMaker TensorFlow tekstklassifisering innebygde algoritme. Vi ga eksempelkode for hvordan du utfører overføringslæring på et tilpasset datasett ved å bruke en forhåndstrent modell fra TensorFlow-huben ved å bruke denne algoritmen.

For mer informasjon, sjekk ut dokumentasjon og eksempelnotisboken Introduksjon til JumpStart – Tekstklassifisering.


Om forfatterne

Overfør læring for TensorFlow-tekstklassifiseringsmodeller i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dr. Vivek Madan er en anvendt vitenskapsmann med Amazon SageMaker JumpStart-teamet. Han fikk sin doktorgrad fra University of Illinois i Urbana-Champaign og var postdoktor ved Georgia Tech. Han er en aktiv forsker innen maskinlæring og algoritmedesign og har publisert artikler i EMNLP, ICLR, COLT, FOCS og SODA-konferanser.

Overfør læring for TensorFlow-tekstklassifiseringsmodeller i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.João Moura er en AI/ML-spesialistløsningsarkitekt hos Amazon Web Services. Han er mest fokusert på NLP-brukstilfeller og å hjelpe kunder med å optimalisere opplæring og implementering av dyplæringsmodeller. Han er også en aktiv talsmann for lavkode ML-løsninger og ML-spesialisert maskinvare.

Overfør læring for TensorFlow-tekstklassifiseringsmodeller i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dr. Ashish Khetan er Senior Applied Scientist med Amazon SageMaker innebygde algoritmer og hjelper til med å utvikle maskinlæringsalgoritmer. Han fikk sin doktorgrad fra University of Illinois Urbana Champaign. Han er en aktiv forsker innen maskinlæring og statistisk inferens og har publisert mange artikler i NeurIPS, ICML, ICLR, JMLR, ACL og EMNLP-konferanser.

Tidstempel:

Mer fra AWS maskinlæring