Personnalisation des configurations d'hyperparamètres de modèle 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.

Personnalisation des configurations d'hyperparamètres de modèle dans Neptune ML

Lorsque vous démarrez une tâche de formation au modèle Neptune ML, Neptune ML utilise automatiquement les informations déduites de la précédentetraitement des donnéestravail. Il utilise les informations pour générer des plages de configuration d'hyperparamètres utilisées pour créer unTâche de réglage des hyperparamètres SageMakerpour former plusieurs modèles pour votre tâche. De cette façon, il n'est pas nécessaire de spécifier une longue liste de valeurs d'hyperparamètres pour les modèles à entraîner. 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 le travail de traitement des données.

Utilisation du Neptune MLAPI ModelTraining, vous pouvez contrôler plusieurs paramètres de travail de réglage d'hyperparamètres de haut niveau tels quemaxHPONumberOfTrainingJobs,maxHPOParallelTrainingJobs, ettrainingInstanceType. Pour un contrôle plus précis des hyperparamètres du modèle, vous pouvez personnaliser lemodel-HPO-configuration.jsonfichier généré par le travail de traitement des données. Le fichier est enregistré à l'emplacement Amazon S3 que vous avez spécifié pour la sortie du travail de traitement.

Vous pouvez télécharger le fichier, le modifier pour remplacer les configurations d'hyperparamètres par défaut et le télécharger au même emplacement Amazon S3. Ne modifiez pas le nom du fichier et veillez à suivre ces instructions lors de la modification.

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é la modification, chargez 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.jsonfichier

Lemodel-HPO-configuration.jsonspécifie le modèle à former, le machine learningtask_typeet les hyperparamètres qui devraient être variés ou corrigés pour les différentes séries d'entraînement au modèle.

Les hyperparamètres sont classés comme appartenant à différents niveaux qui signifient la priorité donnée aux hyperparamètres lorsque le travail de réglage des hyperparamètres est invoqué :

  • Les hyperparamètres de niveau 1 ont la priorité la plus élevée. Si vous définissezmaxHPONumberOfTrainingJobsà une valeur inférieure à 10, seuls les hyperparamètres de niveau 1 sont réglés, et les autres prennent leurs valeurs par défaut.

  • Les hyperparamètres de niveau 2 ont une priorité inférieure. Par conséquent, si vous avez plus de 10 tâches d'entraînement mais moins de 50 tâches d'entraînement pour une tâche de réglage, les hyperparamètres de niveau 1 et de niveau 2 sont réglés.

  • Les hyperparamètres de niveau 3 sont réglés avec les niveaux 1 et 2 uniquement si vous avez plus de 50 postes de formation au total.

  • Enfin, les hyperparamètres fixes ne sont pas réglés du tout et prennent toujours leurs valeurs par défaut.

Exemple demodel-HPO-configuration.jsonfichier

Voici un exemplemodel-HPO-configuration.jsondans le 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": "global-norm", "type": "bool", "default": true } ], "3-tier-param": [ { "param": "batch-size", "range": [128, 4096], "inc_strategy": "power2", "type": "int", "default": 1024 }, { "param": "sparse-embedding", "type": "bool", "default": false }, { "param": "concat-node-embed", "type": "bool", "default": true }, { "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": [2, 8], "inc_strategy": "linear", "inc_val": 2, "type": "int", "default": 2 } ], "fixed-param": [ { "param": "layer-norm", "type": "bool", "default": false }, { "param": "use-self-loop", "type": "bool", "default": true }, { "param": "low-mem"o, "type": "bool", "default": true }, { "param": "l2norm", "type": "float", "default": 0 } ] } ] }

Éléments d'unemodel-HPO-configuration.jsonfichier

Le fichier contient un objet JSON avec un tableau de premier niveau nommémodelsqui contient un seul objet de configuration de modèle. Lorsque vous personnalisez le fichier, assurez-vous que lemodelsarray ne contient qu'un seul objet de configuration de modèle. Si votre fichier contient plusieurs objets de configuration de modèle, le travail de réglage échouera avec un avertissement.

L'objet Model-Configuration contient les éléments supérieurs suivants :

  • model— (Chaîne) Le type de modèle à former (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 des 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 lien KGE.

    • "distmult"— Il s'agit d'un autre type de modèle pour les tâches de prédiction de liaison KGE.

    • "rotate"— Il s'agit d'un autre type de modèle pour les tâches de prédiction de liaison KGE.

    En règle générale, ne modifiez pas directement lemodel, car les différents types de modèles ont souvent des hyperparamètres applicables sensiblement différents, ce qui peut entraîner une erreur d'analyse après le début de la tâche de formation.

    Pour modifier le type de modèle, utilisez lemodelNamedans le paramètreAPI ModelTrainingplutôt que de le modifier dans lemodel-HPO-configuration.jsondans le fichier.

    Une façon de modifier le type de modèle et d'effectuer des modifications d'hyperparamètres à grain fin consiste à copier le modèle de configuration de modèle par défaut du modèle que vous souhaitez utiliser et à le coller dans la zonemodel-HPO-configuration.jsondans le fichier. Il existe un dossier nomméhpo-configuration-templatesdans le même emplacement Amazon S3 que lemodel-HPO-configuration.jsonsi le type de tâche inféré prend en charge plusieurs modèles. Ce dossier contient toutes les configurations d'hyperparamètres par défaut des autres modèles applicables à la tâche.

    Par exemple, si vous voulez modifier le modèle et les configurations d'hyperparamètres pour unKGEtâche de prédiction de liens à partir de la tâche par défauttranseModèle à undistmult, collez simplement le contenu dehpo-configuration-templates/distmult.jsonfichier dans lemodel-HPO-configuration.jsonpuis modifiez les hyperparamètres si nécessaire.

    Note

    Si vous définissez le paramètremodelNamedans le paramètremodelTrainingAPI et modifiez également lamodelet la spécification des hyperparamètres dans lemodel-HPO-configuration.json, et ce sont différents, lemodelvaleur dans lemodel-HPO-configuration.jsonle fichier est prioritaire, et lemodelNameest ignorée.

  • task_type— (Chaîne) Le 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"

    Le travail 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 de formation généré pour les propriétés du jeu de données.

    Cette valeur ne doit pas être modifiée. Si vous souhaitez former une autre tâche, vous devezexécuter une nouvelle tâche de traitement de données. Si l'icônetask_typevaleur n'est pas ce que vous attendiez, 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 dumodelTrainingAPI, ainsi que dans le fichier de configuration de la tâche de formation généré par le processus d'exportation de données.

  • eval_metric— (Chaîne) La mesure d'évaluation doit être utilisée pour évaluer les performances du modèle et pour sélectionner le modèle le plus performant sur les séries 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, à moins que des étiquettes déséquilibrées ne soient détectées pendant le traitement des données, auquel cas la valeur par défaut est"F1".

    • "acc_topk"— Le nombre de fois où l'étiquette correcte figure dans la partie supérieurekprédictions. Vous pouvez également définir la valeurken passanttopkcomme clé supplémentaire.

    • "F1"— LeScore F1.

    • "mse"Mesure d'erreur moyenne au carré, pour les tâches de régression.

    • "mrr"Métrique moyenne de rang réciproque.

    • "precision"— La précision du modèle, calculée comme le rapport entre vrais positifs et positifs prédits := true-positives / (true-positives + false-positives).

    • "recall"— Le rappel du modèle, calculé comme le rapport entre vrais positifs et positifs réels := true-positives / (true-positives + false-negatives).

    • "roc_auc"— La zone située sous leCourbe ROC. Il s'agit de la classification par défaut à plusieurs étiquettes.

    Par exemple, pour modifier la mesure enF1, modifiez leeval_metricvaleur comme suit :

    " eval_metric": { "metric": "F1", },

    Ou, pour modifier la mesure en untopkscore de précision, vous changeriezeval_metriccomme 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. En fonction des performances de validation, l'arrêt anticipé peut ensuite être lancé et le meilleur modèle peut être enregistré.

    Leeval_frequencycontient deux éléments, à savoir"type"et"value". Par Exemple:

    "eval_frequency": { "type": "evaluate_every_pct", "value": 0.1 },

    ValidetypeLes valeurs sont les suivantes :

    • evaluate_every_pct— Spécifie le pourcentage de formation à terminer pour chaque évaluation.

      Pourevaluate_every_pct, le"value"contient un nombre à virgule flottante compris entre zéro et un qui exprime ce pourcentage.

    • evaluate_every_batch— Spécifie le nombre de lots de formation à terminer pour chaque évaluation.

      Pourevaluate_every_batch, le"value"contient un entier qui exprime ce nombre de lots.

    • evaluate_every_epoch— Spécifie le nombre d'époques par évaluation, où une nouvelle époque commence à minuit.

      Pourevaluate_every_epoch, le"value"contient un entier qui exprime ce nombre d'époques.

    Le paramètre par défaut poureval_frequencyc'est :

    "eval_frequency": { "type": "evaluate_every_epoch", "value": 1 },
  • 1-tier-param— (Obligatoire) Un 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 de formation lancées par le travail de réglage hyperparamètre SageMaker. Cela signifie simplement que toutes les tâches de formation, s'il y en a plus d'un mais moins de 10, seront exécutées avec le même ensemble d'hyperparamètres.

    D'autre part, si vous souhaitez traiter tous vos hyperparamètres accordables avec une signification égale, vous pouvez placer tous les hyperparamètres dans ce tableau.

  • 2-tier-param— (Obligatoire) Un tableau d'hyperparamètres de niveau 2.

    Ces paramètres ne sont réglés que simaxHPONumberOfTrainingJobsa une valeur supérieure à 10. Sinon, ils sont fixés aux valeurs par défaut.

    Si vous disposez d'un budget de formation d'au plus 10 tâches de formation 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) Un tableau d'hyperparamètres de niveau 3.

    Ces paramètres ne sont réglés que simaxHPONumberOfTrainingJobsa une valeur supérieure à 50. Sinon, ils sont fixés aux valeurs par défaut.

    Si vous ne voulez pas d'hyperparamètres de niveau 3, vous pouvez le définir sur un tableau vide.

  • fixed-param— (Obligatoire) Tableau d'hyperparamètres fixes qui prennent uniquement leurs valeurs par défaut et ne varient pas selon les tâches de formation.

    Si vous souhaitez modifier tous les hyperparamètres, vous pouvez définir ce tableau sur un tableau vide et définir la valeur demaxHPONumberOfTrainingJobsSuffisamment grand pour faire varier tous les niveaux ou créer tous les hyperparamètres de niveau 1.

L'objet JSON qui représente chaque hyperparamètre dans1-tier-param,2-tier-param,3-tier-param, etfixed-paramcontient les éléments suivants :

  • param— (Chaîne) Le nom de l'hyperparamètre (Ne changez pas).

    Consultezliste des noms d'hyperparamètres valides dans Neptune ML.

  • type— (Chaîne) Le type d'hyperparamètre (Ne changez pas).

    Les types valides sont :bool,int, etfloat.

  • default— (Chaîne) 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 comportant deux valeurs, à savoir le minimum et le maximum de la plage ([min, max]).

  • options— (Array) Les options d'un hyperparamètre ajustable de catégorie.

    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 changez pas).

    Les valeurs valides sont log, linear et power2. Cela s'applique uniquement lorsque la clé de plage est définie.

    Cette modification peut entraîner l'absence d'utilisation de la plage complète de votre hyperparamètre pour le réglage.

  • inc_val— (Float) La quantité par laquelle les incréments successifs diffèrent pour les hyperparamètres accordables continus (Ne changez pas).

    Cela s'applique uniquement lorsque la clé de plage est définie.

    Cette modification peut entraîner l'absence d'utilisation de la plage complète de votre hyperparamètre pour le réglage.

  • node_strategy— (Chaîne) Indique que la plage effective de cet hyperparamètre doit changer en fonction du nombre de nœuds dans le graphique (Ne changez pas).

    Les valeurs valides sont"perM"(par million),"per10M"(pour 10 millions), et"per100M"(pour 100 millions).

    Plutôt que de modifier cette valeur, modifiez la valeurrangeà la place.

  • edge_strategy— (Chaîne) Indique que la plage effective de cet hyperparamètre doit changer en fonction du nombre d'arêtes dans le graphique (Ne changez pas).

    Les valeurs valides sont"perM"(par million),"per10M"(pour 10 millions), et"per100M"(pour 100 millions).

    Plutôt que de modifier cette valeur, modifiez la valeurrangeà la place.

Liste de tous les hyperparamètres de Neptune ML

La liste suivante contient tous les hyperparamètres pouvant être définis n'importe où dans Neptune ML, pour n'importe quel type de modèle et tâche. Étant donné qu'ils ne sont pas tous applicables à tous les types de modèles, il est important que vous définissiez uniquement des hyperparamètres dans lemodel-HPO-configuration.jsonqui apparaît dans le modèle du modèle que vous utilisez.

  • batch-size: taille du lot de nœuds cibles utilisant en une seule passe avant. Type : int.

    La définition d'une valeur beaucoup plus importante peut entraîner des problèmes de mémoire lors de la formation sur les instances GPU.

  • call_to_consider_early_stop— Spécifie le numéro du premier appel d'évaluation auquel un arrêt anticipé peut intervenir. Il s'agit de permettre une période de rodage si nécessaire. Type : int.Par défaut :0.

    Consulter Arrêt précoce du processus de formation au modèle dans Neptune ML.

  • concat-node-embed— Indique s'il faut obtenir la représentation initiale d'un nœud en concaténant ses entités avec ses intégrations initiales. Type : bool.

  • dropout— La probabilité de décrochage appliquée aux couches de décrochage. Type : float.

  • enable_early_stop— Indique si vous souhaitez utiliser ou non la fonction d'arrêt anticipé. Type : bool.Par défaut : true. Veuillez consulter .

  • fanout: nombre de voisins à échantillonner pour un nœud cible pendant l'échantillonnage de voisin. Type : int.

    Cette valeur est étroitement liée ànum-layerset doit toujours se trouver dans le même niveau d'hyperparamètres. Cela est dû au fait que vous pouvez spécifier un fanout pour chaque couche GNN potentielle.

    Étant donné que cet hyperparamètre peut entraîner une variation importante des performances du modèle, il doit être fixé ou défini comme hyperparamètre de niveau 2 ou de niveau 3. La définition d'une valeur élevée peut entraîner des problèmes de mémoire lors de la formation sur une instance GPU.

  • gamma— Valeur de marge dans la fonction de partition. Type : float.

    Cela s'appliqueKGEmodèles de prédiction de liens uniquement.

  • global-norm— Indique s'il faut utiliser la normalisation globale plutôt que la normalisation basée sur les relations. Type : bool.

  • l2norm— Indique si unL2pénalité de normalisation plutôt que de décroissance pondérale. Type : bool.

  • layer-norm— Indique si la normalisation de couche doit être utilisée pourrgcnmodèles. Type : bool.

  • low-mem— Indique s'il faut utiliser une implémentation à faible mémoire de la fonction de transmission des messages de relation au détriment de la vitesse. Type : bool.

  • lr— Le taux d'apprentissage. Type : float.

    Ce paramètre 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— Le nombre de bases pour la décomposition de base dans unrgcnModèle. Type : int.

  • num-epochs— Nombre d'époques d'entraînement à exécuter. Type : int.

    Une époque est un passage d'entraînement complet dans le graphique.

  • num-hidden— Taille de couche masquée ou nombre d'unités. Type : int.

    Cela définit également la taille d'intégration initiale pour les nœuds sans fonctionnalité.

    Définir cette valeur à une valeur beaucoup plus importante sans réduirebatch-sizepeut entraîner des problèmes de mémoire insuffisante pour l'entraînement sur une instance GPU.

  • num-layer— Nombre de couches GNN dans le modèle. Type : int.

    Cette valeur est étroitement couplée au paramètre fanout et doit apparaître une fois que le fanout est défini dans le même niveau d'hyperparamètres.

    Étant donné que les performances du modèle peuvent varier considérablement, elles doivent être fixées ou définies comme un hyperparamètre de niveau 2 ou de niveau 3.

  • num-negs— Dans la prédiction des liens, le nombre d'échantillons négatifs par échantillon positif. Type : int.

  • regularization-coef— Dans la prédiction de liaison, le coefficient de perte de régularisation. Type : float.

  • rel-part— Indique si la partition de relation doit être utilisée pourKGEprédiction de lien. Type : bool.

  • sparse-lr— Taux d'apprentissage pour les incorporations clairsemées. Les paramètres de la couche d'intégration clairsemée sont formés à l'aide d'un optimiseur distinct qui peut avoir un taux d'apprentissage distinct. Type : float.

  • use-self-loop— Indique s'il faut inclure des auto-boucles dans l'entraînement d'unrgcnModèle. Type : bool.

  • window-for-early-stop— Contrôle le nombre de derniers scores de validation en moyenne pour décider d'un arrêt anticipé. La valeur par défaut est 3. type=int. Voir aussi Arrêt précoce du processus de formation au modèle dans Neptune ML. Type : int.Par défaut :3.

    Consulter .

Personnalisation des hyperparamètres dans Neptune ML

Lorsque vous modifiez lemodel-HPO-configuration.json, les modifications suivantes sont les plus courantes à apporter :

  • Modifiez les valeurs minimales et/ou maximales derangehyperparamètres.

  • Définissez un hyperparamètre sur une valeur fixe en le déplaçant vers lefixed-paramet définissez sa valeur par défaut sur la valeur fixe que vous souhaitez qu'elle 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.