Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart

En décembre 2020, AWS annoncé la disponibilité générale de Amazon SageMaker JumpStart, une capacité de Amazon Sage Maker qui vous aide à démarrer rapidement et facilement avec l'apprentissage automatique (ML). En mars 2022, nous avons également annoncé la prise en charge des API dans JumpStart. JumpStart permet d'ajuster et de déployer en un clic une grande variété de modèles pré-formés pour les tâches ML courantes, ainsi qu'une sélection de solutions de bout en bout qui résolvent les problèmes commerciaux courants. Ces fonctionnalités suppriment la lourde charge de chaque étape du processus ML, ce qui simplifie le développement de modèles de haute qualité et réduit le temps de déploiement.

Dans cet article, nous montrons comment exécuter le réglage automatique du modèle avec JumpStart.

Réglage automatique du modèle SageMaker

Traditionnellement, les ingénieurs ML mettent en œuvre une méthode d'essai et d'erreur pour trouver le bon ensemble d'hyperparamètres. Les essais et erreurs impliquent l'exécution de plusieurs tâches séquentiellement ou en parallèle tout en provisionnant les ressources nécessaires à l'exécution de l'expérience.

Avec Réglage automatique du modèle SageMaker, les ingénieurs ML et les scientifiques des données peuvent se décharger de la tâche fastidieuse d'optimisation de leur modèle et laisser SageMaker mener l'expérimentation. SageMaker tire parti de l'élasticité de la plate-forme AWS pour exécuter efficacement et simultanément plusieurs simulations de formation sur un ensemble de données et trouver les meilleurs hyperparamètres pour un modèle.

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'algorithme et gammes d'hyperparamètres que vous spécifiez. Il choisit ensuite les valeurs d'hyperparamètres qui se traduisent par un modèle qui fonctionne le mieux, tel que mesuré par un métrique que vous choisissez.

Le réglage automatique du modèle utilise soit un Bayésien (par défaut) ou un aléatoire stratégie de recherche pour trouver les meilleures valeurs pour les hyperparamètres. La recherche bayésienne traite le réglage des hyperparamètres comme un régression problème. Lors du choix des meilleurs hyperparamètres pour le prochain travail de formation, il prend en compte tout ce qu'il sait sur le problème jusqu'à présent et permet à l'algorithme d'exploiter les résultats les plus connus.

Dans cet article, nous utilisons la stratégie de recherche bayésienne par défaut pour démontrer les étapes impliquées dans l'exécution du réglage automatique du modèle avec JumpStart à l'aide de la LumièreGBM .

JumpStart prend actuellement en charge 10 exemples d'ordinateurs portables avec réglage automatique du modèle. Il prend également en charge quatre algorithmes populaires pour la modélisation de données tabulaires. Les tâches et les liens vers leurs exemples de blocs-notes sont résumés dans le tableau suivant.

Tâche Modèles pré-formés Prend en charge l'ensemble de données personnalisé Cadres pris en charge Exemples de cahiers
Classification d'image Oui Oui PyTorch, TensorFlow Introduction à JumpStart - Classification des images
Détection d'objet Oui Oui PyTorch, TensorFlow, MXNet Introduction à JumpStart - Détection d'objets
Segmentation Sémantique Oui Oui MXNet Introduction à JumpStart – Segmentation sémantique
Classification du texte Oui Oui TensorFlow Introduction à JumpStart – Classification de texte
Classification des paires de phrases Oui Oui TensorFlow, visage étreignant Introduction à JumpStart – Classification des paires de phrases
Question Répondant Oui Oui PyTorch Introduction à JumpStart - Réponse aux questions
Classification tabulaire Oui Oui LightGBM, CatBoost, XGBoost, apprenant linéaire Introduction à JumpStart - Classification tabulaire - LightGBM, CatBoost
Introduction à JumpStart - Classification tabulaire - XGBoost, apprenant linéaire
Régression tabulaire Oui Oui LightGBM, CatBoost, XGBoost, apprenant linéaire Introduction à JumpStart - Régression tabulaire - LightGBM, CatBoost
Introduction à JumpStart - Régression tabulaire - XGBoost, apprenant linéaire

Vue d'ensemble de la solution

Ce flux de travail technique donne un aperçu des différentes fonctionnalités et étapes d'Amazon Sagemaker nécessaires pour régler automatiquement un modèle JumpStart.

Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Dans les sections suivantes, nous fournissons une procédure pas à pas pour exécuter le réglage automatique du modèle avec JumpStart à l'aide de l'algorithme LightGBM. Nous vous proposons un accompagnement cahier pour cette procédure pas à pas.

Nous suivons les étapes de haut niveau suivantes :

  1. Récupérez le modèle pré-formé JumpStart et le conteneur d'images.
  2. Définissez des hyperparamètres statiques.
  3. Définissez les plages d'hyperparamètres réglables.
  4. Initialiser le réglage automatique du modèle.
  5. Exécutez la tâche de réglage.
  6. Déployez le meilleur modèle sur un point de terminaison.

Récupérer le modèle pré-formé JumpStart et le conteneur d'images

Dans cette section, nous choisissons le modèle de classification LightGBM pour un réglage fin. Nous utilisons le type d'instance ml.m5.xlarge sur lequel le modèle est exécuté. Nous récupérons ensuite le conteneur Docker de formation, la source de l'algorithme de formation et le modèle pré-formé. Voir le code suivant :

training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=train_model_id,
    model_version=train_model_version,
    image_scope=train_scope,
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

Définir des hyperparamètres statiques

Nous récupérons maintenant les hyperparamètres par défaut pour ce modèle LightGBM, tels que préconfigurés par JumpStart. Nous remplaçons également le num_boost_round hyperparamètre avec une valeur personnalisée.

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

Définir les plages d'hyperparamètres ajustables

Ensuite, nous définissons les plages d'hyperparamètres comme étant optimisé par le réglage automatique du modèle. Nous définissons le nom de l'hyperparamètre tel qu'attendu par le modèle, puis les plages de valeurs à essayer pour cet hyperparamètre. Le réglage automatique du modèle prélève des échantillons (égaux au max_jobs paramètre) à partir de l'espace des hyperparamètres, en utilisant une technique appelée recherche bayésienne. Pour chaque échantillon d'hyperparamètre dessiné, le tuner crée une tâche d'entraînement pour évaluer le modèle avec cette configuration. Voir le code suivant :

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Initialiser le réglage automatique du modèle

Nous commençons par créer un Estimateur objet avec tous les actifs requis qui définissent la tâche de formation, tels que le modèle pré-formé, l'image de formation et le script de formation. On définit alors un HyperparameterTuner objet pour interagir avec les API de réglage d'hyperparamètres SageMaker.

Les HyperparameterTuner accepte comme paramètres l'objet Estimator, la métrique cible sur la base de laquelle le meilleur ensemble d'hyperparamètres est décidé, le nombre total de tâches d'entraînement (max_jobs) pour démarrer la tâche de réglage d'hyperparamètres et le nombre maximal de tâches d'entraînement parallèles à exécuter (max_parallel_jobs). Les tâches de formation sont exécutées avec l'algorithme LightGBM et les valeurs d'hyperparamètres qui ont le minimum mlogloss la métrique est choisie. Pour plus d'informations sur la configuration du réglage automatique du modèle, voir Meilleures pratiques pour le réglage des hyperparamètres.

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

Dans le code précédent, nous disons au tuner d'exécuter au plus 10 expériences (max_jobs) et seulement deux expériences simultanées à la fois (max_parallel_jobs). Ces deux paramètres permettent de contrôler vos coûts et votre temps de formation.

Exécutez la tâche de réglage

Pour lancer la tâche de réglage SageMaker, nous appelons la méthode d'ajustement de l'objet tuner d'hyperparamètres et transmettons le Service de stockage simple Amazon (Amazon S3) chemin des données d'entraînement :

tuner.fit({"training": training_dataset_s3_path}, logs=True)

Pendant que le réglage automatique du modèle recherche les meilleurs hyperparamètres, vous pouvez surveiller leur progression soit sur la console SageMaker, soit sur Amazon Cloud Watch. Lorsque la formation est terminée, les artefacts affinés du meilleur modèle sont téléchargés vers l'emplacement de sortie Amazon S3 spécifié dans la configuration de la formation.

Déployer le meilleur modèle sur un point de terminaison

Une fois la tâche de réglage terminée, le meilleur modèle a été sélectionné et stocké dans Amazon S3. Nous pouvons maintenant déployer ce modèle en appelant la méthode de déploiement du HyperparameterTuner objet et en transmettant les paramètres nécessaires, tels que le nombre d'instances à utiliser pour le point de terminaison créé, leur type, l'image à déployer et le script à exécuter :

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

Nous pouvons maintenant tester le point de terminaison créé en effectuant des requêtes d'inférence. Vous pouvez suivre le reste du processus dans l'accompagnement cahier.

Conclusion

Avec le réglage automatique du modèle dans SageMaker, vous pouvez trouver la meilleure version de votre modèle en exécutant des tâches de formation sur l'ensemble de données fourni avec l'un des algorithmes pris en charge. Le réglage automatique du modèle vous permet de réduire le temps de réglage d'un modèle en recherchant automatiquement la meilleure configuration d'hyperparamètres dans les plages d'hyperparamètres que vous spécifiez.

Dans cet article, nous avons montré l'intérêt d'exécuter le réglage automatique du modèle sur un modèle pré-formé JumpStart à l'aide des API SageMaker. Nous avons utilisé l'algorithme LightGBM et défini un maximum de 10 tâches d'entraînement. Nous avons également fourni des liens vers des exemples de blocs-notes présentant les frameworks ML qui prennent en charge l'optimisation du modèle JumpStart.

Pour plus de détails sur l'optimisation d'un modèle JumpStart avec le réglage automatique du modèle, reportez-vous à notre exemple cahier.


À propos de l’auteur

Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Doug Mbaya est un architecte de solution partenaire principal spécialisé dans les données et l'analyse. Doug travaille en étroite collaboration avec les partenaires AWS, les aidant à intégrer la solution de données et d'analyse dans le cloud.

Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart 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.

Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Giannis Mitropoulos est un ingénieur en développement logiciel pour SageMaker Réglage automatique du modèle.

Exécutez le réglage automatique du modèle avec Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dr Ashish Khetan est un scientifique appliqué senior avec Amazon SageMaker JumpStart ainsi que le Algorithmes intégrés d'Amazon SageMaker et aide à développer des algorithmes d'apprentissage automatique. Il est un chercheur actif en apprentissage automatique et en inférence statistique et a publié de nombreux articles dans les conférences NeurIPS, ICML, ICLR, JMLR et ACL.

Horodatage:

Plus de Apprentissage automatique AWS