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.
Personnalisation des configurations d'hyperparamètres du modèle dans Neptune ML
Lorsque vous démarrez une tâche de formation de modèles Neptune ML, Neptune ML utilise automatiquement les informations déduites de la tâche de traitement de données précédente. Il utilise ces informations pour générer des plages de configuration d'hyperparamètres qui sont utilisées pour créer une tâche de réglage desSageMaker hyperparamètres afin d'entraîner plusieurs modèles pour votre tâche. Ainsi, vous n'avez pas à spécifier une longue liste de valeurs d'hyperparamètres pour les modèles à utiliser pour l'entraînement. Au lieu de cela, les plages d'hyperparamètres et les valeurs par défaut du modèle sont sélectionnées en fonction du type de tâche, du type de graphique et des paramètres de la tâche de réglage.
Toutefois, vous pouvez également remplacer la configuration des hyperparamètres par défaut et fournir des hyperparamètres personnalisés en modifiant un fichier de configuration JSON généré par la tâche de traitement des données.
À l'aide de l'API Neptune ML ModelTraining, vous pouvez contrôler plusieurs paramètres de haut niveau des tâches de réglage des hyperparamètresmaxHPONumberOfTrainingJobs
, tels quemaxHPOParallelTrainingJobs
, ettrainingInstanceType
. Pour un contrôle plus précis des hyperparamètres du modèle, vous pouvez personnaliser lemodel-HPO-configuration.json
fichier généré par la tâche de traitement des données. Le fichier est enregistré dans l'emplacement Amazon S3 que vous avez spécifié pour la sortie de la tâche de traitement.
Vous pouvez télécharger le fichier, le modifier pour remplacer les configurations d'hyperparamètres par défaut et le charger à nouveau vers le même emplacement Amazon S3. Ne modifiez pas le nom du fichier et veillez à suivre ces instructions lorsque vous le modifiez.
Pour télécharger le fichier à partir d'Amazon S3 :
aws s3 cp \ s3://
(bucket name)
/(path to output folder)
/model-HPO-configuration.json \ ./
Lorsque vous avez terminé les modifications, rechargez le fichier là où il se trouvait :
aws s3 cp \ model-HPO-configuration.json \ s3://
(bucket name)
/(path to output folder)
/model-HPO-configuration.json
Structure dumodel-HPO-configuration.json
dossier
Lemodel-HPO-configuration.json
fichier spécifie le modèle à entraîner, l'apprentissage automatiquetask_type
et les hyperparamètres qui doivent être modifiés ou corrigés pour les différents cycles d'entraînement du modèle.
Les hyperparamètres sont classés comme appartenant à différents niveaux, ce qui indique la priorité accordée aux hyperparamètres lorsque la tâche de réglage des hyperparamètres est appelée :
Les hyperparamètres de niveau 1 ont la priorité la plus élevée. Si vous définissez une valeur inférieure
maxHPONumberOfTrainingJobs
à 10, seuls les hyperparamètres de niveau 1 sont ajustés et les autres prennent leurs valeurs par défaut.Les hyperparamètres de niveau 2 ont une priorité plus faible. Par conséquent, si vous avez plus de 10 mais moins de 50 tâches d'entraînement au total pour une tâche de réglage, les hyperparamètres de niveau 1 et de niveau 2 sont ajustés.
Les hyperparamètres de niveau 3 sont ajustés conjointement avec les niveaux 1 et 2 uniquement si vous avez plus de 50 tâches de formation au total.
Enfin, les hyperparamètres fixes ne sont pas du tout ajustés et prennent toujours leurs valeurs par défaut.
Exemple demodel-HPO-configuration.json
fichier
Voici un exemple demodel-HPO-configuration.json
fichier :
{ "models": [ { "model": "rgcn", "task_type": "node_class", "eval_metric": { "metric": "acc" }, "eval_frequency": { "type": "evaluate_every_epoch", "value": 1 }, "1-tier-param": [ { "param": "num-hidden", "range": [16, 128], "type": "int", "inc_strategy": "power2" }, { "param": "num-epochs", "range": [3,30], "inc_strategy": "linear", "inc_val": 1, "type": "int", "node_strategy": "perM" }, { "param": "lr", "range": [0.001,0.01], "type": "float", "inc_strategy": "log" } ], "2-tier-param": [ { "param": "dropout", "range": [0.0,0.5], "inc_strategy": "linear", "type": "float", "default": 0.3 }, { "param": "layer-norm", "type": "bool", "default": true } ], "3-tier-param": [ { "param": "batch-size", "range": [128, 4096], "inc_strategy": "power2", "type": "int", "default": 1024 }, { "param": "fanout", "type": "int", "options": [[10, 30],[15, 30], [15, 30]], "default": [10, 15, 15] }, { "param": "num-layer", "range": [1, 3], "inc_strategy": "linear", "inc_val": 1, "type": "int", "default": 2 }, { "param": "num-bases", "range": [0, 8], "inc_strategy": "linear", "inc_val": 2, "type": "int", "default": 0 } ], "fixed-param": [ { "param": "concat-node-embed", "type": "bool", "default": true }, { "param": "use-self-loop", "type": "bool", "default": true }, { "param": "low-mem", "type": "bool", "default": true }, { "param": "l2norm", "type": "float", "default": 0 } ] } ] }
Éléments d'unmodel-HPO-configuration.json
fichier
Le fichier contient un objet JSON avec un seul tableau de niveau supérieur nommémodels
qui contient un seul objet de configuration de modèle. Lorsque vous personnalisez le fichier, assurez-vous que lemodels
tableau ne contient qu'un seul objet de configuration de modèle. Si votre fichier contient plusieurs objets de configuration de modèle, la tâche de réglage échouera et un avertissement s'affichera.
L'objet de configuration du modèle contient les éléments de niveau supérieur suivants :
-
model
— (Chaîne) Type de modèle à entraîner (à ne pas modifier). Les valeurs valides sont :"rgcn"
— Il s'agit de la valeur par défaut pour les tâches de classification et de régression de nœuds, ainsi que pour les tâches de prédiction de liens hétérogènes."transe"
— Il s'agit de la valeur par défaut pour les tâches de prédiction de liens KGE."distmult"
— Il s'agit d'un type de modèle alternatif pour les tâches de prédiction de liens KGE."rotate"
— Il s'agit d'un type de modèle alternatif pour les tâches de prédiction de liens KGE.
En règle générale, ne modifiez pas directement la
model
valeur, car les différents types de modèles ont souvent des hyperparamètres applicables très différents, ce qui peut entraîner une erreur d'analyse après le début de la tâche d'apprentissage.Pour modifier le type de modèle, utilisez le
modelName
paramètre dans l'API ModelTraining plutôt que de le modifier dans lemodel-HPO-configuration.json
fichier.Pour modifier le type de modèle et apporter des modifications précises aux hyperparamètres, vous pouvez copier le modèle de configuration du modèle par défaut pour le modèle que vous souhaitez utiliser et le coller dans le
model-HPO-configuration.json
fichier. Il existe un dossier nomméhpo-configuration-templates
dans le même emplacement Amazon S3 que lemodel-HPO-configuration.json
fichier si le type de tâche déduit prend en charge plusieurs modèles. Ce dossier contient toutes les configurations d'hyperparamètres par défaut pour les autres modèles applicables à la tâche.Par exemple, si vous souhaitez modifier les configurations du modèle et des hyperparamètres pour une tâche de
KGE
prédiction de liens dutranse
modèle par défaut à undistmult
modèle, il vous suffit de coller le contenu duhpo-configuration-templates/distmult.json
fichier dans lemodel-HPO-configuration.json
fichier, puis de modifier les hyperparamètres si nécessaire.Note
Si vous définissez le
modelName
paramètre dans l'modelTraining
API et que vous modifiez également lamodel
spécification de l'hyperparamètre dans lemodel-HPO-configuration.json
fichier, et que ces spécifications sont différentes, lamodel
valeur dumodel-HPO-configuration.json
fichier est prioritaire et elle est ignorée.modelName
-
task_type
— (Chaîne) Type de tâche d'apprentissage automatique déduit ou transmis directement à la tâche de traitement des données (à ne pas modifier). Les valeurs valides sont :"node_class"
"node_regression"
"link_prediction"
La tâche de traitement des données déduit le type de tâche en examinant le jeu de données exporté et le fichier de configuration de la tâche d'apprentissage généré pour les propriétés du jeu de données.
Cette valeur ne doit pas être modifiée. Si vous souhaitez entraîner une autre tâche, vous devez exécuter une nouvelle tâche de traitement des données. Si la
task_type
valeur ne correspond pas à vos attentes, vous devez vérifier les entrées de votre tâche de traitement des données pour vous assurer qu'elles sont correctes. Cela inclut les paramètres de l'modelTraining
API, ainsi que ceux du fichier de configuration des tâches de formation généré par le processus d'exportation des données. -
eval_metric
— (Chaîne) La métrique d'évaluation doit être utilisée pour évaluer les performances du modèle et pour sélectionner le modèle le plus performant parmi les cycles HPO. Les valeurs valides sont :"acc"
— Précision de classification standard. Il s'agit de la valeur par défaut pour les tâches de classification à étiquette unique, sauf si des étiquettes déséquilibrées sont détectées lors du traitement des données, auquel cas c'est la valeur par défaut"F1"
."acc_topk"
— Le nombre de fois où l'étiquette correcte figure parmi les meilleuresk
prédictions. Vous pouvez également définir la valeurk
en la transmettant entopk
tant que clé supplémentaire."F1"
— Le score de F1. "mse"
— Mesure d'erreur quadratiquemoyenne, pour les tâches de régression. "precision"
— La précision du modèle, calculée comme le rapport entre les vrais positifs et les positifs prédits := true-positives / (true-positives + false-positives)
."recall"
— Le rappel du modèle, calculé comme le rapport entre les vrais positifs et les positifs réels := true-positives / (true-positives + false-negatives)
."roc_auc"
— La zone située sous la courbe ROC. Il s'agit de la valeur par défaut pour la classification multiétiquette.
Par exemple, pour remplacer la métrique par
F1
, modifiez laeval_metric
valeur comme suit :" eval_metric": { "metric": "F1", },
Ou, pour remplacer la métrique par un score de
topk
précision, procédezeval_metric
comme suit :"eval_metric": { "metric": "acc_topk", "topk": 2 },
-
eval_frequency
— (Objet) Spécifie à quelle fréquence, pendant l'entraînement, les performances du modèle sur le jeu de validation doivent être vérifiées. Sur la base des performances de validation, un arrêt anticipé peut ensuite être lancé et le meilleur modèle peut être enregistré.L'
eval_frequency
objet contient deux éléments, à savoir"type"
et"value"
. Par exemple :"eval_frequency": { "type": "evaluate_every_pct", "value": 0.1 },
type
Les valeurs valides sont les suivantes :-
evaluate_every_pct
— Spécifie le pourcentage de formation à terminer pour chaque évaluation.En
evaluate_every_pct
effet, le"value"
champ contient un nombre à virgule flottante compris entre zéro et un qui exprime ce pourcentage. -
evaluate_every_batch
— Spécifie le nombre de lots d'entraînement à effectuer pour chaque évaluation.Car
evaluate_every_batch
, le"value"
champ contient un entier qui exprime ce nombre de lots. -
evaluate_every_epoch
— Spécifie le nombre d'époques par évaluation, une nouvelle époque commençant à minuit.Car
evaluate_every_epoch
, le"value"
champ contient un entier qui exprime ce nombre d'époques.
Le paramètre par défaut pour
eval_frequency
est le suivant :"eval_frequency": { "type": "evaluate_every_epoch", "value": 1 },
-
-
1-tier-param
— (Obligatoire) Tableau d'hyperparamètres de niveau 1.Si vous ne souhaitez régler aucun hyperparamètre, vous pouvez le définir sur un tableau vide. Cela n'affecte pas le nombre total de tâches d'entraînement lancées par la tâche de réglage de l' SageMaker hyperparamètre. Cela signifie simplement que toutes les tâches de formation, s'il y en a plus d'une mais moins de 10, s'exécuteront avec le même ensemble d'hyperparamètres.
D'un autre côté, si vous souhaitez traiter tous vos hyperparamètres réglables avec la même importance, vous pouvez placer tous les hyperparamètres dans ce tableau.
-
2-tier-param
— (Obligatoire) Tableau d'hyperparamètres de niveau 2.Ces paramètres ne sont ajustés que
maxHPONumberOfTrainingJobs
s'ils ont une valeur supérieure à 10. Dans le cas contraire, elles sont fixées aux valeurs par défaut.Si vous disposez d'un budget de formation d'au plus 10 tâches d'entraînement ou si vous ne souhaitez pas d'hyperparamètres de niveau 2 pour une autre raison, mais que vous souhaitez régler tous les hyperparamètres réglables, vous pouvez définir ce tableau sur un tableau vide.
-
3-tier-param
— (Obligatoire) Tableau d'hyperparamètres de niveau 3.Ces paramètres ne sont ajustés que
maxHPONumberOfTrainingJobs
s'ils ont une valeur supérieure à 50. Dans le cas contraire, elles sont fixées aux valeurs par défaut.Si vous ne souhaitez pas d'hyperparamètres de niveau 3, vous pouvez définir ce tableau sur un tableau vide.
-
fixed-param
— (Obligatoire) Un ensemble d'hyperparamètres fixes qui ne prennent que leurs valeurs par défaut et ne varient pas selon les tâches d'entraînement.Si vous souhaitez faire varier tous les hyperparamètres, vous pouvez définir un tableau vide et soit définir une valeur suffisamment
maxHPONumberOfTrainingJobs
grande pour faire varier tous les niveaux, soit définir tous les hyperparamètres comme étant de niveau 1.
L'objet JSON qui représente chaque hyperparamètre dans1-tier-param
2-tier-param
,3-tier-param
, etfixed-param
contient les éléments suivants :
-
param
— (Chaîne) Le nom de l'hyperparamètre (ne pas modifier).Consultez la liste des noms d'hyperparamètres valides dans Neptune ML.
-
type
— (Chaîne) Type d'hyperparamètre (ne pas modifier).Les types valides sont :
bool
int
, etfloat
. -
default
— (String) La valeur par défaut de l'hyperparamètre.Vous pouvez définir une nouvelle valeur par défaut.
Les hyperparamètres réglables peuvent également contenir les éléments suivants :
-
range
— (Array) La plage d'un hyperparamètre réglable en continu.Il doit s'agir d'un tableau avec deux valeurs, à savoir le minimum et le maximum de la plage (
[min, max]
). -
options
— (Array) Les options pour un hyperparamètre réglable catégoriel.Ce tableau doit contenir toutes les options à prendre en compte :
"options" : [value1, value2, ... valuen]
-
inc_strategy
— (Chaîne) Type de modification incrémentielle pour les plages d'hyperparamètres réglables en continu (ne pas modifier).Les valeurs valides sont
log
,linear
etpower2
. Cela s'applique uniquement lorsque la touche de plage est définie.Si vous le modifiez, vous risquez de ne pas utiliser toute la plage de votre hyperparamètre pour le réglage.
-
inc_val
— (Float) La différence entre les incréments successifs pour des hyperparamètres réglables continus (ne pas modifier).Cela s'applique uniquement lorsque la touche de plage est définie.
Si vous le modifiez, vous risquez de ne pas utiliser toute la plage de votre hyperparamètre pour le réglage.
-
node_strategy
— (Chaîne) Indique que la plage effective pour cet hyperparamètre doit changer en fonction du nombre de nœuds du graphe (ne pas modifier).Les valeurs valides sont
"perM"
(par million),"per10M"
(par 10 millions) et"per100M"
(par 100 millions).Plutôt que de modifier cette valeur, modifiez
range
plutôt le. -
edge_strategy
— (Chaîne) Indique que la plage effective pour cet hyperparamètre doit changer en fonction du nombre d'arêtes du graphique (ne pas modifier).Les valeurs valides sont
"perM"
(par million),"per10M"
(par 10 millions) et"per100M"
(par 100 millions).Plutôt que de modifier cette valeur, modifiez
range
plutôt le.
Liste de tous les hyperparamètres de Neptune ML
La liste suivante contient tous les hyperparamètres qui peuvent être définis n'importe où dans Neptune ML, quel que soit le type de modèle et la tâche. Comme ils ne s'appliquent pas tous à tous les types de modèles, il est important de définir uniquement les hyperparamètres dans lemodel-HPO-configuration.json
fichier qui apparaissent dans le modèle du modèle que vous utilisez.
-
batch-size
— La taille du lot de nœuds cibles utilisés en une seule passe directe. Type :int
.Si vous définissez cette valeur sur une valeur beaucoup plus élevée, cela peut entraîner des problèmes de mémoire lors de l'entraînement sur les instances GPU.
-
concat-node-embed
— Indique s'il faut obtenir la représentation initiale d'un nœud en concaténant ses caractéristiques traitées avec des incorporations de nœuds initiales apprises afin d'augmenter l'expressivité du modèle. Type :bool
. -
dropout
— La probabilité de perte appliquée aux couches de décrochage. Type :float
. -
edge-num-hidden
— Taille de la couche masquée ou nombre d'unités pour le module d'entités de périphérie. Utilisé uniquement lorsque leuse-edge-features
paramètre est réglé surTrue
. Type : flotteur -
enable-early-stop
— Indique s'il faut ou non utiliser la fonction d'arrêt anticipé. Type :bool
. Par défaut :true
.Utilisez ce paramètre booléen pour désactiver la fonction d'arrêt anticipé.
-
fanout
— Nombre de voisins à échantillonner pour un nœud cible lors de l'échantillonnage de voisins. Type :int
.Cette valeur est étroitement associée au même niveau d'hyperparamètres
num-layers
et doit toujours se trouver dans le même niveau d'hyperparamètres. Cela est dû au fait que vous pouvez spécifier une sortie de ventilation pour chaque couche GNN potentielle.Étant donné que cet hyperparamètre peut entraîner de fortes variations des performances du modèle, il doit être corrigé ou défini en tant qu'hyperparamètre de niveau 2 ou de niveau 3. Sa définition sur une valeur élevée peut entraîner des problèmes de mémoire lors de l'entraînement sur une instance GPU.
-
gamma
— La valeur de marge dans la fonction de score. Type :float
.Cela s'applique uniquement aux modèles de
KGE
prédiction de liens. -
l2norm
— La valeur de perte de poids utilisée dans l'optimiseur qui impose une pénalité de normalisation L2 aux poids. Type :bool
. -
layer-norm
— Indique s'il faut utiliser la normalisation des couches pour lesrgcn
modèles. Type :bool
. -
low-mem
— Indique s'il faut utiliser une implémentation à faible mémoire de la fonction de transmission de messages relationnels au détriment de la vitesse. Type :bool
. -
lr
— Le taux d'apprentissage. Type :float
.Cela doit être défini comme un hyperparamètre de niveau 1.
-
neg-share
— Dans la prédiction des liens, indique si les arêtes échantillonnées positives peuvent partager des échantillons d'arêtes négatives. Type :bool
. -
num-bases
— Nombre de bases pour la décomposition des bases dans unrgcn
modèle. L'utilisation d'num-bases
une valeur inférieure au nombre de types d'arêtes dans le graphique agit comme un régularisateur pour lergcn
modèle. Type :int
. -
num-epochs
— Le nombre d'époques d'entraînement pour courir. Type :int
.Une époque est un passage d'entraînement complet à travers le graphique.
-
num-hidden
— La taille de la couche masquée ou le nombre d'unités. Type :int
.Cela définit également la taille d'intégration initiale pour les nœuds sans fonctionnalités.
Si vous définissez cette valeur sur une valeur beaucoup plus élevée sans la réduire, cela
batch-size
peut entraîner out-of-memory des problèmes d'entraînement sur une instance GPU. -
num-layer
— Nombre de couches GNN dans le modèle. Type :int
.Cette valeur est étroitement associée au paramètre fanout et doit apparaître une fois que fanout a été défini dans le même niveau d'hyperparamètres.
Comme cela peut entraîner de fortes variations des performances du modèle, il convient de le corriger ou de le définir en tant qu'hyperparamètre de niveau 2 ou de niveau 3.
-
num-negs
— Dans la prédiction de liens, le nombre d'échantillons négatifs par échantillon positif. Type :int
. -
per-feat-name-embed
— Indique s'il faut intégrer chaque fonction en la transformant indépendamment avant de combiner les fonctionnalités. Type :bool
.Lorsque ce paramètre est défini sur
true
, chaque entité par nœud est transformée indépendamment vers une taille de dimension fixe avant que toutes les entités transformées pour le nœud ne soient concaténées puis transformées ennum_hidden
dimension.Lorsque ce paramètre est défini sur
false
, les entités sont concaténées sans aucune transformation spécifique aux entités. -
regularization-coef
— Dans la prédiction des liens, le coefficient de perte de régularisation. Type :float
. -
rel-part
— Indique s'il faut utiliser la partition de relations pour la prédiction desKGE
liens. Type :bool
. -
sparse-lr
— Le taux d'apprentissage pour les intégrations de nœuds apprenables. Type :float
.Les intégrations de nœuds initiales apprises sont utilisées pour les nœuds sans fonctionnalités ou dont la date
concat-node-embed
est définie. Les paramètres de la couche d'intégration de nœuds apprenantes clairsemés sont entraînés à l'aide d'un optimiseur distinct qui peut avoir un taux d'apprentissage distinct. -
use-class-weight
— Indique s'il faut appliquer des pondérations de classe aux tâches de classification déséquilibrées. S'il est défini surtrue
, le nombre d'étiquettes est utilisé pour définir un poids pour chaque étiquette de classe. Type :bool
. -
use-edge-features
— Indique s'il faut utiliser les fonctionnalités périphériques lors de la transmission des messages. Si ce paramètre est défini surtrue
, un module d'entités de bordure personnalisé est ajouté à la couche RGCN pour les types d'arêtes comportant des entités. Type :bool
. -
use-self-loop
— Indique s'il faut inclure des boucles automatiques lors de l'entraînement d'unrgcn
modèle. Type :bool
. -
window-for-early-stop
— Contrôle la moyenne du nombre de derniers scores de validation pour décider d'un arrêt anticipé. Le valeur par défaut est 3. type=int. Voir aussi Arrêt anticipé du processus de formation des modèles dans Neptune ML. Type :int
. Par défaut :3
.Consultez .
Personnalisation des hyperparamètres dans Neptune ML
Lorsque vous modifiez lemodel-HPO-configuration.json
fichier, les types de modifications les plus courants sont les suivants :
Modifiez les valeurs minimale et/ou maximale des
range
hyperparamètres.Attribuez à un hyperparamètre une valeur fixe en le déplaçant vers la
fixed-param
section et en définissant sa valeur par défaut sur la valeur fixe que vous souhaitez qu'il prenne.Modifiez la priorité d'un hyperparamètre en le plaçant dans un niveau particulier, en modifiant sa plage et en vous assurant que sa valeur par défaut est correctement définie.