Amazon SageMaker Automatic Model Tuning støtter nå SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Amazon SageMaker Automatic Model Tuning støtter nå SageMaker Training Instance Fallbacks

I dag Amazon SageMaker kunngjorde støtte fra SageMaker treningsforekomst fallbacks for Amazon SageMaker Automatic Model Tuning (AMT) som lar brukere spesifisere alternative dataressurskonfigurasjoner.

SageMaker automatisk modellinnstilling finner den beste versjonen av en modell ved å kjøre mange treningsjobber på datasettet ditt ved å bruke serier av hyperparametre som du spesifiserer for algoritmen din. Deretter velger den hyperparameterverdiene som resulterer i en modell som yter best, målt med a metrisk som du velger.

Tidligere hadde brukere kun muligheten til å spesifisere en enkelt forekomstkonfigurasjon. Dette kan føre til problemer når den angitte forekomsttypen ikke er tilgjengelig på grunn av høy utnyttelse. Tidligere ville treningsjobbene dine mislykkes med en InsufficientCapacityError (ICE). AMT brukte smarte forsøk for å unngå disse feilene i mange tilfeller, men den forble maktesløs i møte med vedvarende lav kapasitet.

Denne nye funksjonen betyr at du kan spesifisere en liste over forekomstkonfigurasjoner i prioritert rekkefølge, slik at AMT-jobben automatisk faller tilbake til neste forekomst i listen ved lav kapasitet.

I de følgende delene går vi gjennom disse trinnene på høyt nivå for å overvinne en ICE:

  1. Definer konfigurasjon av HyperParameter Tuning Job Configuration
  2. Definer treningsjobbparametrene
  3. Opprett Hyperparameter Tuning Job
  4. Beskriv treningsjobben

Definer konfigurasjon av HyperParameter Tuning Job Configuration

De HyperParameterTuningJobConfig objektet beskriver tuning-jobben, inkludert søkestrategien, den objektive beregningen som brukes til å evaluere treningsjobber, rekkevidden av parameterne som skal søkes, og ressursgrensene for tuning-jobben. Dette aspektet ble ikke endret med dagens funksjonsutgivelse. Ikke desto mindre vil vi gå over det for å gi et fullstendig eksempel.

De ResourceLimits objektet angir maksimalt antall treningsjobber og parallelle treningsjobber for denne tuningjobben. I dette eksemplet gjør vi en tilfeldig søk strategi og spesifisere maksimalt 10 jobber (MaxNumberOfTrainingJobs) og 5 samtidige jobber (MaxParallelTrainingJobs) om gangen.

De ParameterRanges objektet spesifiserer områdene av hyperparametere som denne justeringen søker etter. Vi spesifiserer navnet, samt minimums- og maksimumsverdien til hyperparameteren som skal søkes. I dette eksemplet definerer vi minimums- og maksimumsverdiene for parameterområdene Continuous og Integer og navnet på hyperparameteren ("eta", "max_depth").

AmtTuningJobConfig={
            "Strategy": "Random",
            "ResourceLimits": {
              "MaxNumberOfTrainingJobs": 10,
              "MaxParallelTrainingJobs": 5
            },
            "HyperParameterTuningJobObjective": {
              "MetricName": "validation:rmse",
              "Type": "Minimize"
            },
            "ParameterRanges": {
              "CategoricalParameterRanges": [],
              "ContinuousParameterRanges": [
                {
                    "MaxValue": "1",
                    "MinValue": "0",
                    "Name": "eta"
                }
              ],
              "IntegerParameterRanges": [
                {
                  "MaxValue": "6",
                  "MinValue": "2",
                  "Name": "max_depth"
                }
              ]
            }
          }

Definer treningsjobbparametrene

I treningsjobbdefinisjonen definerer vi inndataene som trengs for å kjøre en treningsjobb ved å bruke algoritmen som vi spesifiserer. Etter at treningen er fullført, lagrer SageMaker de resulterende modellartefaktene til en Amazon Simple Storage Service (Amazon S3) plassering som du angir.

Tidligere spesifiserte vi forekomsttype, antall og volumstørrelse under ResourceConfig parameter. Når forekomsten under denne parameteren ikke var tilgjengelig, ble en feil med utilstrekkelig kapasitet (ICE) kastet.

For å unngå dette har vi nå HyperParameterTuningResourceConfig parameter under TrainingJobDefinition, der vi spesifiserer en liste over forekomster å falle tilbake på. Formatet på disse forekomstene er det samme som i ResourceConfig. Jobben vil gå gjennom listen fra topp til bunn for å finne en tilgjengelig forekomstkonfigurasjon. Hvis en forekomst er utilgjengelig, velges den neste forekomsten i listen i stedet for en feil med utilstrekkelig kapasitet (ICE), og dermed overvinnes ICE.

TrainingJobDefinition={
            "HyperParameterTuningResourceConfig": {
      		"InstanceConfigs": [
            		{
                		"InstanceType": "ml.m4.xlarge",
                		"InstanceCount": 1,
                		"VolumeSizeInGB": 5
            		},
            		{
                		"InstanceType": "ml.m5.4xlarge",
                		"InstanceCount": 1,
                		"VolumeSizeInGB": 5
            		}
        		 ]
    		  },
            "AlgorithmSpecification": {
              "TrainingImage": "433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest",
              "TrainingInputMode": "File"
            },
            "InputDataConfig": [
              {
                "ChannelName": "train",
                "CompressionType": "None",
                "ContentType": "json",
                "DataSource": {
                  "S3DataSource": {
                    "S3DataDistributionType": "FullyReplicated",
                    "S3DataType": "S3Prefix",
                    "S3Uri": "s3://<bucket>/test/"
                  }
                },
                "RecordWrapperType": "None"
              }
            ],
            "OutputDataConfig": {
              "S3OutputPath": "s3://<bucket>/output/"
            },
            "RoleArn": "arn:aws:iam::340308762637:role/service-role/AmazonSageMaker-ExecutionRole-20201117T142856",
            "StoppingCondition": {
              "MaxRuntimeInSeconds": 259200
            },
            "StaticHyperParameters": {
              "training_script_loc": "q2bn-sagemaker-test_6"
            },
          }

Kjør en Hyperparameter Tuning Job

I dette trinnet oppretter og kjører vi en hyperparameterjusteringsjobb med ressurskonfigurasjonen for hyperparameterinnstilling definert ovenfor.

Vi initialiserer en SageMaker-klient og oppretter jobben ved å spesifisere tuning-konfigurasjonen, treningsjobbdefinisjonen og et jobbnavn.

import boto3
sm = boto3.client('sagemaker')     
                    
sm.create_hyper_parameter_tuning_job(
    HyperParameterTuningJobName="my-job-name",
    HyperParameterTuningJobConfig=AmtTuningJobConfig,
    TrainingJobDefinition=TrainingJobDefinition) 

Å drive en AMT-jobb med støtte fra SageMaker-treningsinstanser, gir brukeren mulighet til å overvinne utilstrekkelig kapasitet på egen hånd, og reduserer dermed sjansen for en jobbfeil.

Beskriv treningsjobber

Følgende funksjon viser alle forekomsttyper brukt under eksperimentet og kan brukes til å verifisere om en SageMaker-treningsforekomst automatisk har falt tilbake til neste forekomst i listen under ressursallokering.

def list_instances(name):
    job_list = []
    instances = []
    def _get_training_jobs(name, next=None):
        if next:
            list = sm.list_training_jobs_for_hyper_parameter_tuning_job(
            HyperParameterTuningJobName=name, NextToken=next)
        else:
            list = sm.list_training_jobs_for_hyper_parameter_tuning_job(
            HyperParameterTuningJobName=name)
        for jobs in list['TrainingJobSummaries']:
            job_list.append(jobs['TrainingJobName'])
        next = list.get('NextToken', None)
        if next:
            _get_training_jobs(name, next=next)
            pass
        else:
            pass
    _get_training_jobs(name)


    for job_name in job_list:
        ec2 = sm.describe_training_job(
        TrainingJobName=job_name
        )
        instances.append(ec2['ResourceConfig'])
    return instances

list_instances("my-job-name")  

Utdataene fra funksjonen ovenfor viser alle forekomstene som AMT-jobben bruker for å kjøre eksperimentet.

konklusjonen

I dette innlegget demonstrerte vi hvordan du nå kan definere en pool av forekomster som AMT-eksperimentet ditt kan falle tilbake på i tilfelle av InsufficientCapacityError. Vi så hvordan man definerer en konfigurasjon for tuning av hyperparameter, samt spesifiserer maksimalt antall treningsjobber og maksimalt parallelljobber. Til slutt så vi hvordan vi kan overvinne InsufficientCapacityError ved å bruke HyperParameterTuningResourceConfig parameter, som kan spesifiseres under treningsjobbdefinisjonen.

For å lære mer om AMT, besøk Amazon SageMaker Automatisk modellinnstilling.


Om forfatterne

Amazon SageMaker Automatic Model Tuning støtter nå SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Doug Mbaya er en Senior Partner Solution arkitekt med fokus på data og analyse. Doug jobber tett med AWS-partnere, og hjelper dem med å integrere data- og analyseløsninger i skyen.

Amazon SageMaker Automatic Model Tuning støtter nå SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Kruthi Jayasimha Rao er en Partner Solutions Architect i Scale-PSA-teamet. Kruthi utfører tekniske valideringer for partnere, slik at de kan komme videre i partnerbanen.

Amazon SageMaker Automatic Model Tuning støtter nå SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Bernard Jollans er en programvareutviklingsingeniør for Amazon SageMaker Automatic Model Tuning.

Tidstempel:

Mer fra AWS maskinlæring