Configure um ambiente antes de iniciar uma experiência do Vertex AI Neural Architecture Search.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:
gcloud components update gcloud components install beta
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:
gcloud components update gcloud components install beta
- Para conceder a todos os utilizadores do Neural Architecture Search a função
Utilizador da Vertex AI (
roles/aiplatform.user
), contacte o administrador do projeto. - Instale o Docker.
Se estiver a usar um sistema operativo baseado em Linux, como o Ubuntu ou o Debian, adicione o seu nome de utilizador ao grupo
docker
para poder executar o Docker sem usarsudo
:sudo usermod -a -G docker ${USER}
Pode ter de reiniciar o sistema depois de se adicionar ao grupo
docker
. - Abra o Docker. Para garantir que o Docker está em execução, execute o seguinte comando do Docker,
que devolve a data e a hora atuais:
docker run busybox date
- Use
gcloud
como o auxiliar de credenciais para o Docker:gcloud auth configure-docker
-
(Opcional) Se quiser executar o contentor com a GPU localmente,
instale
nvidia-docker
. -
Especifique um nome para o novo contentor. O nome tem de ser exclusivo em todos os contentores do Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
Por exemplo, use o nome do projeto com
-vertexai-nas
anexado:PROJECT_ID="YOUR_PROJECT_ID" BUCKET_NAME=${PROJECT_ID}-vertexai-nas
-
Verifique o nome do contentor que criou.
echo $BUCKET_NAME
-
Selecione uma região para o seu contentor e defina uma
REGION
variável de ambiente.Use a mesma região onde planeia executar tarefas de pesquisa de arquitetura neural.
Por exemplo, o código seguinte cria
REGION
e define-o comous-central1
:REGION=us-central1
-
Crie o novo contentor:
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
- Para Serviço, selecione API Vertex AI.
- Para região, selecione a região pela qual quer filtrar.
- Para Quota, selecione um nome de acelerador cujo prefixo seja Custom model training.
- Para GPUs V100, o valor é GPUs Nvidia V100 de preparação de modelos personalizados por região.
- Para CPUs, o valor pode ser CPUs de preparação de modelos personalizados para tipos de máquinas N1/E2 por região. O número da CPU representa a unidade de CPUs. Se quiser 8
highmem-16
CPUs, faça o pedido de quota para 8 * 16 = 128 unidades de CPU. Introduza também o valor pretendido para a região.
Configure as variáveis de ambiente básicas:
gcloud config set project PROJECT_ID gcloud auth login gcloud auth application-default login
Configure a autenticação do Docker para o seu registo de artefactos:
# example: REGION=europe-west4 gcloud auth configure-docker REGION-docker.pkg.dev
(Opcional) Configure um ambiente virtual do Python 3. A utilização do Python 3 é recomendada, mas não obrigatória:
sudo apt install python3-pip && \ pip3 install virtualenv && \ python3 -m venv --system-site-packages ~/./nas_venv && \ source ~/./nas_venv/bin/activate
Instale bibliotecas adicionais:
pip install google-cloud-storage==2.6.0 pip install pyglove==0.1.0
Crie uma conta de serviço:
gcloud iam service-accounts create NAME \ --description=DESCRIPTION \ --display-name=DISPLAY_NAME
Conceda a função
aiplatform.user
estorage.objectAdmin
à conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/aiplatform.user gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin
Abra um novo terminal de shell.
Execute o comando Git clone:
git clone https://github.com/google/vertex-ai-nas.git
Configure o seu contentor do Cloud Storage
Esta secção demonstra como criar um novo contentor. Pode usar um contentor existente, mas tem de estar na mesma região onde está a executar tarefas do AI Platform. Além disso, se não fizer parte do projeto que está a usar para executar a pesquisa de arquitetura neural, tem de conceder explicitamente acesso às contas de serviço da pesquisa de arquitetura neural.
Peça uma quota de dispositivos adicional para o projeto
Os tutoriais usam aproximadamente cinco máquinas de CPU e não requerem quota adicional. Depois de executar os tutoriais, execute a tarefa de pesquisa de arquitetura neural.
A tarefa de pesquisa de arquitetura neural prepara um lote de modelos em paralelo. Cada modelo preparado corresponde a um teste.
Leia a secção sobre definir o number-of-parallel-trials
para estimar a quantidade de CPUs e GPUs necessárias para uma tarefa de pesquisa.
Por exemplo, se cada teste usar 2 GPUs T4 e definir number-of-parallel-trials
como 20, precisa de uma quota total de 40 GPUs T4 para uma tarefa de pesquisa. Além disso, se cada avaliação estiver a usar uma highmem-16
CPU, precisa de 16 unidades de CPU
por avaliação, o que equivale a 320 unidades de CPU para 20 avaliações paralelas.
No entanto, pedimos um mínimo de 10 quotas de testes paralelos
(ou 20 quotas de GPU).
A quota inicial predefinida para GPUs varia consoante a região e o tipo de GPU
e costuma ser 0, 6 ou 12 para Tesla_T4
e 0 ou 6 para Tesla_V100. A quota inicial predefinida para CPUs varia consoante a região e, normalmente, é de 20,450 ou 2200.
Opcional: se planeia executar várias tarefas de pesquisa em paralelo, aumente o requisito de quota. A solicitação de uma quota não lhe é cobrada imediatamente. A cobrança é efetuada assim que executar uma tarefa.
Se não tiver quota suficiente e tentar iniciar uma tarefa que precise de mais recursos do que a sua quota, a tarefa não é iniciada e é apresentado um erro semelhante ao seguinte:
Exception: Starting job failed: {'code': 429, 'message': 'The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd', 'status': 'RESOURCE_EXHAUSTED', 'details': [{'@type': 'type.googleapis.com/google.rpc.DebugInfo', 'detail': '[ORIGINAL ERROR] generic::resource_exhausted: com.google.cloud.ai.platform.common.errors.AiPlatformException: code=RESOURCE_EXHAUSTED, message=The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd, cause=null [google.rpc.error_details_ext] { code: 8 message: "The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd" }'}]}
Em alguns casos, se forem iniciadas várias tarefas para o mesmo projeto ao mesmo tempo e a quota não for suficiente para todas, uma das tarefas permanece no estado de fila e não inicia a preparação. Neste caso, cancele a tarefa em fila e peça mais quota ou aguarde até que a tarefa anterior termine.
Pode pedir a quota de dispositivos adicional na página Quotas.
Pode aplicar filtros para encontrar a quota pretendida para edição:
Depois de criar um pedido de quota, recebe um email de seguimento Case number
sobre o estado do seu pedido. A aprovação de uma quota de GPU pode demorar aproximadamente dois a cinco dias úteis. Em geral, a aprovação de uma quota de aproximadamente 20 a 30 GPUs deve ser mais rápida, demorando cerca de dois a três dias. Já a aprovação de aproximadamente 100 GPUs pode demorar cinco dias úteis. A aprovação de uma quota de CPU pode demorar até dois dias úteis.
No entanto, se uma região estiver a sofrer uma grande escassez de um tipo de GPU, não existe garantia, mesmo com um pedido de quota pequeno.
Neste caso, pode ser-lhe pedido que opte por uma região ou um tipo de GPU diferente. Em geral, é mais fácil obter GPUs T4 do que V100s. As GPUs T4 demoram mais tempo real, mas são mais rentáveis.
Para mais informações, consulte o artigo Peça um ajuste da quota.
Configure o Artifact Registry para o seu projeto
Tem de configurar um artifact registry para o seu projeto e região onde envia as suas imagens Docker.
Aceda à página Artifact Registry do seu projeto. Se ainda não estiver ativada, ative primeiro a API Artifact Registry para o seu projeto:
Depois de ativado, comece a criar um novo repositório clicando em CRIAR REPOSITÓRIO:
Escolha Nome como nas, Formato como Docker e Tipo de localização como Região. Para Região, selecione a localização onde executa os seus trabalhos e, de seguida, clique em CRIAR.
Isto deve criar o repositório Docker pretendido, conforme apresentado abaixo:
Também tem de configurar a autenticação para enviar dockers para este repositório. A secção de configuração do ambiente local abaixo contém este passo.
Configure o seu ambiente local
Pode executar estes passos através da shell Bash no seu ambiente local ou executá-los a partir de um bloco de notas numa instância do Vertex AI Workbench.
Configure uma conta de serviço
Tem de configurar uma conta de serviço antes de executar tarefas de NAS. Pode executar estes passos através da shell Bash no seu ambiente local ou executá-los a partir de um bloco de notas numa instância do Vertex AI Workbench.
Por exemplo, os seguintes comandos criam uma conta de serviço denominada my-nas-sa
no projeto my-nas-project
com a função aiplatform.user
e storage.objectAdmin
:
gcloud iam service-accounts create my-nas-sa \
--description="Service account for NAS" \
--display-name="NAS service account"
gcloud projects add-iam-policy-binding my-nas-project \
--member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
--role=roles/aiplatform.user
gcloud projects add-iam-policy-binding my-nas-project \
--member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
--role=roles/storage.objectAdmin
Transferir código
Para iniciar uma experiência de pesquisa de arquitetura neural, tem de transferir o código Python de exemplo, que inclui formadores pré-criados, definições do espaço de pesquisa e bibliotecas cliente associadas.
Execute os seguintes passos para transferir o código fonte.