Vertex AI Neural Architecture Search-Clientbibliothek

In diesem Dokument wird die Clientbibliothek von Neural Architecture Search von Vertex AI erläutert.

Der Neural Architecture Search-Client (in vertex_nas_cli.py) beinhaltet die Jobverwaltungs-API und vereinfacht die Neural Architecture Search-Entwicklung. Es sind damit folgende Unterbefehle verfügbar:

  • vertex_nas_cli.py build: Erstellt Neural Architecture Search-Container und überträgt sie per Push in die Container-Registry von Google Cloud.
  • vertex_nas_cli.py run_latency_calculator_local: Führt den Latenzrechner lokal für den Neural Architecture Search-Phase-1-Suchjob aus.
  • vertex_nas_cli.py search_in_local: Führt den Neural Architecture Search-Job lokal auf einer Maschine mit einer zufällig ausgewählten Architektur aus.
  • vertex_nas_cli.py search: Führt einen Neural Architecture Search-Job mit Phase-1-Suche und Phase-2-Training in Google Cloud aus.
  • vertex_nas_cli.py search_resume: Setzt einen vorherigen Neural Architecture Search-Job in Google Cloud fort.
  • vertex_nas_cli.py list_trials: Listet Neural Architecture Search-Tests für einen bestimmten Job auf.
  • vertex_nas_cli.py train: Trainiert die gesuchte Modellarchitektur (Test) in Google Cloud.

Build

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py build unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py build -h

Wenn --trainer_docker_id angegeben ist, wird der Trainer-Docker aus der mit dem Flag --trainer_docker_file angegebenen Docker-Datei erstellt. Der Docker wird mit dem vollständigen URI gcr.io/project_id/trainer_docker_id erstellt und in die Google Cloud Container Registry übertragen.

Wenn --latency_calculator_docker_id angegeben ist, wird der Docker-Latenzrechner aus der Docker-Datei erstellt, die durch das Flag --latency_calculator_docker_file angegeben wird. Der Docker wird mit dem vollständigen URI gcr.io/project_id/latency_calculator_docker_id erstellt und in die Google Cloud Container Registry übertragen.

Anstatt mit Dockerfile zu erstellen, können Sie auch andere Tools wie bazel verwenden, um den Trainer zu erstellen, und können ihn mit dem Neural Architecture Search-Dienst verwenden.

Latenzrechner lokal ausführen

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py run_latency_calculator_local unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py run_latency_calculator_local -h

Lokal suchen

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py search_in_local unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py search_in_local -h

Sie müssen entweder --search_space_module oder --prebuilt_search_space angeben, damit vertex_nas_cli.py intern eine zu verwendende zufällige Modellarchitektur generiert.

Mit diesem Befehl wird der Docker gcr.io/project_id/trainer_docker_id:latest auf Ihrem lokalen Computer mit einer zufällig ausgewählten Architektur ausgeführt.

Sie können nach --search_docker_flags die Flags übergeben, die vom Container verwendet werden sollen. Sie können beispielsweise --training_data_path und validation_data_path an den Container übergeben:

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

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py search unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py search -h

Sie müssen entweder --search_space_module oder --prebuilt_search_space angeben, damit vertex_nas_cli.py intern search_space_spec erstellt.

Die Maschinen, auf denen Neural Architecture Search-Jobs ausgeführt werden sollen, können durch --accelerator_type angegeben werden. Weitere Informationen, auch für die Anpassung an Ihre Anforderungen, etwa zur Verwendung weiterer GPUs, finden Sie unter add_machine_configurations.

Verwenden Sie die Flags mit dem Präfix train_, um die Trainingsparameter für Phase 2 festzulegen.

Suche fortsetzen

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py search_resume unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py search_resume -h

Sie können einen zuvor ausgeführten Suchjob fortsetzen, indem Sie previous_nas_job_id und optional previous_latency_job_id übergeben. Das Flag previous_latency_job_id ist nur erforderlich, wenn Ihr vorheriger Suchjob einen Google Cloud-Latenzjob enthielt. Wenn Sie anstelle eines Google Cloud-Latenzjobs einen lokalen Latenzrechner verwendet haben, müssen Sie diesen lokalen Latenzrechner-Job separat ausführen. Der vorherige Suchjob darf selbst kein fortgesetzter Job sein. Die Region für den fortgesetzten Suchjob muss mit der Region des vorherigen Suchjobs übereinstimmen. Ein search_resume-Beispielbefehl sieht so aus:

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

Tests auflisten

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py list_trials unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py list_trials -h

Trainieren

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py train unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py train -h

Proxy-Aufgaben-Varianz

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py measure_proxy_task_variance unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py measure_proxy_task_variance -h

Auswahl der Proxy-Aufgabenaufgabe

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py select_proxy_task_models unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py select_proxy_task_models -h

Führen Sie den folgenden Befehl aus, um die Liste der von vertex_nas_cli.py search_proxy_task unterstützten Argumente aufzurufen:

python3 vertex_nas_cli.py search_proxy_task -h