L'ottimizzazione automatica dei modelli di Amazon SageMaker ora supporta i fallback delle istanze di formazione SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Amazon SageMaker Automatic Model Tuning ora supporta i fallback delle istanze di addestramento SageMaker

Oggi Amazon Sage Maker ha annunciato il supporto per i fallback delle istanze di formazione SageMaker Ottimizzazione automatica del modello (AMT) di Amazon SageMaker che consentono agli utenti di specificare configurazioni di risorse di calcolo alternative.

L'ottimizzazione automatica del modello SageMaker trova la versione migliore di un modello eseguendo molti processi di addestramento sul set di dati utilizzando il file gamme di iperparametri che specifichi per il tuo algoritmo. Quindi, sceglie i valori dell'iperparametro che si traducono in un modello con le prestazioni migliori, come misurato da a metrico che scegli tu.

In precedenza, gli utenti avevano solo la possibilità di specificare una configurazione a istanza singola. Ciò può causare problemi quando il tipo di istanza specificato non è disponibile a causa dell'utilizzo elevato. In passato, i tuoi lavori di formazione fallivano con un InsufficientCapacityError (ICE). AMT ha utilizzato tentativi intelligenti per evitare questi errori in molti casi, ma è rimasta impotente di fronte alla bassa capacità prolungata.

Questa nuova funzionalità significa che puoi specificare un elenco di configurazioni di istanze nell'ordine di preferenza, in modo tale che il tuo lavoro AMT esegua automaticamente il fallback all'istanza successiva nell'elenco in caso di capacità insufficiente.

Nelle sezioni seguenti, esamineremo questi passaggi di alto livello per il superamento di un GHIACCIO:

  1. Definire la configurazione del lavoro di ottimizzazione di HyperParameter
  2. Definire i parametri del lavoro di formazione
  3. Crea il lavoro di ottimizzazione degli iperparametri
  4. Descrivi il lavoro di formazione

Definire la configurazione del lavoro di ottimizzazione di HyperParameter

I HyperParameterTuningJobConfig object descrive il processo di ottimizzazione, inclusa la strategia di ricerca, la metrica obiettivo utilizzata per valutare i processi di addestramento, gli intervalli dei parametri da cercare e i limiti delle risorse per il processo di ottimizzazione. Questo aspetto non è stato modificato con il rilascio delle funzionalità di oggi. Tuttavia, lo esamineremo per fare un esempio completo.

I ResourceLimits oggetto specifica il numero massimo di lavori di addestramento e lavori di addestramento paralleli per questo lavoro di ottimizzazione. In questo esempio, stiamo facendo a ricerca casuale strategia e specificando un massimo di 10 lavori (MaxNumberOfTrainingJobs) e 5 lavori simultanei (MaxParallelTrainingJobs) Al tempo.

I ParameterRanges object specifica gli intervalli di iperparametri che questo processo di ottimizzazione cerca. Specifichiamo il nome, nonché il valore minimo e massimo dell'iperparametro da cercare. In questo esempio, definiamo i valori minimo e massimo per gli intervalli di parametri Continuo e Intero e il nome dell'iperparametro ("eta", "profondità_max").

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"
                }
              ]
            }
          }

Definire i parametri del lavoro di formazione

Nella definizione del lavoro di addestramento, definiamo l'input necessario per eseguire un lavoro di addestramento utilizzando l'algoritmo che specifichiamo. Al termine dell'addestramento, SageMaker salva gli artefatti del modello risultanti in un file Servizio di archiviazione semplice Amazon (Amazon S3) posizione che specifichi.

In precedenza, abbiamo specificato il tipo di istanza, il conteggio e la dimensione del volume in ResourceConfig parametro. Quando l'istanza in questo parametro non era disponibile, è stato generato un errore di capacità insufficiente (ICE).

Per evitare ciò, ora abbiamo il HyperParameterTuningResourceConfig parametro sotto il TrainingJobDefinition, dove specifichiamo un elenco di istanze su cui fare affidamento. Il formato di queste istanze è lo stesso di ResourceConfig. Il lavoro attraverserà l'elenco dall'alto verso il basso per trovare una configurazione dell'istanza disponibile. Se un'istanza non è disponibile, invece di un errore di capacità insufficiente (ICE), viene scelta l'istanza successiva nell'elenco, superando così l'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"
            },
          }

Eseguire un processo di ottimizzazione degli iperparametri

In questo passaggio, creiamo ed eseguiamo un processo di ottimizzazione degli iperparametri con la configurazione della risorsa di ottimizzazione degli iperparametri definita sopra.

Inizializziamo un client SageMaker e creiamo il lavoro specificando la configurazione di ottimizzazione, la definizione del lavoro di addestramento e un nome del lavoro.

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

L'esecuzione di un lavoro AMT con il supporto dei fallback delle istanze di formazione SageMaker consente all'utente di superare autonomamente la capacità insufficiente, riducendo così le possibilità di fallimento del lavoro.

Descrivi i lavori di formazione

La seguente funzione elenca tutti i tipi di istanza utilizzati durante l'esperimento e può essere utilizzata per verificare se un'istanza di addestramento SageMaker è passata automaticamente all'istanza successiva nell'elenco durante l'allocazione delle risorse.

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

L'output della funzione precedente mostra tutte le istanze utilizzate dal processo AMT per eseguire l'esperimento.

Conclusione

In questo post, abbiamo dimostrato come ora puoi definire un pool di istanze su cui il tuo esperimento AMT può ricadere nel caso di InsufficientCapacityError. Abbiamo visto come definire una configurazione del lavoro di ottimizzazione degli iperparametri, nonché specificare il numero massimo di lavori di addestramento e il numero massimo di lavori paralleli. Infine, abbiamo visto come superare il InsufficientCapacityError tramite la configurazione di ricerca HyperParameterTuningResourceConfig parametro, che può essere specificato nella definizione del lavoro di formazione.

Per saperne di più su AMT, visita Ottimizzazione automatica del modello di Amazon SageMaker.


Circa gli autori

L'ottimizzazione automatica dei modelli di Amazon SageMaker ora supporta i fallback delle istanze di formazione SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Doug Mbaya è un Senior Partner Solution architect con un focus su dati e analisi. Doug lavora a stretto contatto con i partner AWS, aiutandoli a integrare dati e soluzioni di analisi nel cloud.

L'ottimizzazione automatica dei modelli di Amazon SageMaker ora supporta i fallback delle istanze di formazione SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Kruthi Jayasimha Rao è un Partner Solutions Architect nel team Scale-PSA. Kruthi conduce le convalide tecniche per i Partner consentendo loro di progredire nel Percorso Partner.

L'ottimizzazione automatica dei modelli di Amazon SageMaker ora supporta i fallback delle istanze di formazione SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Bernard Jollans è un ingegnere di sviluppo software per l'ottimizzazione automatica dei modelli Amazon SageMaker.

Timestamp:

Di più da Apprendimento automatico di AWS