Como usar o peering de rede VPC com o Training

É possível configurar jobs do AI Platform Training para fazer peering com a nuvem privada virtual (VPC). Isso permite que os jobs de treinamento acessem endereços IP particulares no Google Cloud ou em redes locais. O IP particular para conexão com jobs de treinamento oferece mais segurança de rede e menor latência de rede do que o IP público.

Neste guia, mostramos como configurar o IP particular com o AI Platform Training usando o peering de rede VPC para fazer peering na rede com jobs do AI Platform Training. Este guia é recomendado para administradores de rede que já estão familiarizados com os conceitos de rede do Google Cloud.

Visão geral

Este guia abrange as seguintes tarefas:

  • Configurar o acesso a serviços privados para a VPC. Isso estabelece uma conexão de peering entre sua VPC e a rede VPC compartilhada do Google.
  • Considerar o intervalo de IP que você precisa reservar para o AI Platform Training.
  • Se aplicável, exporte rotas personalizadas para que o AI Platform Training possa importá-las.
  • Verificar o status das suas conexões de peering.
  • Enviar um job de treinamento na sua rede.
  • Verificar se há jobs de treinamento ativos em uma rede antes de enviar jobs em outra rede.
  • Testar se um job de treinamento pode acessar IPs particulares na sua rede.

Antes de começar

  • Selecione uma VPC com que você quer fazer peering com jobs do AI Platform Training.
  • Selecione ou crie um projeto do Google Cloud para executar jobs de treinamento com o AI Platform Training.
  • Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  • Enable the Compute Engine API, AI Platform Training & Prediction, and the Service Networking APIs.

    Enable the APIs

  • Se quiser, use a VPC compartilhada. Se você usa a VPC compartilhada, geralmente executa jobs de treinamento em um projeto do Google Cloud separado do projeto host da VPC. Ative a API Compute Engine e as APIs Service Networking nos dois projetos. Saiba como provisionar VPC compartilhada.
  • Instale a CLI gcloud se você quiser executar os exemplos de linhas de comando gcloud neste guia.

Permissões

Se você não for proprietário ou editor de um projeto, verifique se tem o papel de administrador de rede de computação, que inclui as permissões necessárias para gerenciar recursos de rede.

Para executar jobs no AI Platform Training, você precisa das permissões incluídas nos papéis de administrador ou desenvolvedor do AI Platform Training. Saiba mais sobre os papéis do IAM do AI Platform Training.

Peering com uma rede local

Para fazer peering da rede VPC com uma rede local, há etapas adicionais:

  1. Conecte sua rede local à VPC. Você pode usar um túnel VPN ou uma interconexão.
  2. Configure rotas personalizadas da VPC para sua rede local.
  3. Exporte suas rotas personalizadas para que o AI Platform Training possa importá-las.

Configurar o acesso a serviços particulares para sua VPC

Ao configurar o acesso a serviços particulares, você estabelece uma conexão particular entre sua rede e uma rede de propriedade do Google ou de um serviço de terceiros (produtores de serviços). Neste caso, o AI Platform Training é um produtor de serviços. Para configurar o acesso a serviços particulares, reserve um intervalo de IP para os produtores de serviços e crie uma conexão de peering com o AI Platform Training.

Se você já tiver uma VPC com acesso a serviços particulares configurada e quiser usá-la para fazer peering com seu job de treinamento, vá para a exportação de rotas personalizadas.

  1. Defina variáveis de ambiente para o ID do projeto, o nome da região, do intervalo reservado e da rede.
    • Se você usar a VPC compartilhada, use o ID do projeto host da VPC. Caso contrário, use o ID do projeto do Google Cloud usado para executar jobs de treinamento.
    • Selecione uma região qualificada para usar com o AI Platform Training.
  2. Ative as APIs necessárias. Se você usa a VPC compartilhada, ative as APIs no projeto host da VPC e no projeto do Google Cloud usado para executar jobs de treinamento.
  3. Defina um intervalo reservado usando gcloud compute addresses create.
  4. Estabeleça uma conexão de peering entre o projeto host da VPC e a rede de serviços do Google usando gcloud services vpc-peerings connect.

    PROJECT_ID=YOUR_PROJECT_ID
    gcloud config set project $PROJECT_ID
    
    REGION=YOUR_REGION
    
    # This is for display only; you can name the range anything.
    PEERING_RANGE_NAME=google-reserved-range
    
    NETWORK=YOUR_NETWORK_NAME
    
    # NOTE: `prefix-length=16` means a CIDR block with mask /16 will be
    # reserved for use by Google services, such as AI Platform Training.
    gcloud compute addresses create $PEERING_RANGE_NAME \
      --global \
      --prefix-length=16 \
      --description="peering range for Google service" \
      --network=$NETWORK \
      --purpose=VPC_PEERING
    
    # Create the VPC connection.
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK \
      --ranges=$PEERING_RANGE_NAME \
      --project=$PROJECT_ID
    

Saiba mais sobre o acesso privado a serviços.

Como reservar intervalos de IP para o AI Platform Training

Quando você reserva um intervalo de IP para produtores de serviços, ele pode ser usado pelo AI Platform Training e por outros serviços. Portanto, se você planeja conectar outros serviços ao mesmo intervalo reservado, verifique se o intervalo é grande o suficiente para evitar o esgotamento do IP.

É possível estimar de maneira conservadora o número de endereços usados por cada job de treinamento da seguinte maneira:

nextPow2(32 * NUMBER_OF_POOLS * max(POOL_SIZE))

A tabela a seguir mostra o número máximo de jobs de treinamento paralelo que podem ser executados com intervalos reservados de /16 a /19, supondo que o intervalo seja usado quase que exclusivamente pelo AI Platform Training.

Configuração da máquina para o job de treinamento Intervalo reservado Número máximo de jobs paralelos
Até 8 nós.
Por exemplo: 6 workers, 1 mestre e 1 servidor de parâmetros.
/16 63
/17 31
/18 15
/19 7
Até 16 nós.
Por exemplo: 14 workers, 1 mestre e 1 servidor de parâmetros.
/16 31
/17 15
/18 7
/19 3
Até 32 nós.
Por exemplo: 30 workers, 1 mestre e 1 servidor de parâmetros.
/16 15
/17 7
/18 3
/19 1

Saiba mais sobre como especificar tipos de máquina para jobs de treinamento.

Exportar rotas personalizadas

Se você usar rotas personalizadas, precisará exportá-las para que o AI Platform Training possa importá-las. Se você não usa rotas personalizadas, prossiga para o envio do job de treinamento.

Para exportar rotas personalizadas, atualize a conexão de peering na sua VPC. A exportação de rotas personalizadas envia todas as rotas estáticas e dinâmicas qualificadas que estão na sua rede VPC, como rotas para sua rede local, para redes de produtores de serviços (neste caso, AI Platform Training). Isso estabelece as conexões necessárias e permite que os jobs de treinamento enviem tráfego de volta para sua rede local.

Saiba mais sobre conexões particulares com redes locais.

Console

  1. Acesse a página "Peering de rede VPC" no Console do Google Cloud.
    Acessar a página "Peering de redes VPC"
  2. Selecione a conexão de peering a ser atualizada.
  3. Clique em Editar.
  4. Selecione Exportar rotas personalizadas.

gcloud

  1. Encontre o nome da conexão de peering a ser atualizada. Se você tiver várias conexões de peering, omita a sinalização --format.

    gcloud services vpc-peerings list \
      --network=$NETWORK \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID \
      --format "value(peering)"
    
  2. Atualize a conexão de peering para exportar rotas personalizadas.

    gcloud compute networks peerings update PEERING-NAME \
        --network=$NETWORK \
        --export-custom-routes \
        --project=$PROJECT_ID
    

Verificar o status das suas conexões de peering

Para ver se as conexões de peering estão ativas, você pode listá-las usando

gcloud compute networks peerings list --network $NETWORK

Você verá que o estado do peering que acabou de criar é ACTIVE. Saiba mais sobre conexões de peering ativas.

Enviar o job de treinamento.

Ao enviar o job de treinamento, você precisa especificar o nome da rede à qual quer que o AI Platform Training tenha acesso.

Se você enviar um job de treinamento sem um nome de rede, ele será executado por padrão sem uma conexão de peering e sem acesso a IPs particulares no projeto.

  1. Crie um config.yaml para especificar a rede. Se você estiver usando a VPC compartilhada, use o número do projeto host da VPC.

    Verifique se o nome da rede está formatado corretamente:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    cat << EOF > config.yaml
    trainingInput:
      scaleTier: BASIC
      network: projects/$PROJECT_NUMBER/global/networks/$NETWORK
    EOF
    
  2. Crie um aplicativo de treinamento para enviar ao AI Platform Training.

  3. Especifique outros parâmetros para o job de treinamento. Saiba mais sobre os parâmetros necessários para enviar um job de treinamento.

    TRAINER_PACKAGE_PATH="PATH_TO_YOUR_TRAINING_APPLICATION"
    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="YOUR_JOB_NAME_$now"
    MAIN_TRAINER_MODULE="trainer.task"
    JOB_DIR="gs://PATH_TO_OUTPUT_DIRECTORY"
    REGION="us-east1"
    RUNTIME_VERSION="2.11"
    PYTHON_VERSION="3.7"
    
  4. Envie o job, transmitindo seu arquivo config.yaml:

    gcloud ai-platform jobs submit training $JOB_NAME \
      --module-name $MAIN_TRAINER_MODULE \
      --job-dir $JOB_DIR \
      --region $REGION \
      --runtime-version $RUNTIME_VERSION \
      --python-version $PYTHON_VERSION \
      --package-path $TRAINER_PACKAGE_PATH \
      --config config.yaml
    

Como executar jobs em redes diferentes

Não é possível enviar jobs de treinamento para uma nova rede enquanto ainda houver jobs de treinamento ativos em outra rede. Antes de alternar para uma rede diferente, aguarde a conclusão de todos os jobs de treinamento enviados ou cancele-os. Por exemplo, se você configurar uma rede para teste e enviar jobs de treinamento a ela, precisará procurar jobs ativos na rede de teste e verificar se eles estão concluídos ou cancelados. Só depois, envie jobs de treinamento em uma rede diferente para produção.

Liste os jobs de treinamento que ainda estão ativos em uma rede:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
NETWORK_FULL_NAME="projects/$PROJECT_NUMBER/global/networks/$NETWORK"

gcloud ai-platform jobs list \
  --filter "(state=queued OR state=running) AND (trainingInput.network=$NETWORK_FULL_NAME)"

A saída pode ser semelhante a esta:

JOB_ID                                             STATUS     CREATED
job_20200502_151443                                QUEUED     2020-05-02T15:14:47

Se algum job estiver listado, aguarde a conclusão dele ou use gcloud ai-platform jobs cancel para cancelar cada um deles.

Testar o acesso ao job de treinamento

Para testar se o job de treinamento pode acessar um endpoint na rede, configure um endpoint na rede e envie um job de treinamento que o acesse. Saiba mais lendo o guia para testar a conexão de peering.

Solução de problemas

Esta seção lista alguns problemas comuns ao configurar o peering de rede VPC com o AI Platform Training.

  • Ao enviar o job de treinamento, use o nome completo da rede:

    "projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME"

  • Não use TPUs em um job de treinamento com peering com sua rede. As TPUs não são compatíveis com o peering de rede VPC no AI Platform Training.

  • Verifique se não há jobs de treinamento ativos em uma rede antes de enviar jobs de treinamento em uma rede diferente.

  • Verifique se você alocou um intervalo de IP suficiente para todos os produtores de serviços aos quais sua rede se conecta, incluindo o AI Platform Training.

Para mais informações sobre solução de problemas, consulte o guia de solução de problemas de peering de rede VPC.

A seguir