Amazon SageMaker Automatic Model Tuning prend désormais en charge les solutions de repli des instances de formation SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Amazon SageMaker Automatic Model Tuning prend désormais en charge les solutions de repli des instances de formation SageMaker

Aujourd'hui Amazon Sage Maker a annoncé la prise en charge des solutions de secours des instances de formation SageMaker pour Réglage automatique du modèle Amazon SageMaker (AMT) qui permettent aux utilisateurs de spécifier des configurations alternatives de ressources de calcul.

Le réglage automatique du modèle SageMaker trouve la meilleure version d'un modèle en exécutant de nombreuses tâches de formation sur votre ensemble de données à l'aide de l'outil gammes des hyperparamètres que vous spécifiez pour votre algorithme. Ensuite, il choisit les valeurs d'hyperparamètres qui aboutissent à un modèle qui fonctionne le mieux, tel que mesuré par un métrique que vous choisissez.

Auparavant, les utilisateurs n'avaient que la possibilité de spécifier une seule configuration d'instance. Cela peut entraîner des problèmes lorsque le type d'instance spécifié n'est pas disponible en raison d'une utilisation élevée. Dans le passé, vos tâches de formation échouaient avec une erreur InsufficientCapacityError (ICE). AMT a utilisé des tentatives intelligentes pour éviter ces échecs dans de nombreux cas, mais est restée impuissante face à une faible capacité persistante.

Cette nouvelle fonctionnalité signifie que vous pouvez spécifier une liste de configurations d'instances par ordre de préférence, de sorte que votre tâche AMT revienne automatiquement à l'instance suivante de la liste en cas de faible capacité.

Dans les sections suivantes, nous passons en revue ces étapes de haut niveau pour surmonter un ICE :

  1. Définir la configuration de la tâche de réglage des hyperparamètres
  2. Définir les paramètres du travail de formation
  3. Créer la tâche de réglage des hyperparamètres
  4. Décrire le poste de formation

Définir la configuration de la tâche de réglage des hyperparamètres

Les HyperParameterTuningJobConfig L'objet décrit la tâche de réglage, y compris la stratégie de recherche, la métrique objective utilisée pour évaluer les tâches de formation, les plages de paramètres à rechercher et les limites de ressources pour la tâche de réglage. Cet aspect n'a pas été modifié avec la version de fonctionnalité d'aujourd'hui. Nous allons néanmoins le reprendre pour donner un exemple complet.

Les ResourceLimits L'objet spécifie le nombre maximum de tâches de formation et de tâches de formation parallèles pour cette tâche de réglage. Dans cet exemple, nous faisons un recherche aléatoire stratégie et spécifiant un maximum de 10 tâches (MaxNumberOfTrainingJobs) et 5 emplois simultanés (MaxParallelTrainingJobs) à la fois.

Les ParameterRanges L'objet spécifie les plages d'hyperparamètres recherchés par cette tâche de réglage. Nous précisons le nom, ainsi que la valeur minimale et maximale de l'hyperparamètre à rechercher. Dans cet exemple, nous définissons les valeurs minimales et maximales des plages de paramètres Continu et Integer ainsi que le nom de l'hyperparamètre («eta», «max_degree»).

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

Définir les paramètres du travail de formation

Dans la définition de la tâche de formation, nous définissons l'entrée nécessaire pour exécuter une tâche de formation à l'aide de l'algorithme que nous spécifions. Une fois la formation terminée, SageMaker enregistre les artefacts de modèle résultants dans un Service de stockage simple Amazon (Amazon S3) emplacement que vous spécifiez.

Auparavant, nous spécifiions le type d'instance, le nombre et la taille du volume sous le champ ResourceConfig paramètre. Lorsque l'instance sous ce paramètre n'était pas disponible, une erreur de capacité insuffisante (ICE) était générée.

Pour éviter cela, nous disposons désormais du HyperParameterTuningResourceConfig paramètre sous le TrainingJobDefinition, où nous spécifions une liste d’instances sur lesquelles s’appuyer. Le format de ces instances est le même que dans le ResourceConfig. Le travail parcourra la liste de haut en bas pour trouver une configuration d'instance disponible. Si une instance n'est pas disponible, au lieu d'une erreur de capacité insuffisante (ICE), l'instance suivante dans la liste est choisie, surmontant ainsi 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"
            },
          }

Exécuter une tâche de réglage des hyperparamètres

Au cours de cette étape, nous créons et exécutons une tâche de réglage des hyperparamètres avec la configuration des ressources de réglage des hyperparamètres définie ci-dessus.

Nous initialisons un client SageMaker et créons la tâche en spécifiant la configuration de réglage, la définition de la tâche de formation et un nom de tâche.

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

L'exécution d'une tâche AMT avec la prise en charge des solutions de repli des instances de formation SageMaker permet à l'utilisateur de surmonter lui-même une capacité insuffisante, réduisant ainsi le risque d'échec de la tâche.

Décrire les emplois de formation

La fonction suivante répertorie tous les types d'instances utilisés pendant l'expérience et peut être utilisée pour vérifier si une instance de formation SageMaker est automatiquement revenue à l'instance suivante dans la liste lors de l'allocation des ressources.

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

Le résultat de la fonction ci-dessus affiche toutes les instances que la tâche AMT utilise pour exécuter l'expérience.

Conclusion

Dans cet article, nous avons montré comment vous pouvez désormais définir un pool d'instances sur lequel votre expérience AMT peut s'appuyer en cas de InsufficientCapacityError. Nous avons vu comment définir une configuration de tâche de réglage d'hyperparamètres, ainsi que spécifier le nombre maximum de tâches de formation et le nombre maximum de tâches parallèles. Enfin, nous avons vu comment surmonter le InsufficientCapacityError En utilisant le HyperParameterTuningResourceConfig paramètre, qui peut être spécifié dans la définition du travail de formation.

Pour en savoir plus sur l'AMT, visitez Réglage automatique du modèle Amazon SageMaker.


À propos des auteurs

Amazon SageMaker Automatic Model Tuning prend désormais en charge les solutions de repli des instances de formation SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Doug Mbaya est un architecte de solutions partenaire senior spécialisé dans les données et l'analyse. Doug travaille en étroite collaboration avec les partenaires AWS, les aidant à intégrer des solutions de données et d'analyse dans le cloud.

Amazon SageMaker Automatic Model Tuning prend désormais en charge les solutions de repli des instances de formation SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Kruthi Jayasimha Rao est Partner Solutions Architect au sein de l'équipe Scale-PSA. Kruthi réalise des validations techniques pour les Partenaires leur permettant de progresser dans le Parcours Partenaire.

Amazon SageMaker Automatic Model Tuning prend désormais en charge les solutions de repli des instances de formation SageMaker PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Bernard Jollans est ingénieur en développement logiciel pour le réglage automatique du modèle Amazon SageMaker.

Horodatage:

Plus de Apprentissage automatique AWS