このドキュメントでは、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_path と validation_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