Amazon SageMaker Automatic Model Tuning understøtter nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Amazon SageMaker Automatic Model Tuning understøtter nu SageMaker Training Instance Fallbacks

I dag Amazon SageMaker annoncerede støtte fra SageMaker træningsinstanser til fallbacks Amazon SageMaker Automatic Model Tuning (AMT) som giver brugerne mulighed for at angive alternative computerressourcekonfigurationer.

SageMaker automatisk modeljustering finder den bedste version af en model ved at køre mange træningsjob på dit datasæt ved hjælp af intervaller af hyperparametre, som du angiver for din algoritme. Derefter vælger den de hyperparameterværdier, der resulterer i en model, der yder bedst, målt med a metrisk som du vælger.

Tidligere havde brugere kun mulighed for at angive en enkelt instanskonfiguration. Dette kan føre til problemer, når den angivne instanstype ikke er tilgængelig på grund af høj udnyttelse. Tidligere ville dine træningsjob mislykkes med en InsufficientCapacityError (ICE). AMT brugte smarte genforsøg for at undgå disse fejl i mange tilfælde, men den forblev magtesløs i lyset af vedvarende lav kapacitet.

Denne nye funktion betyder, at du kan angive en liste over instanskonfigurationer i den foretrukne rækkefølge, således at dit AMT-job automatisk vil falde tilbage til den næste instans på listen i tilfælde af lav kapacitet.

I de følgende afsnit gennemgår vi disse trin på højt niveau for at overvinde en ICE:

  1. Definer HyperParameter Tuning Job Configuration
  2. Definer træningsjobparametrene
  3. Opret Hyperparameter Tuning Job
  4. Beskriv træningsjob

Definer HyperParameter Tuning Job Configuration

HyperParameterTuningJobConfig objektet beskriver tuning-jobbet, herunder søgestrategien, den objektive metrik, der bruges til at evaluere træningsjob, intervallerne for de parametre, der skal søges, og ressourcegrænserne for tuning-jobbet. Dette aspekt blev ikke ændret med dagens funktionsudgivelse. Ikke desto mindre vil vi gennemgå det for at give et komplet eksempel.

ResourceLimits objekt angiver det maksimale antal træningsjob og parallelle træningsjob for dette tuningjob. I dette eksempel laver vi en tilfældig søgning strategi og specificering af maksimalt 10 jobs (MaxNumberOfTrainingJobs) og 5 samtidige job (MaxParallelTrainingJobs) på et tidspunkt.

ParameterRanges objekt angiver intervallerne af hyperparametre, som denne tuning job søger. Vi angiver navnet samt minimums- og maksimumværdien af ​​hyperparameteren, der skal søges. I dette eksempel definerer vi minimums- og maksimumværdierne for parameterområderne 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 træningsjobparametrene

I træningsjobdefinitionen definerer vi det input, der er nødvendigt for at køre et træningsjob ved hjælp af den algoritme, som vi angiver. Når træningen er fuldført, gemmer SageMaker de resulterende modelartefakter til en Amazon Simple Storage Service (Amazon S3) placering, som du angiver.

Tidligere har vi specificeret instanstype, antal og volumenstørrelse under ResourceConfig parameter. Når forekomsten under denne parameter ikke var tilgængelig, blev der kastet en fejl med utilstrækkelig kapacitet (ICE).

For at undgå dette har vi nu HyperParameterTuningResourceConfig parameter under TrainingJobDefinition, hvor vi angiver en liste over forekomster at falde tilbage på. Formatet på disse forekomster er det samme som i ResourceConfig. Jobbet vil krydse listen fra top til bund for at finde en tilgængelig instanskonfiguration. Hvis en instans ikke er tilgængelig, så vælges den næste instans på listen i stedet for en Insufficient Capacity Error (ICE) og derved overvinde 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"
            },
          }

Kør et Hyperparameter Tuning Job

I dette trin opretter og kører vi et hyperparameterjusteringsjob med hyperparameterjusteringsressourcekonfigurationen defineret ovenfor.

Vi initialiserer en SageMaker-klient og opretter jobbet ved at specificere tuning-konfigurationen, træningsjobdefinitionen og et jobnavn.

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

At køre et AMT-job med støtte fra SageMaker-undervisningsinstanser giver brugeren mulighed for selv at overvinde utilstrækkelig kapacitet og derved reducere chancen for et jobfejl.

Beskriv træningsjob

Den følgende funktion viser alle instanstyper, der er brugt under eksperimentet, og kan bruges til at verificere, om en SageMaker-træningsinstans automatisk er faldet tilbage til den næste instans på listen under ressourceallokering.

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")  

Outputtet af funktionen ovenfor viser alle de forekomster, som AMT-jobbet bruger til at køre eksperimentet.

Konklusion

I dette indlæg demonstrerede vi, hvordan du nu kan definere en pulje af forekomster, som dit AMT-eksperiment kan falde tilbage på i tilfælde af InsufficientCapacityError. Vi så, hvordan man definerer en konfiguration af en hyperparameterjusteringsjob, samt specificerer det maksimale antal træningsjob og det maksimale parallelle job. Endelig så vi, hvordan man kan overvinde InsufficientCapacityError ved at bruge HyperParameterTuningResourceConfig parameter, som kan angives under uddannelsesjobdefinitionen.

For at lære mere om AMT, besøg Amazon SageMaker Automatisk Model Tuning.


Om forfatterne

Amazon SageMaker Automatic Model Tuning understøtter nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Doug Mbaya er en Senior Partner Solution arkitekt med fokus på data og analyse. Doug arbejder tæt sammen med AWS-partnere og hjælper dem med at integrere data- og analyseløsninger i skyen.

Amazon SageMaker Automatic Model Tuning understøtter nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Kruthi Jayasimha Rao er Partner Solutions Architect i Scale-PSA-teamet. Kruthi udfører tekniske valideringer for partnere, der gør det muligt for dem at komme videre i partnerstien.

Amazon SageMaker Automatic Model Tuning understøtter nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Bernard Jollans er softwareudviklingsingeniør for Amazon SageMaker Automatic Model Tuning.

Tidsstempel:

Mere fra AWS maskinindlæring