Bibliothèque cliente Vertex AI Neural Architecture Search

Ce document décrit la bibliothèque cliente Vertex AI Neural Architecture Search.

Le client Neural Architecture Search (dans vertex_nas_cli.py) encapsule l'API de gestion des tâches et facilite le développement de Neural Architecture Search. Il fournit les sous-commandes suivantes :

  • vertex_nas_cli.py build: crée des conteneurs de Neural Architecture Search et les transfère vers Google Cloud Container Registry.
  • vertex_nas_cli.py run_latency_calculator_local : exécute le simulateur de latence localement pour la tâche de recherche Neural Architecture Search de niveau 1.
  • vertex_nas_cli.py search_in_local: exécute la tâche Neural Architecture Search en local sur votre ordinateur avec une architecture d'échantillonnage aléatoire.
  • vertex_nas_cli.py search: exécute une tâche Neural Architecture Search avec une recherche de niveau 1 et un entraînement de niveau 2 sur Google Cloud.
  • vertex_nas_cli.py search_resume : reprend une tâche Neural Architecture Search précédente sur Google Cloud.
  • vertex_nas_cli.py list_trials : répertorie les essais Neural Architecture Search pour une tâche spécifique.
  • vertex_nas_cli.py train : entraîne l'architecture de modèle recherchée (essa) dans Google Cloud.

Créer

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py build :

python3 vertex_nas_cli.py build -h

Si l'option --trainer_docker_id est spécifiée, elle compile le fichier Docker d'entraînement à partir du fichier Docker spécifié par l'option --trainer_docker_file. Le docker est créé avec l'URI complet gcr.io/project_id/trainer_docker_id et transféré vers Google Cloud Container Registry.

Si l'option --latency_calculator_docker_id est spécifiée, elle crée le simulateur de latence Docker à partir du fichier Docker spécifié par l'option --latency_calculator_docker_file. Le docker est créé avec l'URI complet gcr.io/project_id/latency_calculator_docker_id et transféré vers Google Cloud Container Registry.

Au lieu de compiler avec Dockerfile, vous pouvez utiliser d'autres outils tels que bazel pour créer l'application d'entraînement et l'utiliser avec le service Neural Architecture Search.

Exécuter le simulateur de latence local

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py run_latency_calculator_local :

python3 vertex_nas_cli.py run_latency_calculator_local -h

Rechercher en local

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py search_in_local :

python3 vertex_nas_cli.py search_in_local -h

Vous devez spécifier --search_space_module ou --prebuilt_search_space afin que vertex_nas_cli.py génère en interne une architecture de modèle aléatoire à utiliser.

Cette commande exécutera le fichier Docker gcr.io/project_id/trainer_docker_id:latest sur votre ordinateur local avec une architecture échantillonnée de manière aléatoire.

Vous pouvez transmettre les options que le conteneur utilisera après --search_docker_flags. Par exemple, vous pouvez les transmettre via --training_data_path et validation_data_path au conteneur :

python3 vertex_nas_cli.py search_in_local \
--project_id=${PROJECT_ID} \
--trainer_docker_id=${TRAINER_DOCKER_ID} \
--prebuilt_search_space=spinenet \
--use_prebuilt_trainer=True \
--local_output_dir=${JOB_DIR} \
--search_docker_flags \
training_data_path=/test_data/test-coco.tfrecord \
validation_data_path=/test_data/test-coco.tfrecord \
model=retinanet

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py search :

python3 vertex_nas_cli.py search -h

Vous devez spécifier --search_space_module ou --prebuilt_search_space afin que vertex_nas_cli.py crée en interne search_space_spec.

Les machines permettant d'exécuter des tâches Neural Architecture Search peuvent être spécifiées par --accelerator_type. Pour en savoir plus ou pour personnaliser vos besoins (par exemple, en utilisant davantage de GPU), consultez add_machine_configurations.

Utilisez les options avec le préfixe train_ pour définir les paramètres liés à l'entraînement de la phase 2.

Reprise de la recherche

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py search_resume :

python3 vertex_nas_cli.py search_resume -h

Vous pouvez reprendre une tâche de recherche précédemment exécutée en transmettant previous_nas_job_id et éventuellement previous_latency_job_id. L'option previous_latency_job_id n'est nécessaire que si votre tâche de recherche précédente a impliqué une tâche de latence Google Cloud. Si au lieu d'une tâche de latence Google Cloud, vous avez utilisé un simulateur de latence sur site, vous devez l'exécuter séparément. La tâche de recherche précédente ne doit pas elle-même être une tâche de reprise. La région de la tâche de reprise de recherche doit être identique à celle de la tâche de recherche précédente. Voici un exemple de commandes search_resume:

python3 vertex_nas_cli.py search_resume \
  --project_id=${PROJECT} \
  --region=${REGION} \
  --job_name="${JOB_NAME}" \
  --previous_nas_job_id=${previous_nas_job_id} \
  --previous_latency_job_id=${previous_latency_job_id} \
  --root_output_dir=${GCS_ROOT_DIR} \
  --max_nas_trial=2 \
  --max_parallel_nas_trial=2 \
  --max_failed_nas_trial=2

Répertorier les essais

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py list_trials :

python3 vertex_nas_cli.py list_trials -h

Train

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py train :

python3 vertex_nas_cli.py train -h

Mesure de la variance de la tâche de proxy

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py measure_proxy_task_variance :

python3 vertex_nas_cli.py measure_proxy_task_variance -h

Sélection du modèle de tâche de proxy

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py select_proxy_task_models :

python3 vertex_nas_cli.py select_proxy_task_models -h

Exécutez la commande suivante pour afficher la liste des arguments acceptés par vertex_nas_cli.py search_proxy_task :

python3 vertex_nas_cli.py search_proxy_task -h