Vertex AI Neural Architecture Search クライアント ライブラリ

このドキュメントでは、Vertex AI Neural Architecture Search クライアント ライブラリについて説明します。

Neural Architecture Search クライアント(vertex_nas_cli.py 内)は job-management API をラップします。これにより、Neural Architecture Search の開発を簡単に行うことができます。次のサブコマンドを使用できます。

  • vertex_nas_cli.py build: Neural Architecture Search コンテナをビルドし、Artifact Registry に push します。
  • vertex_nas_cli.py run_latency_calculator_local: Neural Architecture Search ステージ 1 検索ジョブのレイテンシ計算ツールをローカルで実行します。
  • vertex_nas_cli.py search_in_local: ランダムにサンプリングされたアーキテクチャを使用して、マシンのローカルで Neural Architecture Search ジョブを実行します。
  • vertex_nas_cli.py search: Google Cloud で、ステージ 1 検索とステージ 2 トレーニングを備えた Neural Architecture Search ジョブを実行します。
  • vertex_nas_cli.py search_resume: Google Cloud で以前の Neural Architecture Search ジョブを再開します。
  • vertex_nas_cli.py list_trials: 特定のジョブ用の Neural Architecture Search トライアルを一覧表示します。
  • 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 でビルドされ、Artifact Registry に push されます。

--latency_calculator_docker_id を指定すると、--latency_calculator_docker_file フラグで指定された Docker ファイルからレイテンシ計算 Docker がビルドされます。Docker は完全な URI gcr.io/project_id/latency_calculator_docker_id でビルドされ、Artifact Registry に push されます。

Dockerfile でビルドするのではなく、bazel などのツールを使用してトレーナーをビルドし、Neural Architecture Search サービスで使用することもできます。

レイテンシ計算ツールをローカルで実行する

次のコマンドを実行して、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

vertex_nas_cli.py が使用するランダム モデル アーキテクチャを内部で生成するように、--search_space_module または --prebuilt_search_space のいずれかを指定する必要があります。

このコマンドは、ランダムにサンプリングされたアーキテクチャを使用して、ローカルマシンで 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

vertex_nas_cli.py が内部で search_space_spec を作成するように、--search_space_module または --prebuilt_search_space のいずれかを指定する必要があります。

Neural Architecture Search ジョブを実行するマシンは、--accelerator_type で指定できます。より多くの GPU を使用するなど、独自の要件に合わせてカスタマイズする方法については、add_machine_configurations をご覧ください。

接頭辞 train_ の付いたフラグを使用して、ステージ 2 トレーニング関連のパラメータを設定します。

検索の再開

次のコマンドを実行して、vertex_nas_cli.py search_resume でサポートされている引数のリストを表示します。

python3 vertex_nas_cli.py search_resume -h

以前に実行した検索ジョブを再開するには、previous_nas_job_id と、必要に応じて previous_latency_job_id を渡します。previous_latency_job_id フラグは、前の検索ジョブに Google Cloud のレイテンシ ジョブが含まれていた場合にのみ必要です。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