Développement de 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.

Développement de modèles personnalisés dans Neptune ML

Une bonne façon de commencer le développement de modèles personnalisés est de suivreExemples de boîte à outils Neptune MLpour structurer et rédiger votre module de formation. La boîte à outils Neptune ML implémente également des composants de modèle ML de graphe modulaire dans leModelzooque vous pouvez empiler et utiliser pour créer votre modèle personnalisé.

En outre, la boîte à outils fournit des fonctions utilitaires qui vous aident à générer les artefacts nécessaires lors de la formation du modèle et de la transformation du modèle. Vous pouvez importer ce package Python dans votre implémentation personnalisée. Toutes les fonctions ou modules fournis dans la boîte à outils sont également disponibles dans l'environnement de formation Neptune ML.

Si votre module Python comporte des dépendances externes supplémentaires, vous pouvez inclure ces dépendances supplémentaires en créant unrequirements.txtdans le répertoire de votre module. Les paquets répertoriés dans lerequirements.txtsera ensuite installé avant l'exécution de votre script d'entraînement.

Au minimum, le module Python qui implémente votre modèle personnalisé doit contenir les éléments suivants :

  • Un point d'entrée de script de formation

  • Un point d'entrée de script de transformation

  • Un fichier model-hpo-configuration.json

Développement de scripts de formation de modèles personnalisés dans Neptune ML

Votre script de formation sur modèle personnalisé doit être un script Python exécutable tel que celui de la boîte à outils Neptune MLtrain.pyExemple d' d' Il doit accepter les noms et les valeurs des hyperparamètres comme arguments de ligne de commande. Pendant l'entraînement au modèle, les noms des hyperparamètres sont obtenus à partir dumodel-hpo-configuration.jsondans le fichier. Les valeurs des hyperparamètres se situent dans la plage d'hyperparamètres valide si l'hyperparamètre est ajustable, ou prennent la valeur de l'hyperparamètre par défaut s'il n'est pas ajustable.

Votre script d'entraînement est exécuté sur une instance de formation SageMaker à l'aide d'une syntaxe comme celle-ci :

python3 (script entry point) --(1st parameter) (1st value) --(2nd parameter) (2nd value) (...)

Pour toutes les tâches, Neptune ML AutoTrainer envoie plusieurs paramètres requis à votre script d'entraînement en plus des hyperparamètres que vous spécifiez, et votre script doit pouvoir gérer ces paramètres supplémentaires pour fonctionner correctement.

Ces paramètres supplémentaires requis varient quelque peu selon les tâches :

Pour la classification des noeuds ou la régression de

  • task— Type de tâche utilisé en interne par Neptune ML. Pour la classification des nœuds, c'estnode_class, et pour la régression des nœuds, c'estnode_regression.

  • model— Le nom du modèle utilisé en interne par Neptune ML, qui estcustomdans ce cas.

  • name— Le nom de la tâche utilisée en interne par Neptune ML, qui estnode_class-custompour la classification des nœuds dans ce cas, etnode_regression-custompour la régression des nœuds.

  • target_ntype— Nom du type de nœud pour la classification ou la régression.

  • property— Nom de la propriété noeud pour la classification ou la régression.

Pour la prévision des liens

  • task— Type de tâche utilisé en interne par Neptune ML. Pour la prédiction des liens, c'estlink_predict.

  • model— Le nom du modèle utilisé en interne par Neptune ML, qui estcustomdans ce cas.

  • name— Le nom de la tâche utilisée en interne par Neptune ML, qui estlink_predict-customdans ce cas.

Pour la classification des tronçons ou la régression de tron

  • task— Type de tâche utilisé en interne par Neptune ML. Pour la classification des périphériques, il s'agitedge_class, et pour la régression des arêtes, c'estedge_regression.

  • model— Le nom du modèle utilisé en interne par Neptune ML, qui estcustomdans ce cas.

  • name— Le nom de la tâche utilisée en interne par Neptune ML, qui estedge_class-custompour la classification des tronçons dans ce cas, etedge_regression-custompour la régression des arêtes.

  • target_etype— Nom du type d'arête pour la classification ou la régression.

  • property— Nom de la propriété Edge pour la classification ou la régression.

Votre script doit enregistrer les paramètres du modèle, ainsi que tous les autres artefacts nécessaires à la fin de l'entraînement.

Vous pouvez utiliser les fonctions de l'utilitaire Neptune ML Toolkit pour déterminer l'emplacement des données de graphe traitées, l'emplacement où les paramètres du modèle doivent être enregistrés et les périphériques GPU disponibles sur l'instance de formation. Consulteztrain.pyexemple de script de formation pour des exemples d'utilisation de ces fonctions utilitaires.

Développement de scripts de transformation de modèles personnalisés dans Neptune ML

Un script de transformation est nécessaire pour profiter du Neptune MLworkflow incrémentielpour l'inférence du modèle sur les graphiques évolutifs sans recycrer le modèle. Même si tous les artefacts nécessaires au déploiement du modèle sont générés par le script d'entraînement, vous devez toujours fournir un script de transformation si vous souhaitez générer des modèles mis à jour sans recycler le modèle.

Votre script de transformation de modèle personnalisé doit être un script Python exécutable comme celui de la boîte à outils Neptune MLtransform.pyexemple de script. Étant donné que ce script est appelé pendant l'entraînement au modèle sans argument de ligne de commande, tous les arguments de ligne de commande acceptés par le script doivent comporter des valeurs par défaut.

Le script s'exécute sur une instance de formation SageMaker avec une syntaxe comme celle-ci :

python3 (your transform script entry point)

Votre script de transformation nécessitera diverses informations, telles que :

  • Emplacement des données de graphe traitées.

  • Emplacement où les paramètres du modèle sont enregistrés et où les nouveaux artefacts de modèle doivent être enregistrés.

  • Les appareils disponibles sur l'instance.

  • Les hyperparamètres qui ont généré le meilleur modèle.

Ces entrées sont obtenues à l'aide des fonctions utilitaires Neptune ML que votre script peut appeler. Voir l'exemple de la boîte à outilstransform.pypour obtenir un exemple de la façon de procéder.

Le script doit enregistrer les incorporations de nœuds, les mappages d'ID de nœud et tous les autres artefacts nécessaires au déploiement de modèles pour chaque tâche. Consultezdocumentation sur les artefacts de modèlespour plus d'informations sur les artefacts de modèle requis pour différentes tâches Neptune ML.

Personnaliséemodel-hpo-configuration.jsonfichier dans Neptune ML

Lemodel-hpo-configuration.jsondéfinit les hyperparamètres de votre modèle personnalisé. C'est la même choseformatcomme lemodel-hpo-configuration.jsonutilisé avec les modèles intégrés de Neptune ML, et prévaut sur la version générée automatiquement par Neptune ML et téléchargée à l'emplacement de vos données traitées.

Lorsque vous ajoutez un nouvel hyperparamètre à votre modèle, vous devez également ajouter une entrée pour l'hyperparamètre dans ce fichier afin que l'hyperparamètre soit transmis à votre script d'entraînement.

Vous devez fournir une plage pour un hyperparamètre si vous souhaitez qu'il soit ajustable, et le définir en tant que paramètretier-1,tier-2, outier-3param. L'hyperparamètre sera réglé si le nombre total de tâches d'entraînement configurées permet de régler les hyperparamètres dans son niveau. Pour un paramètre non ajustable, vous devez fournir une valeur par défaut et ajouter l'hyperparamètre au paramètrefixed-paramdu fichier. Voir l'exemple de la boîte à outilséchantillonmodel-hpo-configuration.jsonfichierpour obtenir un exemple de la façon de procéder.

Vous devez également fournir la définition de mesure que le travail SageMaker HyperParameter Optimization utilisera pour évaluer les modèles candidats formés. Pour ce faire, vous ajoutez uneval_metricObjet JSON vers lemodel-hpo-configuration.jsonfichier comme celui-ci :

"eval_metric": { "tuning_objective": { "MetricName": "(metric_name)", "Type": "Maximize" }, "metric_definitions": [ { "Name": "(metric_name)", "Regex": "(metric regular expression)" } ] },

Lemetric_definitionsdans le tableaueval_metricobjet répertorie les objets de définition de mesure pour chaque mesure que SageMaker doit extraire de l'instance de formation. Chaque objet de définition de mesure possède unNamequi vous permet de fournir un nom pour la mesure (par exemple « précision », « f1", etc.)Regexpermet de fournir une chaîne d'expression régulière qui correspond à la façon dont cette mesure particulière est imprimée dans les journaux d'entraînement. ConsultezPage Réglage HyperParameter SageMakerpour en savoir plus sur la façon de définir les mesures.

Letuning_objectiveobjet danseval_metricvous permet ensuite de spécifier quelles mesures dansmetric_definitionsdoit être utilisée comme mesure d'évaluation qui sert de mesure objective pour l'optimisation des hyperparamètres. La valeur de l'MetricNamedoit correspondre à la valeur d'unNamedans l'une des définitions demetric_definitions. La valeur deTypedevrait être soit « Maximiser » ou « Minimiser » selon que la mesure doit être interprétée comme étant plus grande est meilleure (comme « précision ») ou moins est meilleure (comme « erreur moyenne carrée »).

Erreurs dans cette section dumodel-hpo-configuration.jsonpeut entraîner des échecs de la tâche API de formation au modèle Neptune ML, car le travail SageMaker HyperParameter Tuning ne pourra pas sélectionner le meilleur modèle.

Test local de l'implémentation de votre modèle personnalisé dans Neptune ML

Vous pouvez utiliser l'environnement Conda Neptune ML Toolkit pour exécuter votre code localement afin de tester et de valider votre modèle. Si vous développez sur une instance Neptune Notebook, cet environnement Conda sera préinstallé sur l'instance Neptune Notebook. Si vous développez sur une autre instance, vous devez suivre leinstructions de configuration localesdans la boîte à outils Neptune ML.

L'environnement Conda reproduit avec précision l'environnement dans lequel votre modèle sera exécuté lorsque vous appelez leAPI de formation de modèle. Tous les exemples de scripts de formation et de transformation vous permettent de passer une ligne de commande.--localpour exécuter les scripts dans un environnement local pour faciliter le débogage. Il s'agit d'une bonne pratique lors du développement de votre propre modèle, car il vous permet de tester de manière interactive et itérative l'implémentation de votre modèle. Lors de la formation au modèle dans l'environnement de formation de production Neptune ML, ce paramètre est omis.