O ajuste automático de modelo do Amazon SageMaker agora oferece suporte a Fallbacks de instância de treinamento do SageMaker PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O ajuste automático de modelo do Amazon SageMaker agora oferece suporte a fallbacks de instância de treinamento do SageMaker

Agora Amazon Sage Maker anunciou o suporte de fallbacks de instância de treinamento do SageMaker para Ajuste automático de modelo do Amazon SageMaker (AMT) que permitem que os usuários especifiquem configurações alternativas de recursos de computação.

O ajuste automático de modelos do SageMaker encontra a melhor versão de um modelo executando muitos trabalhos de treinamento em seu conjunto de dados usando o gamas de hiperparâmetros que você especifica para seu algoritmo. Em seguida, ele escolhe os valores de hiperparâmetros que resultam em um modelo que apresenta o melhor desempenho, conforme medido por um métrico que você escolher.

Anteriormente, os usuários só tinham a opção de especificar uma configuração de instância única. Isso pode levar a problemas quando o tipo de instância especificado não está disponível devido à alta utilização. No passado, seus trabalhos de treinamento falhavam com um InsufficientCapacityError (ICE). A AMT usou tentativas inteligentes para evitar essas falhas em muitos casos, mas permaneceu impotente diante da baixa capacidade sustentada.

Esse novo recurso significa que você pode especificar uma lista de configurações de instância na ordem de preferência, de modo que seu trabalho AMT retorne automaticamente para a próxima instância da lista em caso de baixa capacidade.

Nas seções a seguir, percorremos essas etapas de alto nível para superar um ICE:

  1. Definir configuração do trabalho de ajuste de hiperparâmetros
  2. Definir os parâmetros do trabalho de treinamento
  3. Criar o trabalho de ajuste de hiperparâmetro
  4. Descreva o trabalho de treinamento

Definir configuração do trabalho de ajuste de hiperparâmetros

A HyperParameterTuningJobConfig O objeto descreve o trabalho de ajuste, incluindo a estratégia de pesquisa, a métrica objetiva usada para avaliar os trabalhos de treinamento, os intervalos dos parâmetros a serem pesquisados ​​e os limites de recursos para o trabalho de ajuste. Esse aspecto não foi alterado com o lançamento de recursos de hoje. No entanto, vamos analisá-lo para dar um exemplo completo.

A ResourceLimits O objeto especifica o número máximo de trabalhos de treinamento e trabalhos de treinamento paralelos para este trabalho de ajuste. Neste exemplo, estamos fazendo um busca aleatória estratégia e especificando um máximo de 10 postos de trabalho (MaxNumberOfTrainingJobs) e 5 empregos simultâneos (MaxParallelTrainingJobs) de uma vez.

A ParameterRanges O objeto especifica os intervalos de hiperparâmetros que esse trabalho de ajuste pesquisa. Especificamos o nome, bem como o valor mínimo e máximo do hiperparâmetro a ser pesquisado. Neste exemplo, definimos os valores mínimo e máximo para os intervalos de parâmetros Contínuo e Inteiro e o nome do hiperparâmetro (“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"
                }
              ]
            }
          }

Definir os parâmetros do trabalho de treinamento

Na definição do job de treinamento, definimos a entrada necessária para executar um job de treinamento usando o algoritmo que especificamos. Após a conclusão do treinamento, o SageMaker salva os artefatos de modelo resultantes em um Serviço de armazenamento simples da Amazon (Amazon S3) local que você especificar.

Anteriormente, especificamos o tipo de instância, a contagem e o tamanho do volume no ResourceConfig parâmetro. Quando a instância sob este parâmetro estava indisponível, um erro de capacidade insuficiente (ICE) foi gerado.

Para evitar isso, temos agora o HyperParameterTuningResourceConfig parâmetro sob o TrainingJobDefinition, onde especificamos uma lista de instâncias às quais recorrer. O formato dessas instâncias é o mesmo que no ResourceConfig. O trabalho percorrerá a lista de cima para baixo para encontrar uma configuração de instância disponível. Se uma instância não estiver disponível, em vez de um erro de capacidade insuficiente (ICE), a próxima instância na lista é escolhida, superando assim o 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"
            },
          }

Executar um trabalho de ajuste de hiperparâmetro

Nesta etapa, estamos criando e executando um trabalho de ajuste de hiperparâmetros com a configuração do recurso de ajuste de hiperparâmetros definida acima.

Inicializamos um cliente SageMaker e criamos o trabalho especificando a configuração de ajuste, a definição do trabalho de treinamento e um nome de trabalho.

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

A execução de um trabalho AMT com o suporte de fallbacks de instância de treinamento do SageMaker permite que o usuário supere a capacidade insuficiente por conta própria, reduzindo assim a chance de falha do trabalho.

Descrever trabalhos de treinamento

A função a seguir lista todos os tipos de instância usados ​​durante o experimento e pode ser usada para verificar se uma instância de treinamento do SageMaker voltou automaticamente para a próxima instância da lista durante a alocação de recursos.

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

A saída da função acima exibe todas as instâncias que o job AMT está usando para executar o experimento.

Conclusão

Nesta postagem, demonstramos como agora você pode definir um conjunto de instâncias nas quais seu experimento AMT pode recorrer no caso de InsufficientCapacityError. Vimos como definir uma configuração de trabalho de ajuste de hiperparâmetro, bem como especificar o número máximo de trabalhos de treinamento e o máximo de trabalhos paralelos. Por fim, vimos como superar o InsufficientCapacityError usando o HyperParameterTuningResourceConfig parâmetro, que pode ser especificado na definição da tarefa de treinamento.

Para saber mais sobre a AMT, visite Ajuste automático de modelo do Amazon SageMaker.


Sobre os autores

O ajuste automático de modelo do Amazon SageMaker agora oferece suporte a Fallbacks de instância de treinamento do SageMaker PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Doug Mbaya é um arquiteto de soluções de parceiro sênior com foco em dados e análises. Doug trabalha em estreita colaboração com os parceiros da AWS, ajudando-os a integrar a solução de dados e análises na nuvem.

O ajuste automático de modelo do Amazon SageMaker agora oferece suporte a Fallbacks de instância de treinamento do SageMaker PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Kruthi Jayasimha Rao é um Partner Solutions Architect na equipe Scale-PSA. A Kruthi realiza validações técnicas para Parceiros, permitindo que eles progridam no Caminho do Parceiro.

O ajuste automático de modelo do Amazon SageMaker agora oferece suporte a Fallbacks de instância de treinamento do SageMaker PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Bernardo Jollans é engenheiro de desenvolvimento de software para o ajuste automático de modelos do Amazon SageMaker.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS