Vue d'ensemble des modèles personnalisés dans Neptune ML - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Vue d'ensemble des modèles personnalisés dans Neptune ML

Quand utiliser un modèle personnalisé dans Neptune ML

Les modèles intégrés de Neptune ML traitent toutes les tâches standard prises en charge par Neptune ML. Toutefois, dans certains cas, vous pouvez souhaiter disposer d'un contrôle plus précis sur le modèle pour une tâche particulière ou avoir besoin de personnaliser le processus d'entraînement de modèle. Un modèle personnalisé est par exemple approprié dans les cas suivants :

  • L'encodage des fonctionnalités pour les fonctionnalités de texte de très grands modèles de texte doit être exécuté sur le GPU.

  • Vous souhaitez utiliser votre propre modèle de réseau de neurones en graphes (GNN) personnalisé, développé dans la bibliothèque Deep Graph Library (DGL).

  • Vous souhaitez utiliser des modèles tabulaires ou des modèles d'ensemble pour la classification et la régression de nœud.

Flux de travail pour le développement et l'utilisation d'un modèle personnalisé dans Neptune ML

La prise en charge des modèles personnalisés dans Neptune ML est conçue pour s'intégrer parfaitement aux flux de travail Neptune ML existants. Elle fonctionne en exécutant du code personnalisé dans votre module source sur l'infrastructure de Neptune ML pour entraîner le modèle. Comme c'est le cas pour le mode intégré, Neptune ML lance automatiquement une tâche de réglage des hyperparamètres SageMaker et sélectionne le meilleur modèle en fonction de la métrique d'évaluation. Il utilise ensuite l'implémentation fournie dans votre module source pour générer des artefacts de modèle à déployer.

L'exportation des données, la configuration de l'entraînement et le prétraitement des données sont les mêmes pour un modèle personnalisé que pour un modèle intégré.

Après le prétraitement des données, vous pouvez développer et tester de manière itérative et interactive l'implémentation de votre modèle personnalisé à l'aide de Python. Lorsque votre modèle est prêt pour la production, vous pouvez charger le module Python obtenu sur Amazon S3 comme suit :

aws s3 cp --recursive (source path to module) s3://(bucket name)/(destination path for your module)

Vous pouvez ensuite utiliser le flux de travail de données normal par défaut ou incrémentiel pour déployer le modèle en production, à quelques différences près.

Pour l'entraînement de modèle à l'aide d'un modèle personnalisé, vous devez fournir un objet JSON customModelTrainingParameters à l'API d'entraînement de modèle de Neptune ML afin de garantir que votre code personnalisé est utilisé. Les champs présents dans l'objet customModelTrainingParameters sont les suivants :

  • sourceS3DirectoryPath : (obligatoire) chemin de l'emplacement Amazon S3 où se trouve le module Python implémentant votre modèle. Il doit pointer vers un emplacement Amazon S3 existant valide contenant, au minimum, un script d'entraînement, un script de transformation et un fichier model-hpo-configuration.json.

  • trainingEntryPointScript : (facultatif) nom du point d'entrée dans votre module d'un script qui effectue l'entraînement de modèle et utilise les hyperparamètres comme arguments de ligne de commande, y compris les hyperparamètres fixes.

    Par défaut : training.py.

  • transformEntryPointScript : (facultatif) nom du point d'entrée dans le module d'un script qui doit être exécuté une fois que le modèle le plus approprié issu de la recherche par hyperparamètres a été identifié, afin de calculer les artefacts de modèle nécessaires au déploiement du modèle. Il devrait pouvoir s'exécuter sans arguments de ligne de commande.

    Par défaut : transform.py.

Par exemple :

curl \ -X POST https://(your Neptune endpoint)/ml/modeltraining -H 'Content-Type: application/json' \ -d '{ "id" : "(a unique model-training job ID)", "dataProcessingJobId" : "(the data-processing job-id of a completed job)", "trainModelS3Location" : "s3://(your Amazon S3 bucket)/neptune-model-graph-autotrainer" "modelName": "custom", "customModelTrainingParameters" : { "sourceS3DirectoryPath": "s3://(your Amazon S3 bucket)/(path to your Python module)", "trainingEntryPointScript": "(your training script entry-point name in the Python module)", "transformEntryPointScript": "(your transform script entry-point name in the Python module)" } }'

De même, pour activer une transformation de modèle personnalisée, vous devez fournir un objet JSON customModelTransformParameters à l'API de transformation de modèle de Neptune ML, avec des valeurs de champs compatibles avec les paramètres de modèle enregistrés à partir de la tâche d'entraînement. L'objet customModelTransformParameters contient les champs suivants :

  • sourceS3DirectoryPath : (obligatoire) chemin de l'emplacement Amazon S3 où se trouve le module Python implémentant votre modèle. Il doit pointer vers un emplacement Amazon S3 existant valide contenant, au minimum, un script d'entraînement, un script de transformation et un fichier model-hpo-configuration.json.

  • transformEntryPointScript : (facultatif) nom du point d'entrée dans le module d'un script qui doit être exécuté une fois que le modèle le plus approprié issu de la recherche par hyperparamètres a été identifié, afin de calculer les artefacts de modèle nécessaires au déploiement du modèle. Il devrait pouvoir s'exécuter sans arguments de ligne de commande.

    Par défaut : transform.py.

Par exemple :

curl \ -X POST https://(your Neptune endpoint)/ml/modeltransform -H 'Content-Type: application/json' \ -d '{ "id" : "(a unique model-training job ID)", "trainingJobName" : "(name of a completed SageMaker training job)", "modelTransformOutputS3Location" : "s3://(your Amazon S3 bucket)/neptune-model-transform/" "customModelTransformParameters" : { "sourceS3DirectoryPath": "s3://(your Amazon S3 bucket)/(path to your Python module)", "transformEntryPointScript": "(your transform script entry-point name in the Python module)" } }'