Configure o seu ambiente

Configure um ambiente antes de iniciar uma experiência do Vertex AI Neural Architecture Search.

Antes de começar

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. Install the Google Cloud CLI.

  6. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  7. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  8. Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:

    gcloud components update
    gcloud components install beta
  9. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  10. Verify that billing is enabled for your Google Cloud project.

  11. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  12. Install the Google Cloud CLI.

  13. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  14. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  15. Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:

    gcloud components update
    gcloud components install beta
  16. 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.
  17. 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 usar sudo:

    sudo usermod -a -G docker ${USER}
    

    Pode ter de reiniciar o sistema depois de se adicionar ao grupo docker.

  18. 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
  19. Use gcloud como o auxiliar de credenciais para o Docker:
    gcloud auth configure-docker
  20. (Opcional) Se quiser executar o contentor com a GPU localmente, instale nvidia-docker.
  21. 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.

    1. 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
    2. Verifique o nome do contentor que criou.

      echo $BUCKET_NAME
    3. Selecione uma região para o seu contentor e defina uma REGIONvariá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 como us-central1:

      REGION=us-central1
    4. Crie o novo contentor:

      gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION

    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: Quota de filtros

    1. Para Serviço, selecione API Vertex AI.
    2. Para região, selecione a região pela qual quer filtrar.
    3. 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.

    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:

    Ative o registo de artefactos

    Depois de ativado, comece a criar um novo repositório clicando em CRIAR REPOSITÓRIO:

    Crie um Artifact Registry

    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.

    Definição do Artifact Registry

    Isto deve criar o repositório Docker pretendido, conforme apresentado abaixo:

    Artifact Registry criado

    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.

    1. Configure as variáveis de ambiente básicas:

      gcloud config set project PROJECT_ID
      gcloud auth login
      gcloud auth application-default login
      
    2. Configure a autenticação do Docker para o seu registo de artefactos:

      # example: REGION=europe-west4
      gcloud auth configure-docker REGION-docker.pkg.dev
      
    3. (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
      
    4. Instale bibliotecas adicionais:

      pip install google-cloud-storage==2.6.0
      pip install pyglove==0.1.0
      

    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.

    1. Crie uma conta de serviço:

      gcloud iam service-accounts create NAME \
          --description=DESCRIPTION \
          --display-name=DISPLAY_NAME
      
    2. Conceda a função aiplatform.user e storage.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
      

    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.

    1. Abra um novo terminal de shell.

    2. Execute o comando Git clone:

      git clone https://github.com/google/vertex-ai-nas.git