Incrementele training met Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Incrementele training met Amazon SageMaker JumpStart

In december 2020, AWS heeft de algemene beschikbaarheid van Amazon SageMaker JumpStart aangekondigd, een vermogen van Amazon Sage Maker waarmee je snel en eenvoudig aan de slag gaat met machine learning (ML). SageMaker JumpStart biedt fine-tuning en implementatie met รฉรฉn klik van een breed scala aan vooraf getrainde modellen voor populaire ML-taken, evenals een selectie van end-to-end-oplossingen die veelvoorkomende zakelijke problemen oplossen. Deze functies verwijderen het zware werk van elke stap van het ML-proces, waardoor het gemakkelijker wordt om hoogwaardige modellen te ontwikkelen en de implementatietijd te verkorten.

Alle JumpStart-inhoud was voorheen alleen beschikbaar via Amazon SageMaker Studio, wat zorgt voor een gebruiksvriendelijke grafische interface om te communiceren met de functie. Sinds kort hebben we ook kondigde de lancering aan van gebruiksvriendelijke JumpStart-API's als een uitbreiding van de SageMaker Python SDK, waarmee u een uitgebreide selectie van door JumpStart ondersteunde, vooraf getrainde modellen programmatisch kunt implementeren en verfijnen op uw eigen datasets. Deze lancering ontgrendelt het gebruik van JumpStart-mogelijkheden in uw codeworkflows, MLOps-pipelines en overal waar u via SDK met SageMaker communiceert.

In dit bericht zijn we verheugd om aan te kondigen dat alle trainbare JumpStart-modellen nu incrementele training ondersteunen. Met incrementele training kunt u een model trainen dat u al hebt verfijnd met behulp van een uitgebreide dataset die een onderliggend patroon bevat dat niet is meegenomen in eerdere fine-tuning-runs, wat resulteerde in slechte modelprestaties. Incrementele training bespaart zowel tijd als middelen omdat u het model niet helemaal opnieuw hoeft te trainen. Als je direct in de JumpStart API-code wilt springen die we in dit bericht uitleggen, kun je verwijzen naar de voorbeeld notebook.

JumpStart-overzicht

JumpStart is een veelzijdig product met verschillende mogelijkheden om u snel op weg te helpen met ML op SageMaker. Op het moment van schrijven kunt u met JumpStart het volgende doen:

  • Vooraf getrainde modellen implementeren voor veelvoorkomende ML-taken โ€“ JumpStart stelt u in staat om veelvoorkomende ML-taken aan te pakken zonder ontwikkelingsinspanningen door eenvoudige implementatie te bieden van modellen die vooraf zijn getraind op grote, openbaar beschikbare datasets. De ML-onderzoeksgemeenschap heeft veel moeite gedaan om de meeste recent ontwikkelde modellen openbaar beschikbaar te maken voor gebruik; JumpStart host een verzameling van meer dan 300 modellen, verspreid over de 15 meest populaire ML-taken, zoals objectdetectie, tekstclassificatie en tekstgeneratie, waardoor het voor beginners gemakkelijk is om ze te gebruiken. Deze modellen zijn afkomstig van populaire modelhubs, zoals TensorFlow, PyTorch, Hugging Face en MXNet Hub.
  • Vooraf getrainde modellen afstemmen - Met JumpStart kunt u vooraf getrainde modellen verfijnen zonder dat u uw eigen trainingsalgoritme hoeft te schrijven. In ML wordt het vermogen om de opgedane kennis in het ene domein naar het andere over te dragen genoemd overdracht leren. U kunt transfer learning gebruiken om nauwkeurige modellen te produceren op uw kleinere datasets, met veel lagere trainingskosten dan de kosten voor het trainen van het originele model. JumpStart bevat ook populaire trainingsalgoritmen op basis van LightGBM, CatBoost, XGBoost en Scikit-learn waarmee u helemaal opnieuw kunt trainen voor tabelregressie en classificatie.
  • Gebruik kant-en-klare oplossingen โ€“ JumpStart biedt een set van 17 oplossingen voor veelvoorkomende ML-gebruiksscenario's, zoals vraagvoorspelling en industriรซle en financiรซle toepassingen, die u met slechts een paar klikken kunt implementeren. Oplossingen zijn end-to-end ML-applicaties die verschillende AWS-services aaneenrijgen om een โ€‹โ€‹bepaalde zakelijke use-case op te lossen. Ze gebruiken AWS CloudFormatie sjablonen en referentiearchitecturen voor snelle implementatie, wat betekent dat ze volledig aanpasbaar zijn.
  • Gebruik notebookvoorbeelden voor SageMaker-algoritmen โ€“ SageMaker biedt een reeks ingebouwde algoritmen om datawetenschappers en ML-beoefenaars te helpen snel aan de slag te gaan met het trainen en implementeren van ML-modellen. JumpStart biedt voorbeeldnotitieblokken die u kunt gebruiken om deze algoritmen snel toe te passen.
  • Bekijk trainingsvideo's en blogs โ€“ JumpStart biedt ook tal van blogberichten en video's die u leren hoe u verschillende functionaliteiten binnen SageMaker kunt gebruiken.

JumpStart accepteert aangepaste VPC-instellingen en AWS Sleutelbeheerservice (AWS KMS) encryptiesleutels, zodat u de beschikbare modellen en oplossingen veilig kunt gebruiken binnen uw bedrijfsomgeving. U kunt uw beveiligingsinstellingen doorgeven aan JumpStart in Studio of via de SageMaker Python SDK.

Afbeeldingsclassificatie

Afbeeldingsclassificatie verwijst naar het classificeren van een afbeelding in een van de klasselabels in de trainingsgegevensset. U kunt het model afstemmen op elke gegeven dataset die bestaat uit afbeeldingen die tot een willekeurig aantal klassen behoren. Het model dat beschikbaar is voor fijnafstemming op JumpStart, koppelt een classificatielaag aan het corresponderende feature-extractormodel en initialiseert de laagparameters naar willekeurige waarden. De outputdimensie van de classificatielaag wordt bepaald op basis van het aantal klassen in de inputdata. De verfijningsstap stemt de parameters van de classificatielaag af, terwijl de parameters van het feature-extractormodel bevroren blijven, en retourneert het verfijnde model. Het doel is om de voorspellingsfout op de invoergegevens te minimaliseren.

Voor onze dataset is de invoer een directory met net zoveel subdirectories als het aantal klassen. Elke submap moet afbeeldingen bevatten die tot die klasse behoren in .jpg-indeling. De invoerdirectory moet eruitzien als de volgende hiรซrarchie als de trainingsgegevens afbeeldingen uit twee klassen bevatten: roses en dandelion:

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

De namen van de mappen, klassen en .jpg-bestandsnamen kunnen van alles zijn.

Wij bieden de tf_flowers1 dataset als een standaard dataset voor het verfijnen van het model. Deze dataset bevat afbeeldingen van vijf soorten bloemen. De dataset is gedownload van TensorFlow.

Overzicht van walkthrough

De volgende secties bieden een stapsgewijze demo om afbeeldingsclassificatie uit te voeren met JumpStart, zowel via de Studio UI als de JumpStart API's.

We doorlopen de volgende stappen:

  1. Toegang tot JumpStart via de Studio UI:
    1. Verfijn het voorgetrainde model.
    2. Implementeer het verfijnde model.
    3. Train het verfijnde model stapsgewijs en implementeer het opnieuw.
  2. Gebruik JumpStart programmatisch met de SageMaker Python SDK:
    1. Verfijn het voorgetrainde model.
    2. Implementeer het verfijnde model.
    3. Train het verfijnde model stapsgewijs en implementeer het opnieuw.

Toegang tot JumpStart via de Studio UI

In deze sectie laten we zien hoe u JumpStart-modellen kunt verfijnen en implementeren via de Studio UI. Daarnaast laten we zien hoe u een model dat u eerder hebt verfijnd, stapsgewijs kunt trainen.

Verfijn het voorgetrainde model

De volgende video laat zien hoe u een vooraf getraind beeldclassificatiemodel op JumpStart kunt vinden en hoe u dit kunt verfijnen. De modelpagina bevat waardevolle informatie over het model, hoe het te gebruiken, het verwachte gegevensformaat en enkele details voor fijnafstelling.

Voor demonstratiedoeleinden verfijnen we het model met behulp van de standaard verstrekte dataset, de tf_flowers dataset, samengesteld uit verschillende soorten bloemen. Het finetunen van uw eigen dataset omvat het nemen van de juiste opmaak van data (zoals uitgelegd op de modelpagina), het uploaden naar Amazon eenvoudige opslagservice (Amazon S3), en met vermelding van de locatie in de gegevensbronconfiguratie.

We gebruiken dezelfde hyperparameterwaarden die standaard zijn ingesteld (aantal tijdperken, leersnelheid en batchgrootte). We gebruiken ook een door GPU ondersteunde ml.p3.2xlarge-instantie als onze SageMaker-trainingsinstantie.

U kunt uw trainingstaak rechtstreeks op de Studio-console volgen en ontvangt een melding wanneer deze is voltooid.

Het verfijnde model implementeren

Nadat de training is voltooid, kunt u het verfijnde model implementeren vanaf dezelfde pagina met de details van de trainingstaak. Om ons model te implementeren, kiezen we een ander instantietype, ml.p2.xlarge. Het biedt nog steeds de GPU-versnelling die nodig is voor lage inferentielatentie, maar tegen een lagere prijs. Nadat u de SageMaker-hostinginstantie hebt geconfigureerd, kiest u: Implementeren. Het kan 5-10 minuten duren voordat uw permanente eindpunt actief is.

Dan is uw eindpunt operationeel en klaar om te reageren op gevolgtrekkingsverzoeken!

Om uw tijd tot gevolgtrekking te versnellen, biedt JumpStart een voorbeeldnotitieblok dat u laat zien hoe u inferentie uitvoert op uw pas geรฏmplementeerde eindpunt. Kiezen Notitieblok openen voor Eindpunt gebruiken van Atelier.

Het verfijnde model stapsgewijs trainen en implementeren

Wanneer de fijnafstemming is voltooid, kunt u het model verder trainen om de prestaties te verbeteren. Deze stap lijkt erg op het initiรซle fine-tuning-proces, behalve dat we het reeds verfijnde model als uitgangspunt gebruiken. U mag nieuwe gegevens gebruiken, maar het formaat van de gegevensset moet hetzelfde zijn (dezelfde reeks klassen).

Gebruik JumpStart programmatisch met de SageMaker SDK

In de voorgaande paragrafen hebben we laten zien hoe u de JumpStart-gebruikersinterface kunt gebruiken om een โ€‹โ€‹model met een paar klikken interactief af te stemmen, te implementeren en stapsgewijs te trainen. U kunt ook de modellen van JumpStart gebruiken en eenvoudig programmatisch afstemmen met behulp van API's die zijn geรฏntegreerd in de SageMaker SDK. We bespreken nu een snel voorbeeld van hoe u het voorgaande proces kunt repliceren. Alle stappen in deze demo zijn beschikbaar in de bijbehorende notitieboekjes Inleiding tot JumpStart โ€“ Beeldclassificatie.

Verfijn het voorgetrainde model

Om een โ€‹โ€‹geselecteerd model te verfijnen, hebben we de URI van dat model nodig, evenals die van het trainingsscript en de containerafbeelding die voor de training wordt gebruikt. Gelukkig zijn deze drie ingangen uitsluitend afhankelijk van de modelnaam, versie (voor een lijst met beschikbare modellen, zie Tabel met beschikbare JumpStart-modellen), en het type instantie waarop u wilt trainen. Dit wordt gedemonstreerd in het volgende codefragment:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # 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 to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

We halen de model_id overeenkomend met hetzelfde model dat we eerder gebruikten. De ic in de identifier komt overeen met beeldclassificatie.

U kunt dit JumpStart-model nu verfijnen op uw eigen aangepaste dataset met behulp van de SageMaker SDK. We gebruiken hetzelfde tf_flowers dataset die openbaar wordt gehost op Amazon S3, handig gericht op sentimentanalyse. Uw dataset moet gestructureerd zijn voor fine-tuning, zoals uitgelegd in de vorige sectie. Zie de volgende voorbeeldcode:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
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,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

We verkrijgen dezelfde standaard hyperparameters voor ons geselecteerde model als degene die we in de vorige sectie zagen, met behulp van sagemaker.hyperparameters.retrieve_default(). Vervolgens instantiรซren we een SageMaker-schatter en roepen we de .fit-methode aan om ons model te verfijnen en het de Amazon S3-URI door te geven voor onze trainingsgegevens. Zoals je kunt zien, is de entry_point het opgegeven script heeft een naam transfer_learning.py (hetzelfde voor andere taken en modellen), en het invoergegevenskanaal doorgegeven aan .fit moet worden genoemd training.

Het verfijnde model implementeren

Wanneer de training is voltooid, kunt u uw verfijnde model implementeren. Om dit te doen, hebben we alleen de URI van het inferentiescript nodig (de code die bepaalt hoe het model wordt gebruikt voor inferentie zodra het is geรฏmplementeerd) en de URI van de inferentiecontainer, die een geschikte modelserver bevat om het door ons gekozen model te hosten. Zie de volgende code:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

Na een paar minuten is ons model geรฏmplementeerd en kunnen we er in realtime voorspellingen van krijgen!

Vervolgens roepen we het eindpunt aan om te voorspellen welk type bloemen er in de voorbeeldafbeelding bestaat. Wij gebruiken de query_endpoint en parse_response helperfuncties, die zijn gedefinieerd in de bijgevoegde notitieboekje.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Het verfijnde model stapsgewijs trainen en opnieuw implementeren

We kunnen de prestaties van een verfijnd model verhogen door het verder te trainen op nieuwe afbeeldingen. U mag hiervoor een willekeurig aantal nieuwe of oude afbeeldingen gebruiken, maar het datasetformaat moet hetzelfde blijven (dezelfde set klassen). De stap van incrementele training is vergelijkbaar met het fine-tuning-proces, met een belangrijk verschil: bij de initiรซle fine-tuning beginnen we met een vooraf getraind model, terwijl we bij incrementele training beginnen met een bestaand fine-tuned model. Zie de volgende code:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Wanneer de training is voltooid, kunnen we dezelfde stappen gebruiken als beschreven in de voorgaande sectie om het model te implementeren.

Conclusie

JumpStart is een mogelijkheid in SageMaker waarmee u snel aan de slag kunt met ML. JumpStart gebruikt voorgetrainde open-source modellen om veelvoorkomende ML-problemen op te lossen, zoals beeldclassificatie, objectdetectie, tekstclassificatie, classificatie van zinnenparen en het beantwoorden van vragen.

In dit bericht hebben we u laten zien hoe u een vooraf getraind beeldclassificatiemodel kunt verfijnen en implementeren. We hebben ook laten zien hoe je een verfijnd model voor beeldclassificatie stapsgewijs kunt trainen. Met JumpStart kunt u dit proces eenvoudig uitvoeren zonder dat u hoeft te coderen. Probeer de oplossing zelf uit en laat ons weten hoe het gaat in de opmerkingen. Voor meer informatie over JumpStart, bekijk de AWS re:Invent 2020-video Ga binnen enkele minuten aan de slag met ML met Amazon SageMaker JumpStart.

Referenties

  1. Het TensorFlow-team, 2019

Over de auteurs

Incrementele training met Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Vivek Madan is een Applied Scientist bij het Amazon SageMaker JumpStart-team. Hij promoveerde. van 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.

Incrementele training met Amazon SageMaker JumpStart 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.

Incrementele training met Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Ashish Khetan is een Senior Applied Scientist met Amazon SageMaker JumpStart en Ingebouwde algoritmen van Amazon SageMaker en helpt bij het ontwikkelen van algoritmen voor machine learning. 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