Overfør læring til TensorFlow-tekstklassificeringsmodeller i Amazon SageMaker

Amazon SageMaker giver en suite af indbyggede algoritmer, fortrænede modellerog forudbyggede løsningsskabeloner at hjælpe dataforskere og maskinlæringsudøvere (ML) med at komme i gang med at træne og implementere ML-modeller hurtigt. Du kan bruge disse algoritmer og modeller til både superviseret og uovervåget læring. De kan behandle forskellige typer inputdata, herunder tabel, billede og tekst.

Dette indlæg er det tredje i en serie om de nye indbyggede algoritmer i SageMaker. I den første indlæg, viste vi, hvordan SageMaker leverer en indbygget algoritme til billedklassificering. I den andet indlæg, viste vi, hvordan SageMaker leverer en indbygget algoritme til objektdetektering. I dag annoncerer vi, at SageMaker leverer en ny indbygget algoritme til tekstklassificering ved hjælp af TensorFlow. Denne overvågede læringsalgoritme understøtter overførselslæring for mange fortrænede modeller, der er tilgængelige i TensorFlow hub. Det tager et stykke tekst som input og udlæser sandsynligheden for hver af klasseetiketterne. Du kan finjustere disse fortrænede modeller ved hjælp af transfer learning, selv når et stort korpus af tekst ikke er tilgængeligt. Det er tilgængeligt gennem SageMaker indbyggede algoritmer, samt gennem SageMaker JumpStart UI in Amazon SageMaker Studio. For mere information, se Tekstklassificering og eksemplet på notesbogen Introduktion til JumpStart – Tekstklassificering.

Tekstklassificering med TensorFlow i SageMaker giver overførselslæring på mange fortrænede modeller, der er tilgængelige i TensorFlow Hub. I henhold til antallet af klassemærker i træningsdataene er der knyttet et klassifikationslag til den fortrænede TensorFlow-hubmodel. Klassifikationslaget består af et udfaldslag og et tæt lag, fuldt forbundet lag, med 2-norm regularizer, som initialiseres med tilfældige vægte. Modeltræningen har hyper-parametre for dropout rate af dropout lag, og L2 regulariseringsfaktor for det tætte lag. Derefter kan enten hele netværket, inklusive den præ-trænede model, eller kun det øverste klassifikationslag finjusteres på de nye træningsdata. I denne overførselsindlæringstilstand kan træning opnås selv med et mindre datasæt.

Sådan bruger du den nye TensorFlow-tekstklassificeringsalgoritme

Dette afsnit beskriver, hvordan man bruger TensorFlow-tekstklassificeringsalgoritmen med SageMaker Python SDK. For information om, hvordan du bruger det fra Studio UI, se SageMaker JumpStart.

Algoritmen understøtter overførselslæring for de fortrænede modeller, der er anført i Tensorflow modeller. Hver model er identificeret med en unik model_id. Følgende kode viser, hvordan man finjusterer BERT-basismodel identificeret af model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 på et tilpasset træningsdatasæt. For hver model_id, for at lancere et SageMaker-uddannelsesjob gennem Estimator klasse af SageMaker Python SDK, skal du hente Docker-image-URI, træningsscript-URI og forudtrænede model-URI gennem hjælpefunktionerne i SageMaker. Træningsscriptets URI indeholder al den nødvendige kode til databehandling, indlæsning af den præ-trænede model, modeltræning og lagring af den trænede model til slutning. Den præ-trænede model-URI indeholder den præ-trænede modelarkitekturdefinition og modelparametrene. Den fortrænede model-URI er specifik for den pågældende model. De fortrænede model tarballs er blevet forhåndsdownloadet fra TensorFlow og gemt med den passende modelsignatur i Amazon Simple Storage Service (Amazon S3) spande, så træningsjobbet kører i netværksisolation. 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 modelspecifikke træningsartefakter kan du konstruere et objekt af 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,)

Dernæst, for at overføre læring på dit brugerdefinerede datasæt, skal du muligvis ændre standardværdierne for træningshyperparametrene, som er angivet i Hyperparametre. Du kan hente en Python-ordbog over disse hyperparametre med deres standardværdier ved at kalde hyperparameters.retrieve_default, opdater dem efter behov, og send dem derefter til Estimator-klassen. Bemærk, at standardværdierne for nogle af hyperparametrene er forskellige for forskellige modeller. For store modeller er standard batchstørrelsen mindre og train_only_top_layer hyperparameter er sat til True. Hyperparameteren Train_only_top_layer definerer, hvilke modelparametre, der ændres under finjusteringsprocessen. Hvis train_only_top_layer is True, så ændres parametre for klassifikationslagene, og resten af ​​parametrene forbliver konstante under finjusteringsprocessen. På den anden side, hvis train_only_top_layer is False, så er alle modellens parametre finjusteret. 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 leverer SST2 som standarddatasæt til finjustering af modellerne. Datasættet indeholder positive og negative filmanmeldelser. Det er blevet downloadet fra TensorFlow under Apache 2.0-licens. Følgende kode giver standardtræningsdatasættet hostet 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 sidst, for at starte SageMaker træningsopgaven til finjustering af modellen, skal du kalde .fit på objektet i Estimator-klassen, mens du passerer Amazon S3-placeringen af ​​træningsdatasættet:

# 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 mere information om, hvordan du bruger den nye SageMaker TensorFlow-tekstklassificeringsalgoritme til overførsel af læring på et brugerdefineret datasæt, implementer den finjusterede model, kør inferens på den implementerede model og implementer den præ-trænede model, som den er, uden først at finjustere på et brugerdefineret datasæt, se følgende eksempel på notesbog: Introduktion til JumpStart – Tekstklassificering.

Input/output-interface til TensorFlow-tekstklassificeringsalgoritmen

Du kan finjustere hver af de fortrænede modeller, der er anført i TensorFlow-modeller til ethvert givet datasæt, der består af tekstsætninger med et vilkårligt antal klasser. Den præ-trænede model knytter et klassifikationslag til tekstindlejringsmodellen og initialiserer lagparametrene til tilfældige værdier. Klassifikationslagets outputdimension bestemmes baseret på antallet af klasser, der er detekteret i inputdataene. Målet er at minimere klassifikationsfejl på inputdata. Den model, der returneres ved finjustering, kan videreudvikles til slutninger.

Følgende instruktioner beskriver, hvordan træningsdataene skal formateres til input til modellen:

  • Input – En mappe, der indeholder en data.csv-fil. Hver række i den første kolonne skal have heltalsklasseetiketter mellem 0 og antallet af klasser. Hver række i den anden kolonne skal have de tilsvarende tekstdata.
  • Output – En finjusteret model, der kan implementeres til inferens eller videreuddannes ved hjælp af inkrementel træning. En fil, der kortlægger klasseindekser til klasseetiketter, gemmes sammen med modellerne.

Det følgende er et eksempel på en input CSV-fil. Bemærk, at filen ikke bør have nogen header. Filen skal være hostet i en S3-bøtte med en sti, der ligner følgende: s3://bucket_name/input_directory/. Bemærk, at den efterfølgende / er nødvendigt.

|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-tekstklassificeringsalgoritmen

De genererede modeller kan hostes for inferens og støttetekst som application/x-text indholdstype. Outputtet indeholder sandsynlighedsværdierne, klasseetiketter for alle klasserne og den forudsagte etiket, der svarer til klasseindekset med den højeste sandsynlighed kodet i JSON-formatet. Modellen behandler en enkelt streng pr. anmodning og udsender kun én linje. Følgende er et eksempel på et svar i JSON-format:

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 sat til application/json, så udsender modellen kun sandsynligheder. For flere detaljer om træning og slutninger, se eksempelnotebooken Introduktion til Introduktion til JumpStart – Tekstklassificering.

Brug SageMaker indbyggede algoritmer gennem JumpStart UI

Du kan også bruge SageMaker TensorFlow tekstklassificering og enhver af de andre indbyggede algoritmer med et par klik via JumpStart UI. JumpStart er en SageMaker-funktion, der lader dig træne og implementere indbyggede algoritmer og fortrænede modeller fra forskellige ML-frameworks og modelhubs gennem en grafisk grænseflade. Ydermere giver det dig mulighed for at implementere fuldt udbyggede ML-løsninger, der samler ML-modeller og forskellige andre AWS-tjenester for at løse en målrettet use case.

Følgende er to videoer, der viser, hvordan du kan replikere den samme finjusterings- og implementeringsproces, som vi lige har gennemgået med et par klik via JumpStart UI.

Finjuster den fortrænede model

Her er processen til at finjustere den samme præ-trænede tekstklassificeringsmodel.

Implementer den finjusterede model

Når modeltræningen er færdig, kan du implementere modellen direkte til et vedvarende, real-time slutpunkt med et enkelt klik.

Konklusion

I dette indlæg annoncerede vi lanceringen af ​​den indbyggede SageMaker TensorFlow-tekstklassificeringsalgoritme. Vi leverede eksempelkode til, hvordan man udfører overførselslæring på et brugerdefineret datasæt ved hjælp af en præ-trænet model fra TensorFlow-hub ved hjælp af denne algoritme.

For mere information, se dokumentation og eksemplet på notesbogen Introduktion til JumpStart – Tekstklassificering.


Om forfatterne

Transfer learning for TensorFlow text classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Vivek Madan er en anvendt videnskabsmand med Amazon SageMaker JumpStart team. Han fik sin ph.d. fra University of Illinois i Urbana-Champaign og var postdoktor ved Georgia Tech. Han er en aktiv forsker i maskinlæring og algoritmedesign og har publiceret artikler i EMNLP, ICLR, COLT, FOCS og SODA konferencer.

Transfer learning for TensorFlow text classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.João Moura er AI/ML Specialist Solutions Architect hos Amazon Web Services. Han er for det meste fokuseret på NLP use-cases og hjælper kunder med at optimere træning og implementering af dyb læringsmodeller. Han er også en aktiv fortaler for lavkode ML-løsninger og ML-specialiseret hardware.

Transfer learning for TensorFlow text classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan er Senior Applied Scientist med Amazon SageMaker indbyggede algoritmer og hjælper med at udvikle maskinlæringsalgoritmer. Han fik sin ph.d. fra University of Illinois Urbana Champaign. Han er en aktiv forsker i maskinlæring og statistisk inferens og har publiceret mange artikler i NeurIPS, ICML, ICLR, JMLR, ACL og EMNLP konferencer.

Tidsstempel:

Mere fra AWS maskinindlæring