Leren overdragen voor TensorFlow-tekstclassificatiemodellen in Amazon SageMaker

Amazon Sage Maker biedt een suite van ingebouwde algoritmen, voorgetrainde modellen en vooraf gebouwde oplossingssjablonen om datawetenschappers en machine learning (ML)-beoefenaars te helpen snel aan de slag te gaan met het trainen en implementeren van ML-modellen. Je kunt deze algoritmen en modellen gebruiken voor zowel begeleid als niet-gesuperviseerd leren. Ze kunnen verschillende soorten invoergegevens verwerken, waaronder tabellen, afbeeldingen en tekst.

Dit bericht is het derde in een serie over de nieuwe ingebouwde algoritmen in SageMaker. In de eerste bericht, hebben we laten zien hoe SageMaker een ingebouwd algoritme biedt voor beeldclassificatie. In de tweede bericht, hebben we laten zien hoe SageMaker een ingebouwd algoritme biedt voor objectdetectie. Vandaag kondigen we aan dat SageMaker een nieuw ingebouwd algoritme biedt voor tekstclassificatie met behulp van TensorFlow. Dit begeleide leeralgoritme ondersteunt transfer learning voor veel vooraf getrainde modellen die beschikbaar zijn in TensorFlow-hub. Het neemt een stuk tekst als invoer en geeft de waarschijnlijkheid voor elk van de klasselabels weer. U kunt deze vooraf getrainde modellen verfijnen met behulp van transfer learning, zelfs als er geen groot tekstcorpus beschikbaar is. Het is beschikbaar via de SageMaker ingebouwde algoritmen, evenals via de SageMaker JumpStart-gebruikersinterface in Amazon SageMaker Studio. Voor meer informatie, zie: Tekstclassificatie en het voorbeeldnotitieboekje Inleiding tot JumpStart โ€“ Tekstclassificatie.

Tekstclassificatie met TensorFlow in SageMaker biedt transfer learning op veel vooraf getrainde modellen die beschikbaar zijn in de TensorFlow Hub. Op basis van het aantal klassenlabels in de trainingsgegevens wordt een classificatielaag toegevoegd aan het vooraf getrainde TensorFlow-hubmodel. De classificatielaag bestaat uit een dropout-laag en een dichte laag, volledig verbonden laag, met 2-norm regularizer, die wordt geรฏnitialiseerd met willekeurige gewichten. De modeltraining heeft hyperparameters voor de uitvalsnelheid van de uitvallaag en L2-regularisatiefactor voor de dichte laag. Vervolgens kan ofwel het hele netwerk, inclusief het voorgetrainde model, ofwel alleen de bovenste classificatielaag worden afgestemd op de nieuwe trainingsgegevens. In deze transfer learning-modus kan zelfs met een kleinere dataset worden getraind.

Het nieuwe TensorFlow-algoritme voor tekstclassificatie gebruiken

In dit gedeelte wordt beschreven hoe u het TensorFlow-algoritme voor tekstclassificatie gebruikt met de SageMaker Python-SDK. Voor informatie over het gebruik ervan vanuit de Studio UI, zie SageMaker JumpStart.

Het algoritme ondersteunt transfer learning voor de vooraf getrainde modellen die worden vermeld in Tensorflow-modellen. Elk model wordt geรฏdentificeerd door een unieke model_id. De volgende code laat zien hoe u het BERT-basismodel kunt verfijnen dat wordt geรฏdentificeerd door: model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 op een aangepaste trainingsdataset. voor elk model_id, om een โ€‹โ€‹SageMaker-trainingstaak te starten via de Taxateur klasse van de SageMaker Python SDK, moet u de Docker-afbeeldings-URI, de trainingsscript-URI en de vooraf getrainde model-URI ophalen via de hulpprogrammafuncties in SageMaker. De URI van het trainingsscript bevat alle benodigde code voor gegevensverwerking, het laden van het vooraf getrainde model, modeltraining en het opslaan van het getrainde model voor gevolgtrekking. De vooraf getrainde model-URI bevat de vooraf getrainde modelarchitectuurdefinitie en de modelparameters. De vooraf getrainde model-URI is specifiek voor het specifieke model. De vooraf getrainde model-tarballs zijn vooraf gedownload van TensorFlow en opgeslagen met de juiste modelhandtekening in Amazon eenvoudige opslagservice (Amazon S3) buckets, zodat de trainingstaak in netwerkisolatie wordt uitgevoerd. Zie de volgende code:

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"

Met deze modelspecifieke trainingsartefacten kunt u een object van de Taxateur 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,)

Vervolgens moet u voor het overdragen van leren op uw aangepaste dataset mogelijk de standaardwaarden van de trainingshyperparameters wijzigen, die worden vermeld in Hyperparameters. U kunt een Python-woordenboek van deze hyperparameters met hun standaardwaarden ophalen door aan te roepen hyperparameters.retrieve_default, werk ze indien nodig bij en geef ze vervolgens door aan de klasse Estimator. Merk op dat de standaardwaarden van sommige hyperparameters voor verschillende modellen verschillend zijn. Voor grote modellen is de standaard batchgrootte kleiner en de train_only_top_layer hyperparameter is ingesteld op True. De hyperparameter Train_only_top_layer bepaalt welke modelparameters veranderen tijdens het finetuningproces. Als train_only_top_layer is True, dan veranderen parameters van de classificatielagen en blijven de rest van de parameters constant tijdens het fine-tuningproces. Aan de andere kant, als train_only_top_layer is False, dan worden alle parameters van het model verfijnd. Zie de volgende code:

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"

Wij bieden de SST2 als een standaard dataset voor het verfijnen van de modellen. De dataset bevat positieve en negatieve filmrecensies. Het is gedownload van TensorFlow voor Apache 2.0-licentie. De volgende code biedt de standaard trainingsgegevensset die wordt gehost in S3-buckets.

# 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}"

Ten slotte, om de SageMaker-trainingstaak te starten voor het verfijnen van het model, roept u .fit aan op het object van de Estimator-klasse, terwijl u de Amazon S3-locatie van de trainingsgegevensset passeert:

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

Voor meer informatie over het gebruik van het nieuwe SageMaker TensorFlow-tekstclassificatiealgoritme voor overdracht van leren op een aangepaste dataset, implementeert u het verfijnde model, voert u inferentie uit op het geรฏmplementeerde model en implementeert u het vooraf getrainde model zoals het is zonder eerst te finetunen Zie het volgende voorbeeldnotitieblok voor een aangepaste gegevensset: Inleiding tot JumpStart โ€“ Tekstclassificatie.

Invoer-/uitvoerinterface voor het TensorFlow-algoritme voor tekstclassificatie

U kunt elk van de vooraf getrainde modellen verfijnen die worden vermeld in TensorFlow-modellen naar een gegeven dataset die bestaat uit tekstzinnen met een willekeurig aantal klassen. Het vooraf getrainde model koppelt een classificatielaag aan het Text Embedding-model en initialiseert de laagparameters naar willekeurige waarden. De uitvoerdimensie van de classificatielaag wordt bepaald op basis van het aantal klassen dat is gedetecteerd in de invoergegevens. Het doel is om classificatiefouten op de invoergegevens te minimaliseren. Het model dat door fine-tuning wordt geretourneerd, kan verder worden ingezet voor gevolgtrekking.

De volgende instructies beschrijven hoe de trainingsgegevens moeten worden opgemaakt voor invoer in het model:

  • Input โ€“ Een map met een data.csv-bestand. Elke rij van de eerste kolom moet klasselabels met gehele getallen hebben tussen 0 en het aantal klassen. Elke rij van de tweede kolom moet de bijbehorende tekstgegevens bevatten.
  • Output โ€“ Een verfijnd model dat kan worden ingezet voor inferentie of verder kan worden getraind met behulp van incrementele training. Een bestand dat klasse-indexen aan klasselabels toewijst, wordt samen met de modellen opgeslagen.

Het volgende is een voorbeeld van een invoer-CSV-bestand. Merk op dat het bestand geen kop mag hebben. Het bestand moet worden gehost in een S3-bucket met een pad dat lijkt op het volgende: s3://bucket_name/input_directory/. Merk op dat de trailing / Is benodigd.

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

Inferentie met het TensorFlow-algoritme voor tekstclassificatie

De gegenereerde modellen kunnen worden gehost voor inferentie en ondersteunende tekst als de application/x-text inhoudstype. De uitvoer bevat de waarschijnlijkheidswaarden, klasselabels voor alle klassen en het voorspelde label dat overeenkomt met de klassenindex met de hoogste waarschijnlijkheid gecodeerd in de JSON-indeling. Het model verwerkt een enkele string per aanvraag en voert slechts รฉรฉn regel uit. Het volgende is een voorbeeld van een antwoord in JSON-indeling:

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

If accept is ingesteld op application/json, dan geeft het model alleen waarschijnlijkheden weer. Voor meer details over training en inferentie, zie het voorbeeldnotitieboekje Inleiding tot Inleiding tot JumpStart โ€“ Tekstclassificatie.

Gebruik de ingebouwde algoritmen van SageMaker via de JumpStart-gebruikersinterface

U kunt ook SageMaker TensorFlow-tekstclassificatie en een van de andere ingebouwde algoritmen gebruiken met een paar klikken via de JumpStart-gebruikersinterface. JumpStart is een SageMaker-functie waarmee u via een grafische interface ingebouwde algoritmen en vooraf getrainde modellen uit verschillende ML-frameworks en modelhubs kunt trainen en implementeren. Bovendien kunt u hiermee volwaardige ML-oplossingen implementeren die ML-modellen en verschillende andere AWS-services aan elkaar rijgen om een โ€‹โ€‹gerichte use case op te lossen.

Hieronder volgen twee video's die laten zien hoe u hetzelfde fine-tuning- en implementatieproces kunt repliceren dat we zojuist hebben doorlopen met een paar klikken via de JumpStart-gebruikersinterface.

Verfijn het voorgetrainde model

Hier is het proces om hetzelfde vooraf getrainde tekstclassificatiemodel te verfijnen.

Het verfijnde model implementeren

Nadat de modeltraining is voltooid, kunt u het model met รฉรฉn klik direct implementeren op een permanent, realtime eindpunt.

Conclusie

In dit bericht hebben we de lancering aangekondigd van het ingebouwde SageMaker TensorFlow-algoritme voor tekstclassificatie. We hebben voorbeeldcode gegeven voor het overbrengen van leren op een aangepaste dataset met behulp van een vooraf getraind model van de TensorFlow-hub met behulp van dit algoritme.

Kijk voor meer informatie op de documentatie en het voorbeeldnotitieboekje Inleiding tot JumpStart โ€“ Tekstclassificatie.


Over de auteurs

Breng het leren voor TensorFlow-tekstclassificatiemodellen over in Amazon SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Vivek Madan is een Applied Scientist met de Amazon SageMaker JumpStart-team. Hij promoveerde aan de Universiteit van Illinois in Urbana-Champaign en was een postdoctoraal onderzoeker bij Georgia Tech. Hij is een actief onderzoeker op het gebied van machine learning en algoritmeontwerp en heeft papers gepubliceerd op EMNLP-, ICLR-, COLT-, FOCS- en SODA-conferenties.

Breng het leren voor TensorFlow-tekstclassificatiemodellen over in Amazon SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Joao Moura is een AI/ML Specialist Solutions Architect bij Amazon Web Services. Hij is vooral gericht op NLP-use-cases en helpt klanten bij het optimaliseren van training en implementatie van deep learning-modellen. Hij is ook een actief voorstander van low-code ML-oplossingen en ML-gespecialiseerde hardware.

Breng het leren voor TensorFlow-tekstclassificatiemodellen over in Amazon SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Ashish Khetan is een Senior Applied Scientist met Ingebouwde algoritmen van Amazon SageMaker en helpt bij het ontwikkelen van algoritmen voor machine learning. Hij promoveerde aan de University of Illinois Urbana Champaign. Hij is een actief onderzoeker op het gebied van machine learning en statistische inferentie en heeft veel artikelen gepubliceerd op NeurIPS-, ICML-, ICLR-, JMLR-, ACL- en EMNLP-conferenties.

Tijdstempel:

Meer van AWS-machine learning