Leren overdragen voor TensorFlow-beeldclassificatiemodellen 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. U kunt deze algoritmen en modellen gebruiken voor zowel begeleid als niet-gesuperviseerd leren. Ze kunnen verschillende soorten invoergegevens verwerken, waaronder tabellen, afbeeldingen en tekst.

Vanaf vandaag biedt SageMaker een nieuw ingebouwd algoritme voor beeldclassificatie: Beeldclassificatie โ€“ TensorFlow. Het is een begeleid leeralgoritme dat transfer learning ondersteunt voor veel vooraf getrainde modellen die beschikbaar zijn in TensorFlow-hub. Het neemt een afbeelding als invoer- en uitvoerwaarschijnlijkheid voor elk van de klasselabels. U kunt deze vooraf getrainde modellen verfijnen met behulp van transfer learning, zelfs als er geen groot aantal trainingsafbeeldingen beschikbaar zijn. Het is beschikbaar via de SageMaker ingebouwde algoritmen evenals via de SageMaker JumpStart-gebruikersinterface binnen Amazon SageMaker Studio. Raadpleeg de bijbehorende documentatie voor meer informatie Beeldclassificatie โ€“ TensorFlow en het voorbeeldnotitieboekje Inleiding tot SageMaker TensorFlow โ€“ Beeldclassificatie.

Beeldclassificatie met TensorFlow in SageMaker biedt transfer learning op veel vooraf getrainde modellen die beschikbaar zijn in TensorFlow Hub. Op basis van het aantal klassenlabels in de trainingsgegevens wordt een classificatielaag aan het vooraf getrainde TensorFlow Hub-model gekoppeld. De classificatielaag bestaat uit een dropout-laag en een dichte laag, een 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 de L2-regularisatiefactor voor de dichte laag. Dan kan ofwel het hele netwerk, inclusief het voorgetrainde model, ofwel alleen de bovenste classificatielaag worden afgesteld op de nieuwe trainingsgegevens. In deze transfer learning-modus kun je zelfs met een kleinere dataset trainen.

Het nieuwe TensorFlow-algoritme voor beeldclassificatie gebruiken

In dit gedeelte wordt beschreven hoe u het TensorFlow-algoritme voor beeldclassificatie 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 Hub-modellen. Elk model wordt geรฏdentificeerd door een unieke model_id. De volgende code laat zien hoe u MobileNet V2 1.00 224 kunt verfijnen, geรฏdentificeerd door: model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 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-image-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. Houd er rekening mee dat de Docker-afbeeldings-URI en de trainingsscript-URI hetzelfde zijn voor alle TensorFlow-afbeeldingsclassificatiemodellen. De vooraf getrainde model-URI is specifiek voor het specifieke model. De vooraf getrainde model-tarballs zijn vooraf gedownload van TensorFlow Hub 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_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
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-ic-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_ic_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, parameters van de classificatielagen veranderen en de rest van de parameters blijven constant tijdens het fine-tuningproces. Aan de andere kant, als train_only_top_layer is False, 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"

De volgende code biedt een standaard trainingsgegevensset die wordt gehost in S3-buckets. Wij bieden de tf_flowers dataset als een standaard dataset voor het finetunen van de modellen. De dataset bevat afbeeldingen van vijf soorten bloemen. De dataset is gedownload van TensorFlow onder de Apache 2.0-licentie.

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

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

Tot slot, om de SageMaker-trainingstaak te starten voor het verfijnen van het model, bel .fit op het object van de Estimator-klasse, terwijl de S3-locatie van de trainingsgegevensset wordt gepasseerd:

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

Voor meer informatie over het gebruik van het nieuwe SageMaker TensorFlow-beeldclassificatiealgoritme 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 SageMaker TensorFlow โ€“ Beeldclassificatie.

Input/output-interface voor het TensorFlow-algoritme voor beeldclassificatie

U kunt elk van de vooraf getrainde modellen verfijnen die worden vermeld in TensorFlow Hub-modellen aan een gegeven dataset bestaande uit afbeeldingen die tot een willekeurig aantal klassen behoren. Het doel is om de voorspellingsfout op de invoergegevens te minimaliseren. Het model dat door fine-tuning wordt geretourneerd, kan verder worden ingezet voor gevolgtrekking. Hieronder volgen de instructies voor hoe de trainingsgegevens moeten worden opgemaakt voor invoer in het model:

  • Invoer โ€“ Een directory met net zoveel subdirectories als het aantal klassen. Elke submap moet afbeeldingen bevatten die tot die klasse behoren in .jpg-, .jpeg- of .png-indeling.
  • uitgang โ€“ Een verfijnd model dat kan worden ingezet voor inferentie of verder kan worden getraind met behulp van incrementele training. Een voor- en nabewerkingshandtekening wordt toegevoegd aan het verfijnde model, zodat het onbewerkte .jpg-afbeelding als invoer neemt en klassewaarschijnlijkheden retourneert. Een bestand dat klasse-indexen aan klasselabels toewijst, wordt samen met de modellen opgeslagen.

De invoermap moet er als volgt uitzien als de trainingsgegevens afbeeldingen uit twee klassen bevatten: roses en dandelion. Het S3-pad zou er als volgt uit moeten zien: s3://bucket_name/input_directory/. Let op de trailing / Is benodigd. De namen van de mappen en roses, dandelion, en de .jpg-bestandsnamen kunnen van alles zijn. Het labeltoewijzingsbestand dat samen met het getrainde model op de S3-bucket wordt opgeslagen, wijst de mapnamen rozen en paardenbloem toe aan de indexen in de lijst met klassenwaarschijnlijkheden die het model uitvoert. De toewijzing volgt alfabetische volgorde van de mapnamen. In het volgende voorbeeld komt index 0 in de modeluitvoerlijst overeen met: dandelion, en index 1 komt overeen met roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

Inferentie met het TensorFlow-algoritme voor beeldclassificatie

De gegenereerde modellen kunnen worden gehost voor inferentie en ondersteunen gecodeerde .jpg-, .jpeg- en .png-afbeeldingsformaten als de application/x-image inhoudstype. Het formaat van de invoerafbeelding wordt automatisch aangepast. De uitvoer bevat de waarschijnlijkheidswaarden, de klasselabels voor alle klassen en het voorspelde label dat overeenkomt met de klassenindex met de hoogste waarschijnlijkheid, gecodeerd in JSON-indeling. Het TensorFlow-beeldclassificatiemodel verwerkt รฉรฉn afbeelding per aanvraag en voert slechts รฉรฉn regel uit in de JSON. Het volgende is een voorbeeld van een reactie in JSON:

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 voorbeeldnotitieblok Inleiding tot SageMaker TensorFlow โ€“ Beeldclassificatie.

Gebruik de ingebouwde algoritmen van SageMaker via de JumpStart-gebruikersinterface

U kunt ook SageMaker TensorFlow-beeldclassificatie en een van de andere ingebouwde algoritmen gebruiken met een paar klikken via de JumpStart-gebruikersinterface. JumpStart is een SageMaker-functie waarmee u ingebouwde algoritmen en vooraf getrainde modellen uit verschillende ML-frameworks en modelhubs kunt trainen en implementeren via een grafische interface. Het stelt u ook in staat om volwaardige ML-oplossingen te implementeren die ML-modellen en verschillende andere AWS-services aan elkaar rijgen om een โ€‹โ€‹gerichte use case op te lossen. Uitchecken Voer tekstclassificatie uit met Amazon SageMaker JumpStart met behulp van TensorFlow Hub en Hugging Face-modellen om te ontdekken hoe u JumpStart kunt gebruiken om met een paar klikken een algoritme of voorgetraind model te trainen.

Conclusie

In dit bericht hebben we de lancering aangekondigd van het ingebouwde algoritme voor beeldclassificatie van SageMaker TensorFlow. We hebben voorbeeldcode gegeven over hoe u transfer learning kunt toepassen op een aangepaste dataset met behulp van een vooraf getraind model van TensorFlow Hub met behulp van dit algoritme. Kijk voor meer informatie op documentatie en voorbeeld notebook.


Over de auteurs

Breng het leren voor TensorFlow-beeldclassificatiemodellen 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.

Breng het leren voor TensorFlow-beeldclassificatiemodellen 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 University of Illinois 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-beeldclassificatiemodellen 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-gebruiksscenario's 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-beeldclassificatiemodellen over in Amazon SageMaker PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Raju Penmatcha is Senior AI/ML Specialist Solutions Architect bij AWS. Hij werkt samen met klanten uit het onderwijs, de overheid en non-profitorganisaties aan machine learning en kunstmatige intelligentie-gerelateerde projecten, en helpt hen bij het bouwen van oplossingen met behulp van AWS. Als hij geen klanten helpt, reist hij graag naar nieuwe plaatsen.

Tijdstempel:

Meer van AWS-machine learning