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éez votre tâche d'entraînement des hyperparamètres. Pour en savoir plus sur les options de configuration, consultez la page Comprendre la configuration des réglages d'hyperparamètres.
Préparer l'application d'entraînement
Dans une tâche de réglage d'hyperparamètres, Vertex AI crée des essais de votre tâche d'entraînement avec différents ensembles d'hyperparamètres et évalue l'efficacité d'un essai à 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 essai, 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.
- Options permettant de transférer 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 la section 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 tâche 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 essai 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
Transmettre 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 la génération de rapports de métriques à Vertex AI.
En savoir plus sur la création de rapports sur les métriques d'hyperparamètres
Créer une tâche 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 un HyperparameterTuningJob
. Toutefois, vous pouvez créer une ressource TrainingPipeline
qui crée un HyperparameterTuningJob
.
Les instructions suivantes décrivent comment créer un TrainingPipeline
qui crée une 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 la page Créer des pipelines d'entraînement.
Dans la console Google Cloud, accédez à la section Vertex AI, accédez à la page Entraînement des pipelines.
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 tâche 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 Calcul et tarification, 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 fichierHyerparameterTuningJob
: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 une option 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 l'entraînement de code 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
. Découvrez les exigences concernant les noms de ressources.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 une tâche 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 ci-dessous, effectuez les remplacements suivants :
-
LOCATION
: région dans laquelle vous souhaitez créerHyperparameterTuningJob
. Utilisez une région compatible avec l'entraînement personnalisé. - PROJECT : l'ID de votre projet.
-
DISPLAY_NAME
: nom à afficher de votre choix pour le paramètreHyperparameterTuningJob
. Découvrez les exigences concernant les noms de ressources. - 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 une option 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 minimales (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 minimales (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ètres 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 cette tâche 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 tâches pouvant échouer avant l'échec de la tâche de réglage d'hyperparamètres.
- Définissez la tâche d'entraînement personnalisée :
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. Le nombre maximal d'URI de package est de 100.
- 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 à cette tâche 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 tâches de réglages d'hyperparamètres recherchent la meilleure combinaison d'hyperparamètres pour optimiser vos métriques. Pour ce faire, les tâches de réglage des hyperparamètres effectuent plusieurs essais de votre application d'entraînement avec différents ensembles d'hyperparamètres.
Lorsque vous configurez une tâche 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
Informations sur le nombre d'essais à exécuter dans le cadre de cette tâche de réglage, par exemple :
Informations détaillées sur la tâche d'entraînement personnalisée exécutée pour chaque essai, comme suit :
Le type de machine dans lequel les tâches d'essai s'exécutent et les accélérateurs utilisés par la tâche.
Détails de la tâche de conteneur personnalisé ou de 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)
- accuracy
L'augmentation du nombre d'essais donne généralement de meilleurs résultats, mais ce n'est pas toujours le cas. Il y a souvent un moment où les rendements diminuent au-delà duquel les essais supplémentaires n'ont que peu ou pas d'effet sur la précision. Avant de démarrer une tâche 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 précision 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 tâche 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. Définissez le champ maxFailedTrialCount
dans HyperparameterTuningJob sur le nombre d'essais en échec que vous souhaitez autoriser. Une fois ce nombre d'essais échoués atteint, Vertex AI met fin à la tâche 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 la valeur sur 0
, Vertex AI utilise les règles suivantes pour gérer les essais en échec :
- Si le premier essai de la tâche échoue, Vertex AI termine la tâche 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 à la tâche, 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 à la tâche 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 échoués 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 tâches de réglage d'hyperparamètres
Les sections suivantes expliquent comment gérer vos tâches de réglages d'hyperparamètres.
Récupérer des informations sur une tâche de réglage d'hyperparamètres
Les exemples de code suivants montrent comment récupérer une tâche 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 du jetonHyperparameterTuningJob
(l'ID correspond à la dernière partie du nom).Vous avez peut-être vu l'ID ou le nom lorsque vous avez créé l'objet
HyperparameterTuningJob
. Si vous ne connaissez pas 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 une tâche 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 ci-dessous, effectuez les remplacements suivants :
-
LOCATION
: région dans laquelleHyperparameterTuningJob
a été créé. - NAME : nom de la tâche de réglage d'hyperparamètres. Le nom de la tâche 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 une tâche de réglage d'hyperparamètres
Les exemples de code suivants montrent comment annuler une tâche 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 du jetonHyperparameterTuningJob
(l'ID correspond à la dernière partie du nom).Vous avez peut-être vu l'ID ou le nom lorsque vous avez créé l'objet
HyperparameterTuningJob
. Si vous ne connaissez pas 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 une tâche 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 ci-dessous, effectuez les remplacements suivants :
-
LOCATION
: région dans laquelleHyperparameterTuningJob
a été créé. - NAME : nom de la tâche de réglage d'hyperparamètres. Le nom de la tâche 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 une tâche de réglage d'hyperparamètres
Les exemples de code suivants montrent comment supprimer une tâche 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 une tâche 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 ci-dessous, effectuez les remplacements suivants :
- LOCATION : votre région.
- NAME : nom de la tâche de réglage d'hyperparamètres. Le nom de la tâche 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.