Amazon SageMaker Automatic Model Tuning acceptă acum SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Amazon SageMaker Automatic Model Tuning acceptă acum SageMaker Training Instance Fallbacks

Astăzi Amazon SageMaker a anunțat suportul pentru instanța de instruire SageMaker Amazon SageMaker Automatic Model Tuning (AMT) care permit utilizatorilor să specifice configurații alternative ale resurselor de calcul.

Reglarea automată a modelului SageMaker găsește cea mai bună versiune a unui model rulând multe lucrări de instruire pe setul dvs. de date folosind game de hiperparametri pe care îi specificați pentru algoritmul dvs. Apoi, alege valorile hiperparametrului care rezultă într-un model care are cele mai bune performanțe, măsurate de un metric pe care o alegi tu.

Anterior, utilizatorii aveau doar opțiunea de a specifica o singură configurație de instanță. Acest lucru poate duce la probleme atunci când tipul de instanță specificat nu este disponibil din cauza utilizării ridicate. În trecut, joburile dvs. de formare ar fi eșuat cu o InsufficientCapacityError (ICE). AMT a folosit reîncercări inteligente pentru a evita aceste defecțiuni în multe cazuri, dar a rămas neputincioasă în fața capacității scăzute susținute.

Această nouă caracteristică înseamnă că puteți specifica o listă de configurații de instanță în ordinea preferințelor, astfel încât jobul dvs. AMT va reveni automat la următoarea instanță din listă în cazul unei capacități reduse.

În următoarele secțiuni, parcurgem acești pași de nivel înalt pentru a depăși un ICE:

  1. Definiți configurația jobului de ajustare a hiperparametrului
  2. Definiți parametrii jobului de formare
  3. Creați lucrarea de ajustare a hiperparametrului
  4. Descrie meseria de formare

Definiți configurația jobului de ajustare a hiperparametrului

HyperParameterTuningJobConfig obiectul descrie jobul de reglare, inclusiv strategia de căutare, metrica obiectivă utilizată pentru a evalua joburile de instruire, intervalele parametrilor de căutat și limitele de resurse pentru jobul de reglare. Acest aspect nu a fost schimbat cu lansarea de astăzi a caracteristicii. Cu toate acestea, vom trece peste el pentru a da un exemplu complet.

ResourceLimits obiect specifică numărul maxim de joburi de instruire și joburi de formare paralele pentru acest job de reglare. În acest exemplu, facem o căutare aleatorie strategie si specificarea a maximum 10 locuri de munca (MaxNumberOfTrainingJobs) și 5 locuri de muncă simultane (MaxParallelTrainingJobs) la un moment dat.

ParameterRanges obiect specifică intervalele de hiperparametri pe care le caută acest job de reglare. Specificăm numele, precum și valoarea minimă și maximă a hiperparametrului de căutat. În acest exemplu, definim valorile minime și maxime pentru intervalele de parametri Continuous și Integer și numele hiperparametrului („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"
                }
              ]
            }
          }

Definiți parametrii jobului de formare

În definirea jobului de antrenament, definim intrarea necesară pentru a rula un job de antrenament utilizând algoritmul pe care îl specificăm. După finalizarea antrenamentului, SageMaker salvează artefactele modelului rezultate într-un Serviciul Amazon de stocare simplă (Amazon S3) locația pe care o specificați.

Anterior, am specificat tipul instanței, numărul și dimensiunea volumului sub ResourceConfig parametru. Când instanța din acest parametru nu era disponibilă, a fost generată o eroare de capacitate insuficientă (ICE).

Pentru a evita acest lucru, acum avem HyperParameterTuningResourceConfig parametru sub TrainingJobDefinition, unde specificăm o listă de instanțe la care să apelăm. Formatul acestor instanțe este același ca și în ResourceConfig. Lucrarea va parcurge lista de sus în jos pentru a găsi o configurație de instanță disponibilă. Dacă o instanță nu este disponibilă, atunci în locul unei erori de capacitate insuficientă (ICE), se alege următoarea instanță din listă, depășind astfel 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"
            },
          }

Rulați o lucrare de ajustare a hiperparametrului

În acest pas, creăm și rulăm un job de reglare hiperparametru cu configurația resursei de reglare hiperparametru definită mai sus.

Inițializam un client SageMaker și creăm jobul specificând configurația de reglare, definiția jobului de antrenament și numele jobului.

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

Rularea unui job AMT cu sprijinul aplicațiilor alternative ale instanțelor de instruire SageMaker îi dă utilizatorului puterea de a depăși singur capacitatea insuficientă, reducând astfel șansa de eșec al jobului.

Descrieți locurile de muncă de formare

Următoarea funcție listează toate tipurile de instanțe utilizate în timpul experimentului și poate fi utilizată pentru a verifica dacă o instanță de antrenament SageMaker a revenit automat la următoarea instanță din listă în timpul alocării resurselor.

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

Ieșirea funcției de mai sus afișează toate instanțele pe care jobul AMT le folosește pentru a rula experimentul.

Concluzie

În această postare, am demonstrat cum puteți defini acum un grup de instanțe la care experimentul dvs. AMT se poate retrage în cazul InsufficientCapacityError. Am văzut cum să definim o configurație a jobului de reglare hiperparametrică, precum și cum să specificăm numărul maxim de joburi de antrenament și joburi paralele maxime. În cele din urmă, am văzut cum să depășim InsufficientCapacityError folosind HyperParameterTuningResourceConfig parametru, care poate fi specificat în definiția postului de formare.

Pentru a afla mai multe despre AMT, vizitați Reglarea automată a modelelor Amazon SageMaker.


Despre autori

Amazon SageMaker Automatic Model Tuning acceptă acum SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Doug Mbaya este un arhitect Senior Partner Solution cu accent pe date și analiză. Doug lucrează îndeaproape cu partenerii AWS, ajutându-i să integreze soluția de date și analiză în cloud.

Amazon SageMaker Automatic Model Tuning acceptă acum SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Kruthi Jayasimha Rao este arhitect de soluții partener în echipa Scale-PSA. Kruthi efectuează validări tehnice pentru parteneri, permițându-le să progreseze în Calea partenerilor.

Amazon SageMaker Automatic Model Tuning acceptă acum SageMaker Training Instance Fallbacks PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Bernard Jollans este inginer de dezvoltare software pentru Amazon SageMaker Automatic Model Tuning.

Timestamp-ul:

Mai mult de la Învățare automată AWS