Nesta seção, explicamos como testar se um job de treinamento pode acessar IPs particulares na rede. Primeiro, crie uma conexão particular entre a rede VPC e o AI Platform Training.
Visão geral
A configuração desse teste tem duas partes:
- Configurar um endpoint na rede.
- Enviar um job de treinamento de teste para acessar esse endpoint.
Configurar um endpoint
Para configurar um endpoint, configure um servidor local em uma instância de VM na rede.
- Crie uma instância do Compute Engine na sua rede VPC.
- Verifique suas regras de firewall para garantir que elas não restrinjam a entrada da rede do AI Platform Training. Em caso afirmativo, adicione uma regra para garantir que a rede do AI Platform Training possa acessar o intervalo de IPs reservado para ele (e outros produtores de serviços).
Encontre o endereço IP particular da VM:
- Acessar a página "Instâncias de VM"
- Acesse a página Detalhes da instância de VM e encontre o IP interno listado na página.
Defina o nome da instância e execute o seguinte comando
gcloud
:INSTANCE_NAME="your-instance-name" gcloud compute instances describe $INSTANCE_NAME \ --format="value(networkInterfaces.networkIP)"
Conecte o SSH à VM e instale o Node.js.
Copie o código do Node.js de amostra e preencha o endereço IP particular:
const http = require('http'); // Fill in the value of your vm's private IP const hostname = 'your_private_ip'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World ' + req.url + '\n'); }); server.listen(port, hostname, () => { console.log('Server running at http://${hostname}:${port}/'); }); ```
Execute o servidor:
nodejs hw.js
Saia do SSH da VM para enviar o job de treinamento.
Enviar um job de treinamento de teste
Em vez de treinar um modelo, este job de treinamento acessa o endpoint para verificar se o AI Platform Training pode acessar IPs particulares na rede.
- Copie o aplicativo de treinamento em Python de amostra para enviar ao AI Platform Training.
Atualize o código para incluir o endereço IP particular:
import logging import os import sys def main(): # Fill in the value of your vm's private IP hostname = "your_private_ip" response = os.system("curl http://" + hostname + ":3000/you_can_write_your_name_here") if response == 0: print(hostname, "is up!") logging.info("%s is up; Peering successful!", hostname) sys.exit(0) else: logging.error("%s is down; Peering failed!", hostname) sys.exit(1) if __name__ == "__main__": logging.getLogger().setLevel(logging.INFO) main()
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)") NETWORK=your-network-name cat << EOF > config.yaml trainingInput: scaleTier: BASIC network: projects/$PROJECT_NUMBER/global/networks/$NETWORK EOF
Envie o job para o AI Platform Training:
BUCKET_NAME=your_bucket_name JOB_ID='test_vpc_peering_job' gcloud ai-platform jobs submit training $JOB_ID \ --module-name trainingcode.test_peering \ --stream-logs \ --runtime-version 1.15 \ --job-dir gs://$BUCKET_NAME/$JOB_ID \ --region us-central1 \ --package-path trainingcode/ \ --config config.yaml
O job precisa ter êxito e exibir "Peering bem-sucedido". Isso valida a conexão de peering com o AI Platform Training.