Utilisation d'un algorithme pour exécuter une tâche de réglage d'hyperparamètre - Amazon SageMaker

Utilisation d'un algorithme pour exécuter une tâche de réglage d'hyperparamètre

Une tâche de réglage d'hyperparamètre détecte la meilleure version d'un modèle en exécutant plusieurs tâches d'entraînement sur votre ensemble de données à l'aide de l'algorithme et des plages d'hyperparamètres que vous spécifiez. Elle choisit ensuite les valeurs d'hyperparamètres qui génèrent un modèle avec des performances optimales, telles qu'elles sont mesurées par une métrique que vous choisissez. Pour de plus amples informations, veuillez consulter Réglage de modèle automatique avec SageMaker.

Vous pouvez utiliser une ressource d'algorithme afin de créer une tâche de réglage d'hyperparamètre à l'aide de la console Amazon SageMaker, de l'API Amazon SageMaker de bas niveau ou du kit SDK Python Amazon SageMaker.

Utilisation d'un algorithme pour exécuter une tâche de réglage d'hyperparamètre (console)

Pour utiliser un algorithme afin d'exécuter une tâche de réglage d'hyperparamètre (console)

  1. Ouvrez la console SageMaker à l'adresse https://console.aws.amazon.com/sagemaker/.

  2. Choisissez Algorithmes.

  3. Choisissez un algorithme que vous avez créé dans la liste de l'onglet My algorithms (Mes algorithmes) ou choisissez un algorithme auquel vous vous êtes abonné sur l'onglet des abonnements AWS Marketplace.

  4. Choisissez Créer une tâche de réglage d'hyperparamètre.

    L'algorithme que vous avez choisi sera automatiquement sélectionné.

  5. Sur la page Créer une tâche de réglage d'hyperparamètre, fournissez les informations suivantes :

    1. Sous Warm start (Démarrage à chaud), choisissez Enable warm start (Activer le démarrage à chaud) afin d'utiliser les informations issues des tâches de réglage d'hyperparamètre précédentes comme point de départ pour cette tâche de réglage d'hyperparamètre. Pour de plus amples informations, veuillez consulter Exécution d'une tâche de réglage des hyperparamètres avec démarrage à chaud.

      1. Choisissez Identical data and algorithm (Algorithme et données identiques) si les données d'entrée sont identiques aux données d'entrée des tâches parentes de cette tâche de réglage d'hyperparamètre ou choisissez Transfer learning (Apprentissage par transfert) afin d'utiliser des données d'entrée supplémentaires ou différentes pour cette tâche de réglage d'hyperparamètre.

      2. Sous Parent hyperparameter tuning job(s) (Tâche(s) de réglage d'hyperparamètre parente(s)), choisissez jusqu'à cinq tâches de réglage d'hyperparamètre à utiliser comme parentes de cette tâche de réglage d'hyperparamètre.

    2. Sous Nom de tâche de réglage d'hyperparamètre, saisissez un nom pour la tâche de réglage.

    3. Sous IAM role (Rôle IAM), choisissez un rôle IAM qui détient les autorisations requises pour exécuter les tâches de réglage d'hyperparamètre dans SageMaker, ou choisissez Create a new role (Créer un rôle) afin que SageMaker crée un rôle avec la politique gérée AmazonSageMakerFullAccess attachée. Pour plus d'informations, consultez Rôles SageMaker.

    4. Sous VPC, choisissez un Amazon VPC auquel les tâches d'entraînement lancées par la tâche de réglage pourront accéder. Pour de plus amples informations, veuillez consulter Attribuer aux tâches d'entraînement SageMaker l'accès aux ressources de votre Amazon VPC.

    5. Choisissez Suivant.

    6. Sous Métrique d'objectif, choisissez la métrique que la tâche de réglage d'hyperparamètre utilise pour déterminer la meilleure combinaison des hyperparamètres, puis choisissez de réduire ou d'agrandir cette métrique. Pour de plus amples informations, veuillez consulter Affichage de la meilleure tâche d'entraînement.

    7. Sous Configuration d'hyperparamètre, choisissez les plages correspondant aux hyperparamètres réglables que la tâche de réglage doit rechercher, puis définissez les valeurs statiques des hyperparamètres qui doivent rester constantes dans toutes les tâches d'entraînement lancées par la tâche de réglage d'hyperparamètre. Pour de plus amples informations, veuillez consulter Définition des plages d'hyperparamètres.

    8. Choisissez Suivant.

    9. Sous Configuration des données d'entrée, spécifiez les valeurs suivantes pour chaque canal de données d'entrée à utiliser pour la tâche de réglage d'hyperparamètre. Les canaux pris en charge par l'algorithme que vous utilisez pour le réglage des hyperparamètres, le type de contenu, le type de compression pris en charge et les modes d'entrée pris en charge pour chaque canal sont visibles sous la section Channel spécification (Spécification de canal) de la page Algorithm summary (Récapitulatif d'algorithme) de l'algorithme.

      1. Dans le champ Nom du canal, saisissez le nom du canal d'entrée.

      2. Sous Type de contenu, saisissez le type de contenu des données attendu par l'algorithme pour le canal.

      3. Sous Type de compression, choisissez le type de compression des données à utiliser, le cas échéant.

      4. Sous Habillage des enregistrements, choisissez RecordIO si l'algorithme attend des données au format RecordIO.

      5. Sous Type de données S3, Type de distribution de données S3 et Emplacement S3, spécifiez les valeurs appropriées. Pour obtenir des informations sur la signification de ces valeurs, veuillez consulter S3DataSource.

      6. Sous Mode d'entrée, choisissez Fichier afin de télécharger les données depuis le volume de stockage ML alloué et montez le répertoire dans un volume Docker. Choisissez Pipe (Tube) pour diffuser directement les données d'Amazon S3 vers le conteneur.

      7. Pour ajouter un autre canal d'entrée, choisissez Ajouter canal. Si vous avez terminé d'ajouter des canaux d'entrée, choisissez Terminé.

    10. Sous l'emplacement Sortie, spécifiez les valeurs suivantes :

      1. Sous Chemin de sortie S3, choisissez l'emplacement S3 où est stockée la sortie (les artefacts de modèles, par exemple) générée par les tâches d'entraînement lancées par cette tâche de réglage d'hyperparamètre.

        Note

        Vous utilisez les artefacts de modèles stockés à cet emplacement pour créer un modèle ou un package de modèle à partir de cette tâche de réglage d'hyperparamètre.

      2. Spécifiez une Encryption key (Clé de chiffrement) si vous voulez que SageMaker utilise une clé AWS KMS pour chiffrer les données de sortie au repos dans l'emplacement S3.

    11. Sous Configuration des ressources, fournissez les informations suivantes :

      1. Sous Type d'instance, choisissez le type d'instance à utiliser pour chaque tâche d'entraînement lancée par la tâche de réglage d'hyperparamètre.

      2. Sous Nombre d'instances, saisissez le nombre d'instances ML à utiliser pour chaque tâche d'entraînement lancée par la tâche de réglage d'hyperparamètre.

      3. Sous Taille du volume par instance (Go), saisissez la taille du volume de stockage ML que vous souhaitez allouer à chaque tâche d'entraînement lancée par la tâche de réglage d'hyperparamètre. Les volumes de stockage ML stockent les artefacts de modèles et les états incrémentiels.

      4. Sous Encryption key (Clé de chiffrement), spécifiez la clé si vous voulez qu'Amazon SageMaker utilise une clé AWS Key Management Service pour chiffrer les données dans le volume de stockage ML attaché aux instances d'entraînement.

    12. Sous Limites des ressources, fournissez les informations suivantes :

      1. Sous Nombre total de tâches d'entraînement, spécifiez le nombre maximum de tâches d'entraînement que peut lancer la tâche de réglage d'hyperparamètre. Une tâche de réglage d'hyperparamètre peut lancer 500 tâches d'entraînement au maximum.

      2. Sous Nombre maximal de tâches d'entraînement parallèles, spécifiez le nombre maximum de tâches d'entraînement simultanées que peut lancer la tâche de réglage d'hyperparamètre. Une tâche de réglage d'hyperparamètre peut lancer 10 tâches d'entraînement simultanées au maximum.

      3. Sous Condition d'arrêt, spécifiez la durée maximale, en secondes, en minutes, en heures ou en jours, pendant laquelle doit s'exécuter chaque tâche d'entraînement lancée par la tâche de réglage d'hyperparamètre.

    13. Sous Balises, spécifiez une ou plusieurs balises permettant de gérer la tâche de réglage d'hyperparamètre. Chaque balise est constituée d'une clé et d'une valeur facultative. Les clés de balise doivent être uniques à chaque ressource.

    14. Choisissez Créer des tâches afin d'exécuter la tâche de réglage d'hyperparamètre.

Utilisation d'un algorithme pour exécuter une tâche de réglage d'hyperparamètre (API)

Pour utiliser un algorithme afin d'exécuter une tâche de réglage d'hyperparamètre à l'aide de l'API SageMaker, spécifiez le nom ou l'Amazon Resource Name (ARN) de l'algorithme dans le champ AlgorithmName de l'objet AlgorithmSpecification que vous transmettez à CreateHyperParameterTuningJob. Pour obtenir des informations sur le réglage d'hyperparamètre dans SageMaker, veuillez consulter Réglage de modèle automatique avec SageMaker.

Utiliser un algorithme pour exécuter une tâche de réglage d'hyperparamètre (kit SDK Python Amazon SageMaker)

Utilisez un algorithme que vous avez créé ou auquel vous êtes abonné sur AWS Marketplace afin de créer une tâche de réglage d'hyperparamètre, de créer un objet AlgorithmEstimator et de spécifier l'ARN (Amazon Resource Name) ou le nom de l'algorithme comme valeur de l'argument algorithm_arn. Ensuite, initialisez un objet HyperparameterTuner avec la valeur AlgorithmEstimator que vous avez créée comme valeur de l'argument estimator. Enfin, appelez la méthode fit de l'instance AlgorithmEstimator. Exemples :

from sagemaker import AlgorithmEstimator from sagemaker.tuner import HyperparameterTuner data_path = os.path.join(DATA_DIR, 'marketplace', 'training') algo = AlgorithmEstimator( algorithm_arn='arn:aws:sagemaker:us-east-2:764419575721:algorithm/scikit-decision-trees-1542410022', role='SageMakerRole', instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=sagemaker_session, base_job_name='test-marketplace') train_input = algo.sagemaker_session.upload_data( path=data_path, key_prefix='integ-test-data/marketplace/train') algo.set_hyperparameters(max_leaf_nodes=10) tuner = HyperparameterTuner(estimator=algo, base_tuning_job_name='some-name', objective_metric_name='validation:accuracy', hyperparameter_ranges=hyperparameter_ranges, max_jobs=2, max_parallel_jobs=2) tuner.fit({'training': train_input}, include_cls_metadata=False) tuner.wait()