Rechercher à l'aide de la console et de l'API Amazon SageMaker - Amazon SageMaker

Rechercher à l'aide de la console et de l'API Amazon SageMaker

Le développement d'un modèle de machine learning nécessite généralement une expérimentation approfondie de différents ensembles de données, algorithmes et valeurs d'hyper-paramètre. Pour gérer jusqu'à des milliers d'expériences de modèles de machine learning, utilisez les capacités de recherche de SageMaker.

Vous pouvez utiliser la recherche SageMaker pour :

  • Rechercher, organiser ou évaluer les tâches d'entraînement à l'aide de propriétés, d'hyper-paramètres, de métriques de performance ou de toute autre métadonnée.

  • Trouvez le modèle le plus performant en passant en revue les métriques de la tâche d'entraînement et du modèle, telles que la perte d'entraînement ou la précision de la validation.

  • Remonter la lignée d'un modèle jusqu'à la tâche d'entraînement et ses ressources connexes, telles que les ensembles de données d'entraînement.

Cette rubrique couvre la recherche à partir de la console SageMaker et de l'API SageMaker. Pour de plus amples informations sur la recherche dans Amazon SageMaker Studio, veuillez consulter Rechercher des expériences avec Studio.

Exemples de blocs-notes pour la gestion d'expériences d'apprentissage-machine

Pour obtenir un exemple de bloc-notes qui utilise la fonctionnalité de suivi de modèles Amazon SageMaker pour gérer les expériences de machine learning, veuillez consulter Managing ML Experimentation using Model Tracking Capability.

Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter l'exemple dans SageMaker, veuillez consulter Utilisation des instances de bloc-notes Amazon SageMaker. Après avoir créé et ouvert une instance de bloc-notes, choisissez l'onglet SageMaker Examples (Exemples SageMaker) pour afficher la liste de tous les exemples SageMaker. Le bloc-notes permettant de gérer les expérimentations ML se trouve dans la section Advanced Functionality (Fonctionnalités avancées). Pour ouvrir un bloc-notes, choisissez son onglet Use (Utiliser), puis Create copy (Créer une copie). Si vous avez des questions, publiez-les sur le forum des développeurs Amazon Machine Learning.

Organisation, recherche et évaluation des tâches d'entraînement (console)

Pour organiser les tâches d'entraînement, affectez-leur une ou plusieurs balises.

Pour rechercher une tâche, un modèle ou une ressource d'entraînement spécifique, utilisez le suivi de modèle afin de rechercher des mots-clés dans les éléments pouvant faire l'objet d'une recherche. Les éléments pouvant faire l'objet d'une recherche incluent les tâches d'entraînement, les modèles, les hyperparamètres, les métadonnées, les balises et les URL. Pour affiner vos résultats de suivi, vous pouvez effectuer une recherche à l'aide de plusieurs critères.

Pour choisir le meilleur modèle de déploiement, évaluez la façon dont tous les modèles ont été exécutés par rapport à une ou plusieurs métriques. Vous pouvez utiliser les résultats de suivi de modèles pour répertorier, trier et évaluer les performances des modèles dans vos expérimentations.

Utilisation de balises pour suivre les tâches d'entraînement (console)

Pour grouper les tâches d'entraînement, créez les balises avec des clés descriptives et une valeur. Par exemple, créez des clés de balise pour : projet, propriétaire, client et industrie.

Ajouter des balises aux tâches d'entraînement (console)

  1. Ouvrez la console Amazon SageMaker.

  2. Dans le volet de navigation, choisissez Tâches d'entraînement et Créer une tâche d'entraînement.

  3. Faites défiler l'écran vers le bas de la page et entrez une clé et une valeur pour la balise.

  4. Pour ajouter une autre balise, choisissez Add tag (Ajouter une balise) et ajoutez une autre paire clé-valeur.

Recherche de tâches d'entraînement (console)

Vous pouvez rechercher des offres d'entraînement à l'aide de différents attributs. Notez que certains paramètres de recherche apparaissent uniquement si vous avez créé une tâche d'entraînement avec cet attribut. Par exemple, Tags (Balises) apparaît uniquement si vous avez ajouté une balise pour une tâche d'entraînement.

Pour rechercher des tâches d'entraînement (console)

  1. Ouvrez la console Amazon SageMaker.

  2. Dans le panneau de navigation, sélectionnez Recherche.

  3. Ajouter Parameters (Paramètres).

    1. Saisissez un paramètre dans la zone de recherche, puis choisissez un type de paramètre, par exemple TrainingJobName.

    2. Choisissez une opération conditionnelle. Pour les valeurs numériques, utilisez les opérateurs comme is equals to (égal à), lesser than (inférieur à) ou greater than (supérieur à). Pour les valeurs de texte, utilisez des opérateurs tels que equals to (égal à) ou contains (contient).

    3. Entrez une valeur pour le paramètre.

  4. (Facultatif) Pour affiner votre recherche, ajoutez des critères de recherche supplémentaires. Choisissez Ajouter une ligne et entrez les valeurs des paramètres.

  5. Choisissez Search (Rechercher).

Évaluer Models (console)

Pour évaluer les performances d'un modèle, passez en revue ses métadonnées, hyper-paramètres et métriques. Pour mettre en surbrillance des métriques, modifiez la vue pour n'afficher que les métriques et hyperparamètres importants.

Pour évaluer un modèle (console)

  1. Ouvrez la console Amazon SageMaker.

  2. Dans le panneau de navigation, choisissez Search (Rechercher) et recherchez des tâches d'entraînement en spécifiant les paramètres appropriés. Les résultats sont affichés dans un tableau.

  3. Ouvrez la fenêtre de préférences en choisissant l'icône de paramètres dans le tableau des résultats de recherche.

  4. Pour afficher ou masquer un hyperparamètre ou une métrique, activez ou désactivez-le en choisissant Hyperparameter (Hyperparamètre) ou Metric (Métrique).

  5. Effectuez les modifications nécessaires, puis choisissez Update view (Mettre à jour la vue).

  6. Après avoir affiché les métriques et hyperparamètres importants, vous pouvez comparer et distinguer les résultats. À partir de là, vous pouvez choisir le meilleur modèle pour héberger ou étudier les modèles peu performants.

Recherche et évaluation de tâches d'entraînement (API)

Vous pouvez également utiliser l'API Search pour rechercher et évaluer les tâches d'entraînement ou pour obtenir des suggestions pour des éléments utilisés dans des expérimentations pouvant faire l'objet d'une recherche.

Trouver des tâches d'entraînement (API)

Pour rechercher des tâches d'entraînement, créez un paramètre de recherche à l'aide du paramètre search_params. Ensuite, utilisez la fonction de recherche dans le smclient sous-processus dans le kit SDK AWS for Python (Boto3).

L'exemple suivant montre comment utiliser l'API Search pour rechercher des tâches d'entraînement.

import boto3 search_params={ "MaxResults": 10, "Resource": "TrainingJob", "SearchExpression": { "Filters": [{ "Name": "Tags.Project", "Operator": "Equals", "Value": "Project_Binary_Classifier" }]}, "SortBy": "Metrics.train:binary_classification_accuracy", "SortOrder": "Descending" } smclient = boto3.client(service_name='sagemaker') results = smclient.search(**search_params)

Évaluation des modèles (API)

Pour évaluer les modèles, exécutez une recherche comme décrit dans Trouver des tâches d'entraînement (API), passez en revue les métriques de modèle, puis utilisez le kit SDK AWS for Python (Boto3) pour créer une table et la tracer.

L'exemple suivant explique comment utiliser la recherche pour évaluer des modèles et afficher les résultats dans un tableau.

import pandas headers=["Training Job Name", "Training Job Status", "Batch Size", "Binary Classification Accuracy"] rows=[] for result in results['Results']: trainingJob = result['TrainingJob'] metrics = trainingJob['FinalMetricDataList'] rows.append([trainingJob['TrainingJobName'], trainingJob['TrainingJobStatus'], trainingJob['HyperParameters']['mini_batch_size'], metrics[[x['MetricName'] for x in metrics].index('train:binary_classification_accuracy')]['Value'] ]) df = pandas.DataFrame(data=rows,columns=headers) from IPython.display import display, HTMLdisplay(HTML(df.to_html()))

Obtention de suggestions pour une recherche (API)

Pour obtenir des suggestions pour une recherche, utilisez l'API GetSearchSuggestions.

L'exemple suivant pour le kit SDK AWS for Python (Boto3) montre une requête get_search_suggestions pour des éléments contenant linear.

search_suggestion_params={ "Resource": "TrainingJob", "SuggestionQuery": { "PropertyNameQuery": { "PropertyNameHint": "linear" } } }

Voici un exemple de réponse à une demande get_search_suggestions.

{ 'PropertyNameSuggestions': [{'PropertyName': 'hyperparameters.linear_init_method'}, {'PropertyName': 'hyperparameters.linear_init_value'}, {'PropertyName': 'hyperparameters.linear_init_sigma'}, {'PropertyName': 'hyperparameters.linear_lr'}, {'PropertyName': 'hyperparameters.linear_wd'}] }

Une fois les suggestions de recherche obtenues, vous pouvez utiliser l'un des noms de propriété dans une recherche.

Vérification des ensembles de données utilisés par vos tâches d'entraînement

Vous pouvez utiliser la fonctionnalité de suivi de modèles pour vérifier les ensembles de données qui ont été utilisés dans l'entraînement, où les ensembles de données d'exclusion ont été utilisés, et d'autres détails sur les tâches d'entraînement. Par exemple, utilisez la fonctionnalité de suivi de modèle pour vérifier qu'un ensemble de données spécifique a été utilisé dans une tâche d'entraînement pour un audit ou pour vérifier la conformité.

Pour vérifier si un jeu de données spécifique a été utilisé dans une tâche d'entraînement, recherchez son URL dans Amazon Simple Storage Service (Amazon S3). La fonctionnalité de suivi du modèle renvoie les tâches d'entraînement qui ont utilisé l'ensemble de données que vous spécifiez. Si votre recherche ne renvoie pas le jeu de données (le résultat est vide), le jeu de données n'a pas été utilisé dans une tâche d'entraînement. Un résultat vide confirme, par exemple, qu'un jeu de données de retenue n'a pas été utilisé.

Suivre la lignée des modèles

Vous pouvez utiliser le suivi de modèles pour suivre les informations sur la lignée de tâches d'entraînement et les ressources de modèle associées, y compris l'ensemble de données, l'algorithme, les hyper-paramètres et les métriques utilisés. Par exemple, si vous constatez que les performances d'un modèle hébergé ont baissé, vous pouvez vérifier sa tâche d'entraînement et les ressources utilisées pour déterminer la cause du problème.

Suivre la lignée des modèles (console)

Pour suivre la lignée d'un modèle (console)

  1. Ouvrez la console Amazon SageMaker.

  2. Dans le volet de navigation, choisissez Endpoints (Points de terminaison), puis sélectionnez le point de terminaison.

  3. Faites défiler jusqu'à la section Endpoint configuration settings (Paramètres de configuration du point de terminaison). Cette section répertorie toutes les versions de modèle déployées au point de terminaison, avec un lien hypertexte vers la tâche d'entraînement qui a créé chacune d'elles.

Suivre la lignée des modèles (API)

Pour tracer la lignée d'un modèle, vous devez obtenir le nom du modèle, puis l'utiliser pour rechercher les tâches d'entraînement.

L'exemple suivant montre comment utiliser la fonction de recherche pour suivre la lignée d'un modèle avec l'API.

# Get the name of model deployed at endpoint endpoint_config = smclient.describe_endpoint_config(EndpointConfigName=endpointName) model_name = endpoint_config['ProductionVariants'][0]['ModelName'] # Get the model's name model = smclient.describe_model(ModelName=model_name) # Search the training job by the location of model artifacts in Amazon S3 search_params={ "MaxResults": 1, "Resource": "TrainingJob", "SearchExpression": { "Filters": [ { "Name": "ModelArtifacts.S3ModelArtifacts", "Operator": "Equals", "Value": model['PrimaryContainer']['ModelDataUrl'] }]}, } results = smclient.search(**search_params)

Après avoir trouvé la tâche d'entraînement, vous pouvez passer en revue les ressources utilisées pour entraîner le modèle.