Amazon SageMaker Automatic Model Tuning stöder nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Amazon SageMaker Automatic Model Tuning stöder nu SageMaker Training Instance Fallbacks

I dag Amazon SageMaker meddelade stödet för SageMaker träningsinstanser för fallbacks Amazon SageMaker Automatic Model Tuning (AMT) som tillåter användare att specificera alternativa beräkningsresurskonfigurationer.

SageMaker automatisk modellinställning hittar den bästa versionen av en modell genom att köra många träningsjobb på din datauppsättning med hjälp av intervall hyperparametrar som du anger för din algoritm. Sedan väljer den hyperparametervärdena som resulterar i en modell som presterar bäst, mätt med a metriska som du väljer.

Tidigare hade användarna bara möjlighet att ange en enstaka instanskonfiguration. Detta kan leda till problem när den angivna instanstypen inte är tillgänglig på grund av högt utnyttjande. Tidigare skulle dina träningsjobb misslyckas med ett InsufficientCapacityError (ICE). AMT använde smarta omförsök för att undvika dessa misslyckanden i många fall, men den förblev maktlös inför ihållande låg kapacitet.

Den här nya funktionen innebär att du kan ange en lista med instanskonfigurationer i prioritetsordning, så att ditt AMT-jobb automatiskt faller tillbaka till nästa instans i listan vid låg kapacitet.

I följande avsnitt går vi igenom dessa steg på hög nivå för att övervinna en ICE:

  1. Definiera HyperParameter Tuning Job Configuration
  2. Definiera träningsjobbets parametrar
  3. Skapa hyperparameterjusteringsjobbet
  4. Beskriv träningsjobb

Definiera HyperParameter Tuning Job Configuration

Smakämnen HyperParameterTuningJobConfig objektet beskriver trimningsjobbet, inklusive sökstrategin, det objektiva mått som används för att utvärdera utbildningsjobb, intervallen för parametrarna som ska sökas och resursgränserna för trimningsjobbet. Denna aspekt ändrades inte med dagens funktionsutgåva. Ändå kommer vi att gå igenom det för att ge ett komplett exempel.

Smakämnen ResourceLimits objekt anger det maximala antalet träningsjobb och parallella träningsjobb för detta trimjobb. I det här exemplet gör vi en slumpmässig sökning strategi och ange maximalt 10 jobb (MaxNumberOfTrainingJobs) och 5 samtidiga jobb (MaxParallelTrainingJobs) vid en tid.

Smakämnen ParameterRanges objekt anger intervallen av hyperparametrar som den här inställningsjobben söker. Vi anger namnet, samt det lägsta och högsta värdet för hyperparametern som ska sökas. I det här exemplet definierar vi minimi- och maxvärdena för parameterområdena Continuous och Integer och namnet på hyperparametern ("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"
                }
              ]
            }
          }

Definiera träningsjobbets parametrar

I definitionen av utbildningsjobb definierar vi den input som behövs för att köra ett träningsjobb med hjälp av den algoritm som vi anger. När utbildningen är klar sparar SageMaker de resulterande modellartefakterna till en Amazon Simple Storage Service (Amazon S3) plats som du anger.

Tidigare angav vi instanstyp, antal och volymstorlek under ResourceConfig parameter. När instansen under den här parametern inte var tillgänglig, kastades ett fel med otillräcklig kapacitet (ICE).

För att undvika detta har vi nu HyperParameterTuningResourceConfig parameter under TrainingJobDefinition, där vi anger en lista över instanser att falla tillbaka på. Formatet för dessa instanser är detsamma som i ResourceConfig. Jobbet kommer att gå igenom listan från topp till botten för att hitta en tillgänglig instanskonfiguration. Om en instans inte är tillgänglig, väljs istället för ett fel med otillräcklig kapacitet (ICE), nästa instans i listan, och övervinner därmed 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 ett Hyperparameter Tuning Job

I det här steget skapar och kör vi ett hyperparameterjusteringsjobb med resurskonfigurationen för hyperparameterjustering definierad ovan.

Vi initierar en SageMaker-klient och skapar jobbet genom att ange inställningskonfigurationen, utbildningsjobbdefinitionen och ett jobbnamn.

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

Att driva ett AMT-jobb med stöd av SageMaker-utbildningsinstanser ger användaren möjlighet att övervinna otillräcklig kapacitet på egen hand, och därigenom minska risken för ett jobbmisslyckande.

Beskriv träningsjobb

Följande funktion listar alla instanstyper som används under experimentet och kan användas för att verifiera om en SageMaker-utbildningsinstans automatiskt har fallit tillbaka till nästa instans i listan under resurstilldelning.

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

Utdata från funktionen ovan visar alla instanser som AMT-jobbet använder för att köra experimentet.

Slutsats

I det här inlägget demonstrerade vi hur du nu kan definiera en pool av instanser som ditt AMT-experiment kan falla tillbaka på i fallet med InsufficientCapacityError. Vi såg hur man definierar en konfiguration av hyperparameterinställningsjobb, samt specificerar det maximala antalet utbildningsjobb och maximala parallella jobb. Äntligen såg vi hur man kan övervinna InsufficientCapacityError genom att använda HyperParameterTuningResourceConfig parameter, som kan anges under utbildningsjobbdefinitionen.

För att lära dig mer om AMT, besök Amazon SageMaker Automatisk modellinställning.


Om författarna

Amazon SageMaker Automatic Model Tuning stöder nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Doug Mbaya är en Senior Partner Solution arkitekt med fokus på data och analys. Doug arbetar nära med AWS-partner och hjälper dem att integrera data- och analyslösningar i molnet.

Amazon SageMaker Automatic Model Tuning stöder nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Kruthi Jayasimha Rao är en Partner Solutions Architect i Scale-PSA-teamet. Kruthi genomför tekniska valideringar för Partners så att de kan gå vidare i Partner Path.

Amazon SageMaker Automatic Model Tuning stöder nu SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Bernard Jollans är en mjukvaruutvecklingsingenjör för Amazon SageMaker Automatic Model Tuning.

Tidsstämpel:

Mer från AWS maskininlärning