Vertex AI 神经架构搜索客户端库

本文档介绍了 Vertex AI 神经架构搜索客户端库。

神经架构搜索客户端(在 vertex_nas_cli.py 中)封装了作业管理 API,可促进神经架构搜索开发。它提供了如下子命令:

  • vertex_nas_cli.py build:构建神经架构搜索容器并推送到 Google Cloud Container Registry
  • vertex_nas_cli.py run_latency_calculator_local:在本地针对神经架构搜索第 1 阶段搜索作业运行延迟时间计算器。
  • vertex_nas_cli.py search_in_local:使用随机采样的架构在您的机器上本地运行神经架构搜索作业。
  • vertex_nas_cli.py search:在 Google Cloud 上运行具有 stage-1 搜索和 stage-2 训练的神经架构搜索作业。
  • vertex_nas_cli.py search_resume:在 Google Cloud 上恢复之前的神经架构搜索作业。
  • vertex_nas_cli.py list_trials:针对特定作业列出神经架构搜索试验。
  • vertex_nas_cli.py train:在 Google Cloud 中训练搜索的模型架构(试用)。

构建

请运行以下命令以查看 vertex_nas_cli.py build 支持的参数列表:

python3 vertex_nas_cli.py build -h

如果指定了 --trainer_docker_id,它会通过 --trainer_docker_file 标志指定的 docker 文件构建训练程序 docker。Docker 使用完整的 URI gcr.io/project_id/trainer_docker_id 构建,并推送到 Google Cloud 容器注册表

如果指定了 --latency_calculator_docker_id,它会通过 --latency_calculator_docker_file 标志指定的 docker 文件构建延迟时间计算器 docker。Docker 使用完整的 URI gcr.io/project_id/latency_calculator_docker_id 构建,并推送到 Google Cloud 容器注册表

除了使用 Dockerfile 进行构建,您还可以使用 bazel 等其他工具构建训练程序,并将其与神经架构搜索服务搭配使用。

在本地运行延迟时间计算器

请运行以下命令以查看 vertex_nas_cli.py run_latency_calculator_local 支持的参数列表:

python3 vertex_nas_cli.py run_latency_calculator_local -h

在本地搜索

请运行以下命令以查看 vertex_nas_cli.py search_in_local 支持的参数列表:

python3 vertex_nas_cli.py search_in_local -h

您需要指定 --search_space_module--prebuilt_search_space,以便 vertex_nas_cli.py 在内部生成要使用的随机模型架构。

此命令会使用随机采样的架构在本地机器上运行 docker gcr.io/project_id/trainer_docker_id:latest

您可以传递容器在 --search_docker_flags 之后使用的标志。例如,您可以将 --training_data_pathvalidation_data_path 传递给容器:

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

请运行以下命令以查看 vertex_nas_cli.py search 支持的参数列表:

python3 vertex_nas_cli.py search -h

您需要指定 --search_space_module--prebuilt_search_space,以便 vertex_nas_cli.py 在内部创建 search_space_spec

运行神经架构搜索作业的机器可以由 --accelerator_type 指定。 如需了解详情或根据您的需求进行自定义(例如使用更多 GPU),请参阅 add_machine_configurations

使用带有前缀 train_ 的标志来设置 stage-2 的训练相关参数。

搜索恢复

请运行以下命令以查看 vertex_nas_cli.py search_resume 支持的参数列表:

python3 vertex_nas_cli.py search_resume -h

您可以通过传递 previous_nas_job_id 和可选的 previous_latency_job_id 来恢复之前运行的搜索作业。仅当之前的搜索作业涉及 Google Cloud 延迟时间作业时,才需要 previous_latency_job_id 标志。如果您使用了本地延迟时间计算器,而不是 Google Cloud 延迟时间作业,则必须再次单独运行该本地延迟时间计算器作业。之前的搜索作业本身不应该是恢复作业。搜索恢复作业的区域应与之前的搜索作业相同。示例 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

列出试验

请运行以下命令以查看 vertex_nas_cli.py list_trials 支持的参数列表:

python3 vertex_nas_cli.py list_trials -h

训练

请运行以下命令以查看 vertex_nas_cli.py train 支持的参数列表:

python3 vertex_nas_cli.py train -h

代理任务方差测量

请运行以下命令以查看 vertex_nas_cli.py measure_proxy_task_variance 支持的参数列表:

python3 vertex_nas_cli.py measure_proxy_task_variance -h

代理任务模型选择

请运行以下命令以查看 vertex_nas_cli.py select_proxy_task_models 支持的参数列表:

python3 vertex_nas_cli.py select_proxy_task_models -h

请运行以下命令以查看 vertex_nas_cli.py search_proxy_task 支持的参数列表:

python3 vertex_nas_cli.py search_proxy_task -h