このドキュメントでは、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 コンテナをビルドし、Google Cloud Container 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
でビルドされ、Google Cloud Container Registry に push されます。
--latency_calculator_docker_id
を指定すると、--latency_calculator_docker_file
フラグで指定された Docker ファイルからレイテンシ計算 Docker がビルドされます。Docker は完全な URI gcr.io/project_id/latency_calculator_docker_id
でビルドされ、Google Cloud Container 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