Les hyperparamètres sont des variables qui régissent le processus d'entraînement d'un modèle, par exemple la taille du lot ou le nombre de couches cachées dans un réseau de neurones profond. Les réglages d'hyperparamètres recherchent la meilleure combinaison de valeurs d'hyperparamètres en optimisant les valeurs des métriques à l'aide d'une série de tests. Les métriques sont des résumés scalaires que vous ajoutez à votre application d'entraînement, telles que la justesse du modèle.
Obtenez plus d'informations sur les réglages d'hyperparamètres dans Vertex AI. Pour obtenir un exemple détaillé, consultez l'atelier de programmation Vertex AI : réglages d'hyperparamètres.
Cette page vous explique comment :
préparer votre application d'entraînement pour le réglage des hyperparamètres en la mettant à jour pour accepter les hyperparamètres en tant qu'arguments de ligne de commande et signaler les valeurs de métrique à Vertex AI ;
créer votre job d'entraînement des hyperparamètres. Pour en savoir plus sur les options de configuration, consultez Comprendre la configuration des réglages d'hyperparamètres.
Préparer l'application d'entraînement
Dans un job de réglage d'hyperparamètres, Vertex AI crée des tests de votre job d'entraînement avec différents ensembles d'hyperparamètres et évalue l'efficacité d'un test à l'aide des métriques spécifiées. Vertex AI transmet les valeurs d'hyperparamètres à votre application d'entraînement en tant qu'arguments de ligne de commande. Pour permettre à Vertex AI d'évaluer l'efficacité d'un test, votre application d'entraînement doit transmettre vos métriques à Vertex AI.
Les sections suivantes décrivent :
- comment Vertex AI transmet les hyperparamètres à votre application d'entraînement ;
- les options permettant de transmettre les métriques de votre application d'entraînement vers Vertex AI.
Pour en savoir plus sur les exigences des applications d'entraînement personnalisées qui s'exécutent sur Vertex AI, consultez Exigences du code d'entraînement.
Gérer les arguments de ligne de commande pour les hyperparamètres à régler
Vertex AI définit les arguments de ligne de commande lorsqu'il appelle votre application d'entraînement. Utilisez les arguments de ligne de commande dans votre code de la manière suivante :
Définissez un nom pour chaque argument d'hyperparamètres et analysez-le à l'aide de l'analyseur d'arguments de votre choix, tel que
argparse
. Utilisez les mêmes noms d'arguments lorsque vous configurez votre job d'entraînement d'hyperparamètres.Par exemple, si votre application d'entraînement est un module Python nommé
my_trainer
et que vous réglez un hyperparamètre nommélearning_rate
, Vertex AI lance chaque test avec une commande semblable à celle-ci :python3 -m my_trainer --learning_rate learning-rate-in-this-trial
Vertex AI détermine l'argument learning-rate-in-this-trial et le transmet à l'aide de l'argument
learning_rate
.Attribuez les valeurs des arguments de ligne de commande aux hyperparamètres dans votre code d'entraînement.
En savoir plus sur les exigences applicables à l'analyse des arguments de ligne de commande
Signaler des métriques à Vertex AI
Pour signaler vos métriques à Vertex AI, utilisez le package Python cloudml-hypertune
. Cette bibliothèque fournit des fonctions d'assistance pour transmettre les métriques à Vertex AI.
En savoir plus sur la création de rapports sur les métriques d'hyperparamètres
Créer un job de réglage d'hyperparamètres
En fonction de l'outil que vous souhaitez utiliser pour créer un HyperparameterTuningJob
, sélectionnez l'un des onglets suivants :
Console
Dans la console Google Cloud , vous ne pouvez pas créer directement une ressource HyperparameterTuningJob
. Toutefois, vous pouvez créer une ressource TrainingPipeline
qui crée un job HyperparameterTuningJob
.
Les instructions suivantes décrivent comment créer un TrainingPipeline
qui crée un job HyperparameterTuningJob
et qui ne fait rien d'autre. Si vous souhaitez utiliser des fonctionnalités TrainingPipeline
supplémentaires, telles que l'entraînement avec un ensemble de données géré, consultez Créer des pipelines d'entraînement.
Dans la section Vertex AI de la console Google Cloud , accédez à la page Pipelines d'entraînement.
Cliquez sur
Créer pour ouvrir le volet Entraîner le nouveau modèle.À l'étape Méthode d'entraînement, spécifiez les paramètres suivants :
Dans la liste déroulante Ensemble de données, sélectionnez Aucun ensemble de données géré.
Sélectionnez Entraînement personnalisé (avancé).
Cliquez sur Continuer.
À l'étape Informations sur le modèle, sélectionnez Entraîner un nouveau modèle ou Entraîner la nouvelle version. Si vous sélectionnez "Entraîner un nouveau modèle", saisissez le nom de votre choix, MODEL_NAME. Cliquez sur Continuer.
À l'étape Entraînement du conteneur, spécifiez les paramètres suivants :
Indiquez si vous souhaitez utiliser un conteneur prédéfini ou un conteneur personnalisé pour l'entraînement.
Selon votre choix, effectuez l'une des opérations suivantes :
Si vous souhaitez utiliser un conteneur prédéfini pour l'entraînement, fournissez à Vertex AI les informations nécessaires à l'utilisation du package d'entraînement que vous avez importé dans Cloud Storage :
Utilisez les listes déroulantes Framework de modèle et Version du framework de modèle pour spécifier le conteneur prédéfini que vous souhaitez utiliser.
Dans le champ Emplacement du package, spécifiez l'URI Cloud Storage de l'application d'entraînement Python que vous avez créée et importée. Ce fichier se termine généralement par
.tar.gz
.Dans le champ Module Python, saisissez le nom de module du point d'entrée de votre application d'entraînement.
Si vous souhaitez utiliser un conteneur personnalisé pour l'entraînement, spécifiez dans le champ Image du conteneur l'URI Artifact Registry ou Docker Hub de votre image de conteneur.
Dans le champ Répertoire de sortie du modèle, spécifiez l'URI Cloud Storage d'un répertoire d'un bucket auquel vous avez accès. Le répertoire n'a pas besoin d'exister pour le moment.
Cette valeur est transmise à Vertex AI dans le champ d'API
baseOutputDirectory
, qui définit plusieurs variables d'environnement auxquelles votre application d'entraînement peut accéder lorsqu'elle s'exécute.Facultatif : dans le champ Arguments, vous pouvez spécifier des arguments que Vertex AI doit utiliser lorsqu'il commence à exécuter votre code d'entraînement. La longueur maximale de l'ensemble des arguments combinés est de 100 000 caractères. Le comportement de ces arguments varie en fonction du type de conteneur que vous utilisez :
Si vous utilisez un conteneur prédéfini, Vertex AI transmet les arguments à votre module Python en tant qu'options de ligne de commande.
Si vous utilisez un conteneur personnalisé, Vertex AI remplace l'instruction
CMD
de votre conteneur par les arguments.
Cliquez sur Continuer.
À l'étape Réglage des hyperparamètres, cochez la case Activer le réglage d'hyperparamètres et spécifiez les paramètres suivants :
Dans la section Nouvel hyperparamètre, indiquez le nom du paramètre et le type d'un hyperparamètre à régler. Selon le type spécifié, configurez les paramètres d'hyperparamètres supplémentaires qui s'affichent.
En savoir plus sur les types d'hyperparamètres et leurs configurations
Si vous souhaitez régler plusieurs hyperparamètres, cliquez sur Ajouter un paramètre et répétez l'étape précédente dans la nouvelle section qui s'affiche.
Répétez cette opération pour chaque hyperparamètre à régler.
Dans le champ Métrique à optimiser et dans la liste déroulante Objectif, spécifiez le nom et l'objectif de la métrique que vous souhaitez optimiser.
Dans le champ Nombre maximal d'essais, spécifiez le nombre maximal d'essais que vous souhaitez que Vertex AI exécute pour votre job de réglage d'hyperparamètres.
Dans le champ Nombre maximal d'essais parallèles, spécifiez le nombre maximal d'essais que Vertex AI peut exécuter simultanément.
Dans la liste déroulante Algorithme de recherche, spécifiez un algorithme de recherche que Vertex AI doit utiliser.
Ignorez l'option Activer l'arrêt prématuré, qui est sans effet.
Cliquez sur Continuer.
À l'étape Options de calcul et tarifs, spécifiez les paramètres suivants :
Dans la liste déroulante Région, sélectionnez une région compatible avec l'entraînement personnalisé.
Dans la section Pool de nœuds de calcul 0, spécifiez les ressources de calcul à utiliser pour l'entraînement.
Si vous spécifiez des accélérateurs, assurez-vous que le type d'accélérateur que vous choisissez est disponible dans la région sélectionnée.
Si vous souhaitez effectuer un entraînement distribué, cliquez sur Ajouter d'autres pools de nœuds de calcul et spécifiez un ensemble supplémentaire de ressources de calcul pour chaque pool de nœuds de calcul supplémentaire souhaité.
Cliquez sur Continuer.
À l'étape Prédiction de conteneur, sélectionnez Aucun conteneur de prédiction.
Cliquez sur Démarrer l'entraînement pour démarrer le pipeline d'entraînement personnalisé.
gcloud
Les étapes suivantes montrent comment utiliser Google Cloud CLI pour créer un HyperparameterTuningJob
avec une configuration relativement minimale. Pour en savoir plus sur toutes les options de configuration que vous pouvez utiliser pour cette tâche, consultez la documentation de référence sur la commande gcloud ai hp-tuning-jobs create
et la ressource API HyperparameterTuningJob
.
Créez un fichier YAML nommé
config.yaml
contenant les champs d'API que vous souhaitez spécifier pour votre nouveau jobHyerparameterTuningJob
:config.yaml
studySpec: metrics: - metricId: METRIC_ID goal: METRIC_GOAL parameters: - parameterId: HYPERPARAMETER_ID doubleValueSpec: minValue: DOUBLE_MIN_VALUE maxValue: DOUBLE_MAX_VALUE trialJobSpec: workerPoolSpecs: - machineSpec: machineType: MACHINE_TYPE replicaCount: 1 containerSpec: imageUri: CUSTOM_CONTAINER_IMAGE_URI
Remplacez les éléments suivants :
METRIC_ID
: nom d'une métrique d'hyperparamètres à optimiser. Votre code d'entraînement doit signaler cette métrique lors de son exécution.METRIC_GOAL
: objectif de votre métrique d'hyperparamètres,MAXIMIZE
ouMINIMIZE
.HYPERPARAMETER_ID
: nom d'un hyperparamètre à régler. Votre code d'entraînement doit analyser un flag de ligne de commande portant ce nom. Pour cet exemple, l'hyperparamètre doit prendre des valeurs à virgule flottante. Découvrez d'autres types de données d'hyperparamètres.DOUBLE_MIN_VALUE
: valeur minimale (un nombre) que vous souhaitez que Vertex AI teste pour cet hyperparamètre.DOUBLE_MAX_VALUE
: valeur maximale (un nombre) que vous souhaitez que Vertex AI teste pour cet hyperparamètre.MACHINE_TYPE
: type de VM à utiliser pour l'entraînement.CUSTOM_CONTAINER_IMAGE_URI
: URI d'une image de conteneur Docker avec votre code d'entraînement. Apprenez à créer une image de conteneur personnalisé.Pour cet exemple, vous devez utiliser un conteneur personnalisé. Les ressources
HyperparameterTuningJob
acceptent également le code d'entraînement dans une distribution source Python au lieu d'un conteneur personnalisé.
Dans le même répertoire que votre fichier
config.yaml
, exécutez la commande shell suivante :gcloud ai hp-tuning-jobs create \ --region=LOCATION \ --display-name=DISPLAY_NAME \ --max-trial-count=MAX_TRIAL_COUNT \ --parallel-trial-count=PARALLEL_TRIAL_COUNT \ --config=config.yaml
Remplacez les éléments suivants :
LOCATION
: région dans laquelle vous souhaitez créerHyperparameterTuningJob
. Utilisez une région compatible avec l'entraînement personnalisé.DISPLAY_NAME
: nom à afficher de votre choix pour le paramètreHyperparameterTuningJob
. Consultez Ressource REST.MAX_TRIAL_COUNT
: nombre maximal d'essais à exécuter.PARALLEL_TRIAL_COUNT
: nombre maximal d'essais à exécuter en parallèle.
REST
Utilisez l'exemple de code suivant pour créer un job de réglage d'hyperparamètres à l'aide de la méthode create
de la ressource hyperparameterTuningJob
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
-
LOCATION
: région dans laquelle vous souhaitez créerHyperparameterTuningJob
. Utilisez une région compatible avec l'entraînement personnalisé. - PROJECT : ID de votre projet.
-
DISPLAY_NAME
: nom à afficher de votre choix pour le paramètreHyperparameterTuningJob
. Consultez Ressource REST. - Spécifiez vos métriques :
-
METRIC_ID
: nom d'une métrique d'hyperparamètres à optimiser. Votre code d'entraînement doit signaler cette métrique lors de son exécution. -
METRIC_GOAL
: objectif de votre métrique d'hyperparamètres,MAXIMIZE
ouMINIMIZE
.
-
- Spécifiez vos hyperparamètres :
-
HYPERPARAMETER_ID
: nom d'un hyperparamètre à régler. Votre code d'entraînement doit analyser un flag de ligne de commande portant ce nom. - PARAMETER_SCALE (facultatif) : méthode de mise à l'échelle du paramètre. Ne pas renseigner les paramètres de type CATÉGORIEL. Il peut s'agir de
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
ouSCALE_TYPE_UNSPECIFIED
. - Si ce type d'hyperparamètre est DOUBLE, spécifiez les valeurs minimale (DOUBLE_MIN_VALUE) et maximale (DOUBLE_MAX_VALUE) pour cet hyperparamètre.
- Si le type de cet hyperparamètre est ENTIER, spécifiez les valeurs minimale (INTEGER_MIN_VALUE) et maximale (INTEGER_MAX_VALUE) pour cet hyperparamètre.
- Si ce type d'hyperparamètre est CATÉGORIEL, spécifiez les valeurs acceptables (CATEGORICAL_VALUES) sous la forme d'un tableau de chaînes.
- Si ce type d'hyperparamètre est DISCRET, spécifiez les valeurs acceptables (DISCRETE_VALUES) sous la forme d'un tableau de nombres.
- Spécifiez des hyperparamètres conditionnels. Les hyperparamètres conditionnels sont ajoutés à un essai lorsque la valeur de l'hyperparamètre parent correspond à la condition spécifiée. En savoir plus sur les hyperparamètres conditionnels
- CONDITIONAL_PARAMETER :
ParameterSpec
du paramètre conditionnel. Cette spécification comprend le nom du paramètre, l'échelle, la plage de valeurs et les paramètres conditionnels qui dépendent de cet hyperparamètre. - Si le type de l'hyperparamètre parent est ENTIER, spécifiez une liste d'entiers en tant que INTEGERS_TO_MATCH. Si la valeur de l'hyperparamètre parent correspond à l'une des valeurs spécifiées, ce paramètre conditionnel est ajouté à l'essai.
- Si le type d'hyperparamètre parent est CATÉGORIEL, spécifiez une liste de catégories comme CATEGORIES_TO_MATCH. Si la valeur de l'hyperparamètre parent correspond à l'une des valeurs spécifiées, ce paramètre conditionnel est ajouté à l'essai.
- Si le type de l'hyperparamètre parent est DISCRET, spécifiez une liste d'entiers en tant que DISCRETE_VALUES_TO_MATCH. Si la valeur de l'hyperparamètre parent correspond à l'une des valeurs spécifiées, ce paramètre conditionnel est ajouté à l'essai.
- CONDITIONAL_PARAMETER :
-
- ALGORITHM (facultatif) : algorithme de recherche à utiliser dans ce job de réglage d'hyperparamètres. Il peut s'agir de
ALGORITHM_UNSPECIFIED
,GRID_SEARCH
ouRANDOM_SEARCH
. MAX_TRIAL_COUNT
: nombre maximal d'essais à exécuter.-
PARALLEL_TRIAL_COUNT
: nombre maximal d'essais à exécuter en parallèle. - MAX_FAILED_TRIAL_COUNT : nombre de jobs pouvant échouer avant l'échec du job de réglage d'hyperparamètres.
- Définissez le job d'entraînement personnalisé de l'essai :
MACHINE_TYPE
: type de VM à utiliser pour l'entraînement.- ACCELERATOR_TYPE (facultatif) : type d'accélérateur à associer à chaque essai.
- ACCELERATOR_COUNT (facultatif) : nombre d'accélérateurs à associer à chaque essai.
- REPLICA_COUNT : nombre d'instances dupliquées de nœuds de calcul à utiliser pour chaque essai.
- Si votre application d'entraînement s'exécute dans un conteneur personnalisé, spécifiez les éléments suivants :
-
CUSTOM_CONTAINER_IMAGE_URI
: URI d'une image de conteneur Docker avec votre code d'entraînement. Apprenez à créer une image de conteneur personnalisé. - CUSTOM_CONTAINER_COMMAND (facultatif) : Commande à appeler au démarrage du conteneur. Cette commande ignore le point d'entrée par défaut du conteneur.
- CUSTOM_CONTAINER_ARGS : (Facultatif) Arguments à transmettre lors du démarrage du conteneur.
-
- Si votre application d'entraînement est un package Python qui s'exécute dans un conteneur prédéfini, spécifiez les éléments suivants :
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI : URI de l'image de conteneur qui exécute le package Python fourni. Apprenez-en plus sur les conteneurs prédéfinis pour l'entraînement.
- PYTHON_PACKAGE_URIS : emplacement Cloud Storage des fichiers de package Python, qui sont le programme d'entraînement et ses packages dépendants. La limite est de 100 URI de package.
- PYTHON_MODULE : nom du module Python à exécuter après l'installation des packages.
- PYTHON_PACKAGE_ARGS (facultatif) : arguments de ligne de commande à transmettre au module Python.
- SERVICE_ACCOUNT (facultatif) : compte de service utilisé par Vertex AI pour exécuter le code. Apprenez-en plus sur l'association d'un compte de service personnalisé.
- TIMEOUT (facultatif) : temps d'exécution maximal pour chaque essai.
- Spécifiez les valeurs LABEL_NAME et LABEL_VALUE pour toutes les étiquettes que vous souhaitez appliquer à ce job de réglage d'hyperparamètres.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/hyperparameterTuningJobs
Corps JSON de la requête :
{ "displayName": DISPLAY_NAME, "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. "conditionalParameterSpecs": [ "parameterSpec": { CONDITIONAL_PARAMETER } // Union field parent_value_condition can be only one of the following: "parentIntValues": { "values": [INTEGERS_TO_MATCH] } "parentCategoricalValues": { "values": [CATEGORIES_TO_MATCH] } "parentDiscreteValues": { "values": [DISCRETE_VALUES_TO_MATCH] } // End of list of possible types for union field parent_value_condition. ] } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT }, "serviceAccount": SERVICE_ACCOUNT }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/12345/locations/us-central1/hyperparameterTuningJobs/6789", "displayName": "myHyperparameterTuningJob", "studySpec": { "metrics": [ { "metricId": "myMetric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "myParameter1", "integerValueSpec": { "minValue": "1", "maxValue": "128" }, "scaleType": "UNIT_LINEAR_SCALE" }, { "parameterId": "myParameter2", "doubleValueSpec": { "minValue": 1e-07, "maxValue": 1 }, "scaleType": "UNIT_LINEAR_SCALE" } ], "ALGORITHM": "RANDOM_SEARCH" }, "maxTrialCount": 20, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] } }
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Configuration du job d'entraînement d'hyperparamètres
Les jobs de réglage d'hyperparamètres recherchent la meilleure combinaison d'hyperparamètres pour optimiser vos métriques. Pour ce faire, les jobs de réglage d'hyperparamètres effectuent plusieurs essais de votre application d'entraînement avec différents ensembles d'hyperparamètres.
Lorsque vous configurez un job de réglage d'hyperparamètres, vous devez spécifier les informations suivantes :
Les hyperparamètres que vous souhaitez régler et les métriques que vous souhaitez utiliser pour évaluer les essais.
En savoir plus sur la sélection d'hyperparamètres et de métriques
Des informations sur le nombre d'essais à exécuter lors de ce job de réglage, par exemple :
Des informations détaillées sur le job d'entraînement personnalisé exécuté pour chaque essai, comme suit :
Le type de machine sur lequel les jobs d'essai s'exécutent et les accélérateurs utilisés par le job.
Les détails concernant le job du conteneur personnalisé ou package Python.
En savoir plus sur les exigences concernant le code d'entraînement
Limiter le nombre d'essais
Déterminez le nombre d'essais dont vous souhaitez autoriser l'exécution par le service et définissez la valeur maxTrialCount
dans l'objet HyperparameterTuningJob.
Les deux enjeux contradictoires suivants sont à prendre en compte au moment de déterminer le nombre d'essais à autoriser :
- temps (et par conséquent, coût)
- justesse
L'augmentation du nombre d'essais donne généralement de meilleurs résultats, mais ce n'est pas toujours le cas. Dans la plupart des cas, il y a un risque de diminution des rendements, après quoi les essais supplémentaires n'ont que peu ou pas d'effet sur la justesse. Avant de démarrer un job avec un grand nombre d'essais, vous pouvez commencer par un petit nombre d'essais pour évaluer l'effet de vos hyperparamètres sur la justesse de votre modèle.
Pour tirer le meilleur parti des réglages d'hyperparamètres : définissez une valeur maximale au moins égale à 10 fois le nombre d'hyperparamètres utilisés.
Essais parallèles
Vous pouvez spécifier le nombre d'essais pouvant être exécutés en parallèle en définissant parallelTrialCount
dans l'objet HyperparameterTuningJob.
L'exécution d'essais parallèles permet de réduire le délai de la tâche d'entraînement (temps réel : le temps de traitement total nécessaire n'est généralement pas modifié). Notez toutefois que l'exécution en parallèle peut réduire l'efficacité globale de la tâche de réglage. Cela est imputable au fait que les réglages d'hyperparamètres utilisent les résultats des essais précédents pour déterminer les valeurs à attribuer aux hyperparamètres des essais suivants. Lors de l'exécution en parallèle, certains essais sont lancés sans bénéficier des résultats des essais qui sont toujours en cours d'exécution.
Si vous utilisez des essais parallèles, le service de réglage d'hyperparamètres provisionne plusieurs clusters de traitement pour l'entraînement (ou plusieurs machines individuelles dans le cas d'une application d'entraînement à un seul processus). La spécification de pool de travail que vous définissez pour votre job est utilisée pour chaque cluster d'entraînement.
Gérer les essais ayant échoué
Si vos essais de réglage d'hyperparamètres se terminent avec des erreurs, vous souhaiterez peut-être mettre fin à la tâche d'entraînement prématurément. Dans l'objet HyperparameterTuningJob, définissez le champ maxFailedTrialCount
sur le nombre d'essais en échec que vous souhaitez autoriser. Une fois ce nombre d'essais en échec atteint, Vertex AI met fin au job d'entraînement. La valeur maxFailedTrialCount
doit être inférieure ou égale à maxTrialCount
.
Si vous ne définissez pas maxFailedTrialCount
, ou si vous définissez sa valeur sur 0
, Vertex AI utilise les règles suivantes pour gérer les essais en échec :
- Si le premier essai de votre job échoue, Vertex AI termine le job immédiatement. Un échec lors du premier essai suggère un problème dans votre code d'entraînement. Par conséquent, des essais ultérieurs risquent également d'échouer. En mettant fin au job, vous pouvez diagnostiquer le problème sans attendre de nouveaux essais ni encourir des coûts plus élevés.
- Si le premier essai réussit, Vertex AI peut mettre fin au job après des échecs lors d'essais ultérieurs, sur la base de l'un des critères suivants :
- Le nombre d'essais ayant échoué est devenu trop élevé.
- Le ratio entre le nombre d'essais en échec et le nombre d'essais réussis est devenu trop élevé.
Ces règles sont susceptibles d'être modifiées. Pour garantir un comportement spécifique, définissez vous-même la valeur du champ maxFailedTrialCount
.
Gérer les jobs de réglage d'hyperparamètres
Les sections suivantes expliquent comment gérer vos jobs de réglage d'hyperparamètres.
Récupérer des informations sur un job de réglage d'hyperparamètres
Les exemples de code suivants montrent comment récupérer un job de réglage d'hyperparamètres.
gcloud
Exécutez la commande gcloud ai hp-tuning-jobs describe
:
gcloud ai hp-tuning-jobs describe ID_OR_NAME \
--region=LOCATION
Remplacez les éléments suivants :
ID_OR_NAME
: nom ou ID numérique deHyperparameterTuningJob
. L'ID correspond à la dernière partie du nom.Vous avez peut-être vu l'ID ou le nom lorsque vous avez créé
HyperparameterTuningJob
. Si vous ne connaissez ni l'ID, ni le nom, vous pouvez exécuter la commandegcloud ai hp-tuning-jobs list
et rechercher la ressource appropriée.LOCATION
: région dans laquelleHyperparameterTuningJob
a été créé.
REST
Utilisez l'exemple de code suivant pour récupérer un job de réglage d'hyperparamètres à l'aide de la méthode get
de la ressource hyperparameterTuningJob
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
-
LOCATION
: région dans laquelleHyperparameterTuningJob
a été créé. - NAME : nom du job de réglage d'hyperparamètres. Le nom du job utilise le format
projects/{project}/LOCATIONS/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
Méthode HTTP et URL :
GET https://LOCATION-aiplatform.googleapis.com/v1/NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/12345/LOCATIONs/us-central1/hyperparameterTuningJobs/6789", "displayName": "my-hyperparameter-tuning-job", "studySpec": { "metrics": [ { "metricId": "my_metric", "goal": "MINIMIZE" } ], "parameters": [ { "parameterId": "my_parameter", "doubleValueSpec": { "minValue": 1e-05, "maxValue": 1 } } ] }, "maxTrialCount": 3, "parallelTrialCount": 1, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-4" }, "replicaCount": "1", "pythonPackageSpec": { "executorImageUri": "us-docker.pkg.dev/vertex-ai/training/training-tf-cpu.2-1:latest", "packageUris": [ "gs://my-bucket/my-training-application/trainer.tar.bz2" ], "pythonModule": "my-trainer.trainer" } } ] }, "trials": [ { "id": "2", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.71426874725564571 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30007445812225342 } ] }, "startTime": "2020-09-09T23:39:15.549112551Z", "endTime": "2020-09-09T23:47:08Z" }, { "id": "3", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.3078893356622992 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30000102519989014 } ] }, "startTime": "2020-09-09T23:49:22.451699360Z", "endTime": "2020-09-09T23:57:15Z" }, { "id": "1", "state": "SUCCEEDED", "parameters": [ { "parameterId": "my_parameter", "value": 0.500005 } ], "finalMeasurement": { "stepCount": "2", "metrics": [ { "metricId": "my_metric", "value": 0.30005377531051636 } ] }, "startTime": "2020-09-09T23:23:12.283374629Z", "endTime": "2020-09-09T23:36:56Z" } ], "state": "JOB_STATE_SUCCEEDED", "createTime": "2020-09-09T23:22:31.777386Z", "startTime": "2020-09-09T23:22:34Z", "endTime": "2020-09-10T01:31:24.271307Z", "updateTime": "2020-09-10T01:31:24.271307Z" }
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Annuler un job de réglage d'hyperparamètres
Les exemples de code suivants montrent comment annuler un job de réglage d'hyperparamètres.
gcloud
Exécutez la commande gcloud ai hp-tuning-jobs cancel
:
gcloud ai hp-tuning-jobs cancel ID_OR_NAME \
--region=LOCATION
Remplacez les éléments suivants :
ID_OR_NAME
: nom ou ID numérique deHyperparameterTuningJob
. L'ID correspond à la dernière partie du nom.Vous avez peut-être vu l'ID ou le nom lorsque vous avez créé
HyperparameterTuningJob
. Si vous ne connaissez ni l'ID, ni le nom, vous pouvez exécuter la commandegcloud ai hp-tuning-jobs list
et rechercher la ressource appropriée.LOCATION
: région dans laquelleHyperparameterTuningJob
a été créé.
REST
Utilisez l'exemple de code suivant pour annuler un job de réglage d'hyperparamètres à l'aide de la méthode cancel
de la ressource hyperparameterTuningJob
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
-
LOCATION
: région dans laquelleHyperparameterTuningJob
a été créé. - NAME : nom du job de réglage d'hyperparamètres. Le nom du job utilise le format
projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/NAME:cancel
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Supprimer un job de réglage d'hyperparamètres
Les exemples de code suivants montrent comment supprimer un job de réglage d'hyperparamètres à l'aide du SDK Vertex AI pour Python et l'API REST.
REST
Utilisez l'exemple de code suivant pour supprimer un job de réglage d'hyperparamètres à l'aide de la méthode delete
de la ressource hyperparameterTuningJob
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- LOCATION : votre région.
- NAME : nom du job de réglage d'hyperparamètres. Le nom du job utilise le format
projects/{project}/LOCATIONs/{LOCATION}/hyperparameterTuningJobs/{hyperparameterTuningJob}
.
Méthode HTTP et URL :
DELETE https://LOCATION-aiplatform.googleapis.com/v1/NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Étapes suivantes
- Obtenez plus d'informations sur les concepts impliqués dans les réglages d'hyperparamètres.
- Découvrez comment planifier des jobs d'entraînement personnalisés en fonction de la disponibilité des ressources.