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èle personnalisé dans Neptune ML
Une bonne manière de démarrer le développement de modèle personnalisé consiste à suivre les exemples de la boîte à outils Neptune ML
En outre, la boîte à outils fournit des fonctions utilitaires qui vous aident à générer les artefacts nécessaires pendant l'entraînement de modèle et la transformation de modèle. Vous pouvez importer ce package Python dans votre implémentation personnalisée. Toutes les fonctions ou tous les modules fournis dans la boîte à outils sont également disponibles dans l'environnement d'entraînement Neptune ML.
Si votre module Python possède des dépendances externes supplémentaires, vous pouvez les inclure en créant un fichier requirements.txt
dans le répertoire de votre module. Les packages répertoriés dans le fichier requirements.txt
seront ensuite installés 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 d'entraînement
Un point d'entrée de script de transformation
Un fichier
model-hpo-configuration.json
Développement d'un script d'entraînement de modèle personnalisé dans Neptune ML
Votre script d'entraînement de modèle personnalisé doit être un script Python exécutable, comme l'exemple train.py
model-hpo-configuration.json
. Les valeurs des hyperparamètres se situent dans la plage des hyperparamètres valides si l'hyperparamètre est réglable, ou prennent la valeur d'hyperparamètre par défaut s'il n'est pas réglable.
Votre script d'entraînement est exécuté sur une instance d'entraînement SageMaker en utilisant 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 être capable de gérer ces paramètres supplémentaires pour fonctionner correctement.
Ces paramètres obligatoires supplémentaires varient quelque peu en fonction de la tâche :
Pour la classification de nœud ou la régression de nœud
-
task
: type de tâche utilisé en interne par Neptune ML. Pour la classification de nœud, il s'agit denode_class
et, pour la régression de nœud, il s'agit denode_regression
. -
model
: nom du modèle utilisé en interne par Neptune ML, à savoircustom
dans ce cas. -
name
: nom de la tâche utilisée en interne par Neptune ML, à savoirnode_class-custom
pour la classification de nœud dans ce cas, etnode_regression-custom
pour la régression de nœud. -
target_ntype
: nom du type de nœud pour la classification ou la régression. -
property
: nom de la propriété de nœud pour la classification ou la régression.
Pour la prédiction de lien
-
task
: type de tâche utilisé en interne par Neptune ML. Pour la prédiction de lien, il s'agit delink_predict
. -
model
: nom du modèle utilisé en interne par Neptune ML, à savoircustom
dans ce cas. -
name
: nom de la tâche utilisée en interne par Neptune ML, à savoirlink_predict-custom
dans ce cas.
Pour la classification d'arête ou la régression d'arête
-
task
: type de tâche utilisé en interne par Neptune ML. Pour la classification d'arête, il s'agit deedge_class
et, pour la régression d'arête, il s'agit deedge_regression
. -
model
: nom du modèle utilisé en interne par Neptune ML, à savoircustom
dans ce cas. -
name
: nom de la tâche utilisée en interne par Neptune ML, à savoiredge_class-custom
pour la classification d'arête dans ce cas, etedge_regression-custom
pour la régression d'arête. -
target_etype
: nom du type d'arête pour la classification ou la régression. -
property
: nom de la propriété d'arête pour la classification ou la régression.
Votre script doit enregistrer les paramètres du modèle, ainsi que tous les autres artefacts qui seront nécessaires à la fin de l'entraînement.
Vous pouvez utiliser les fonctions utilitaires de la boîte à outils Neptune ML pour déterminer l'emplacement des données de graphe traitées, l'emplacement où les paramètres de modèle doivent être enregistrés et les périphériques GPU disponibles sur l'instance d'entraînement. Consultez l'exemple de script d'entraînement train.py
Développement d'un script de transformation de modèle personnalisé dans Neptune ML
Un script de transformation est nécessaire pour tirer parti du flux de travail incrémentiel Neptune ML pour l'inférence de modèle sur des graphes évolutifs sans avoir à réentraîner le modèle. Même si tous les artefacts nécessaires au déploiement de modèle sont générés par le script d'entraînement, vous devez tout de même fournir un script de transformation si vous souhaitez générer des modèles mis à jour sans réentraîner le modèle.
Note
L'inférence inductive en temps réel n'est actuellement pas prise en charge pour les modèles personnalisés.
Votre script de transformation de modèle personnalisé doit être un script Python exécutable, comme l'exemple de script transform.py
Le script s'exécute sur une instance d'entraînement SageMaker avec une syntaxe similaire à celle-ci :
python3
(your transform script entry point)
Votre script de transformation aura besoin de diverses informations, telles que :
L'emplacement des données du graphe traité.
L'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. Consultez l'exemple de script transform.py
Le script doit enregistrer les intégrations de nœuds, les mappages d'ID de nœud et tous les autres artefacts nécessaires au déploiement du modèle pour chaque tâche. Consultez la documentation sur les artefacts de modèle pour plus d'informations sur les artefacts de modèle requis pour les différentes tâches Neptune ML.
Fichier model-hpo-configuration.json
personnalisé dans Neptune ML
Le fichier model-hpo-configuration.json
définit les hyperparamètres de votre modèle personnalisé. Il est au même format que le fichier model-hpo-configuration.json
utilisé avec les modèles intégrés de Neptune ML et il a priorité sur la version générée automatiquement par Neptune ML et 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 réglable et le définir en tant que paramètre tier-1
, tier-2
ou tier-3
. 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 de son niveau. Pour un paramètre non réglable, vous devez fournir une valeur par défaut et ajouter l'hyperparamètre dans la section fixed-param
du fichier. Consultez le fichier d'exemple model-hpo-configuration.json
Vous devez également fournir la définition de métrique que la tâche d'optimisation des hyperparamètres de SageMaker utilisera pour évaluer les modèles candidats entraînés. Pour ce faire, vous devez ajouter un objet JSON eval_metric
dans le fichier model-hpo-configuration.json
comme suit :
"eval_metric": { "tuning_objective": { "MetricName": "
(metric_name)
", "Type": "Maximize" }, "metric_definitions": [ { "Name": "(metric_name)
", "Regex": "(metric regular expression)
" } ] },
Le tableau metric_definitions
figurant dans l'objet eval_metric
répertorie les objets de définition de métrique pour chaque métrique que vous souhaitez que SageMaker extraie de l'instance d'entraînement. Chaque objet de définition de métrique possède une clé Name
qui vous permet de donner un nom à la métrique (par exemple « précision », « f1 », etc.). La clé Regex
vous permet de fournir une chaîne d'expression régulière correspondant à la manière dont cette métrique particulière est imprimée dans les journaux d'entraînement. Consultez la page de réglage des hyperparamètres SageMaker pour plus de détails sur la façon de définir les métriques.
L'objet tuning_objective
dans eval_metric
vous permet ensuite de spécifier quelle métrique de metric_definitions
doit être utilisée comme métrique d'évaluation servant de métrique d'objectif pour l'optimisation des hyperparamètres. La valeur de MetricName
doit correspondre à la valeur d'un élément Name
dans l'une des définitions de metric_definitions
. La valeur de Type
doit être « Maximiser » ou « Minimiser » selon qu'il faille interpréter la métrique comme « plus la valeur est grande, mieux c'est » (comme avec « précision ») ou comme « moins la valeur est grande, mieux c'est » (comme avec « erreur quadratique moyenne »).
Les erreurs contenues dans cette section du fichier model-hpo-configuration.json
peuvent entraîner des échecs de la tâche d'API d'entraînement de modèle Neptune ML, car la tâche de réglage des hyperparamètres SageMaker ne sera pas en mesure de 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 de la boîte à outils Neptune ML pour exécuter votre code localement afin de tester et de valider votre modèle. Si vous effectuez le développement sur une instance de bloc-notes Neptune, cet environnement Conda sera préinstallé sur l'instance de bloc-notes Neptune. Si vous effectuez le développement sur une autre instance, vous devez suivre les instructions de configuration locale
L'environnement Conda reproduit avec précision l'environnement dans lequel votre modèle sera exécuté lorsque vous appellerez l'API d'entraînement de modèle. Tous les exemples de scripts d'entraînement et de transformation vous permettent de transmettre un indicateur --local
de ligne de commande pour exécuter les scripts dans un environnement local afin de faciliter le débogage. Il s'agit d'une bonne pratique lors du développement de votre propre modèle, car cela vous permet de tester l'implémentation de votre modèle de manière interactive et itérative. Lors de l'entraînement de modèle dans l'environnement d'entraînement de production Neptune ML, ce paramètre est omis.