Biblioteca cliente de Vertex AI Neural Architecture Search

En este documento, se describe la biblioteca cliente de Neural Architecture Search de Vertex AI.

El cliente de búsqueda de arquitectura neuronal (en vertex_nas_cli.py) une la API de Management de trabajos y facilita el desarrollo de Neural Architecture Search. Proporciona los siguientes subcomandos:

  • vertex_nas_cli.py build: Compila contenedores de Neural Architecture Search y los envía al registro de contenedores de Google Cloud.
  • vertex_nas_cli.py run_latency_calculator_local: ejecuta la calculadora de latencia de forma local para el trabajo de búsqueda de etapa 1 de Neural Architecture Search.
  • vertex_nas_cli.py search_in_local: ejecuta un trabajo de Neural Architecture Search de forma local en tu máquina con una arquitectura de muestreo aleatoria.
  • vertex_nas_cli.py search: Ejecuta un trabajo de Neural Architecture Search con búsqueda de etapa 1 y entrenamiento de etapa 2 en Google Cloud.
  • vertex_nas_cli.py search_resume: Reanuda un trabajo anterior de Vertex AI Neural Architecture Search en Google Cloud.
  • vertex_nas_cli.py list_trials: enumera pruebas de Neural Architecture Search para trabajos específicos.
  • vertex_nas_cli.py train: entrena la arquitectura de modelo buscada (prueba) en Google Cloud.

Crea

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py build:

python3 vertex_nas_cli.py build -h

Si se especifica --trainer_docker_id, compila el Docker del entrenador desde el archivo de Docker que especifica la marca --trainer_docker_file. El Docker se compila con el URI completo gcr.io/project_id/trainer_docker_id y se envía a Container Registry de Google Cloud.

Si se especifica --latency_calculator_docker_id, compila el Docker de calculadora de latencia desde el archivo de Docker especificado por la marca --latency_calculator_docker_file. El Docker se compila con el URI completo gcr.io/project_id/latency_calculator_docker_id y se envía a Container Registry de Google Cloud.

En lugar de compilar con Dockerfile, también puedes usar otras herramientas, como bazel, para compilar el entrenador y usarlo con el servicio de la búsqueda de arquitectura neuronal.

Ejecuta la calculadora de latencia local

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py run_latency_calculator_local:

python3 vertex_nas_cli.py run_latency_calculator_local -h

Búsqueda en entornos locales

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py search_in_local:

python3 vertex_nas_cli.py search_in_local -h

Debes especificar --search_space_module o --prebuilt_search_space para que vertex_nas_cli.py genere de forma interna una arquitectura de modelo aleatoria que se pueda usar.

Este comando ejecutará el gcr.io/project_id/trainer_docker_id:latest de Docker en tu máquina local con una arquitectura de muestreo aleatoria.

Puedes pasar las marcas que usará el contenedor después de --search_docker_flags. Por ejemplo, puedes pasar --training_data_path y validation_data_path al contenedor:

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

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py search:

python3 vertex_nas_cli.py search -h

Debes especificar --search_space_module o --prebuilt_search_space para que vertex_nas_cli.py cree search_space_spec de forma interna.

--accelerator_type puede especificar las máquinas para ejecutar trabajos de Neural Architecture Search. Para obtener más información o personalizar tus necesidades, como usar más GPU, consulta add_machine_configurations.

Usa las marcas con el prefijo train_ para establecer los parámetros relacionados con el entrenamiento en etapa 2.

Reanuda la búsqueda

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py search_resume:

python3 vertex_nas_cli.py search_resume -h

Para reanudar un trabajo de búsqueda que se ejecutó antes, pasa previous_nas_job_id y, de forma opcional, previous_latency_job_id. La marca previous_latency_job_id solo es necesaria si tu trabajo de búsqueda anterior incluyó un trabajo de latencia de Google Cloud. Si, en lugar de un trabajo de latencia de Google Cloud, usaste una calculadora de latencia local, debes volver a ejecutar ese trabajo por separado. El trabajo de búsqueda anterior no debería ser un trabajo de reanudación. La región del trabajo de búsqueda de reanudación debe ser la misma que la del trabajo de búsqueda anterior. Un comando de search_resume de ejemplo se ve de la siguiente manera:

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

Enumera pruebas

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py list_trials:

python3 vertex_nas_cli.py list_trials -h

Entrenar

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py train:

python3 vertex_nas_cli.py train -h

Medición de la varianza de la tarea de proxy

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py measure_proxy_task_variance:

python3 vertex_nas_cli.py measure_proxy_task_variance -h

Selección de modelos de tareas de proxy

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py select_proxy_task_models:

python3 vertex_nas_cli.py select_proxy_task_models -h

Ejecuta el siguiente comando para ver la lista de argumentos que admite vertex_nas_cli.py search_proxy_task:

python3 vertex_nas_cli.py search_proxy_task -h