Implantar e usar um contêiner de aprendizado profundo (DL)

Um contêiner de aprendizado profundo (DL, na sigla em inglês) é um contêiner do Docker com frameworks, bibliotecas e ferramentas de ciência de dados pré-instalados. Um usuário, como um cientista de dados, escolhe um único contêiner de DL e o implanta. O contêiner implantado tem um ambiente consistente e otimizado para desempenho que ajuda a prototipar e implementar fluxos de trabalho rapidamente.

Implantar um contêiner de DL

Antes de usar um contêiner de aprendizado profundo, escolha e implante uma imagem de contêiner que execute sua tarefa de machine learning (ML). Frameworks, bibliotecas e ferramentas pré-instaladas provisionam um contêiner de DL.

Implantar um contêiner de DL usando arquivos kubeconfig

O dispositivo com isolamento físico do Google Distributed Cloud (GDC) fornece o seguinte arquivo kubeconfig que implanta seu contêiner de DL:

  • CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster do Kubernetes bare metal. O GDC oferece um cluster para todas as cargas de trabalho.

Para mais informações sobre como fazer login na UI e na ferramenta kubectl, consulte Fazer login. Para recuperar o arquivo CLUSTER_KUBECONFIG, consulte Receber um arquivo kubeconfig.

Fazer o download do script e do conjunto de dados de amostra de machine learning (ML)

Faça o download do script de ML de amostra, beginner.ipynb, e do conjunto de dados, mnist.npz, para executar o tutorial de início rápido de ML. O tutorial demonstra como implantar e usar um contêiner de DL para executar experimentos de ML.

mkdir -p /tmp/datasets
cd /tmp/datasets

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/beginner.ipynb

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/mnist.npz

Substitua GDC_APPLIANCE_URL pelo nome de domínio usado para acessar o GDC. Ao abrir um URL pela primeira vez, o GDC redireciona você para a página de login do provedor de identidade.

Procure o endereço IP do registro do Harbor.

Antes de usar o script e o conjunto de dados de amostra, encontre o local da imagem do contêiner de DL no registro do Harbor. O registro do Harbor é um serviço que armazena imagens de contêiner particulares.

A primeira linha do código de exemplo define o caminho da variável de ambiente KUBECONFIG, que recebe o endereço do registro do Harbor. O endereço do registro do Harbor fornece acesso a uma lista de imagens de contêiner disponíveis.

Na segunda linha do exemplo de código, a ferramenta kubectl usa a variável de ambiente KUBECONFIG.

Na terceira linha do exemplo de código, o comando REGISTRY_URL#https:// remove o prefixo https:// do URL e armazena o domínio do registro do Harbor na variável de ambiente REGISTRY_IP.

Na última linha do exemplo de código, a ferramenta kubectl busca a senha do usuário admin.

export KUBECONFIG=CLUSTER_KUBECONFIG

REGISTRY_URL=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
REGISTRY_IP=${REGISTRY_URL#https://}
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d)

Escolher uma imagem de contêiner

É necessário escolher uma imagem de contêiner para implantar antes de executar uma tarefa de ML. Use o domínio do registro do Harbor e o caminho na tabela a seguir do registro do Harbor para conferir a lista de imagens de contêiner disponíveis:

Framework Processador Nome da imagem do contêiner
Base GPU base-cu113
Base CPU base-cpu
TensorFlow Enterprise 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

Essa tabela é organizada por framework e processador. Para escolher uma imagem de contêiner de DL que possa processar seu experimento de ML, siga estas etapas:

  1. Identifique o framework, que contém as ferramentas de ML.
  2. Escolha o processador. Você escolhe o processador com base no tipo de tarefa de ML a ser executada e na intensidade de computação dessa tarefa. Por exemplo, escolha um dos processadores de GPU quando tiver uma tarefa de ML com uso intenso de computação e aloque um recurso de GPU ao contêiner de DL.

Criar e implantar um contêiner de DL no cluster do Kubernetes

Para criar a instância do GDC, especifique o caminho para o arquivo kubeconfig do cluster do Kubernetes bare metal. A variável de ambiente KUBECONFIG especifica em qual cluster a ferramenta kubectl implanta o contêiner de aprendizado profundo. O comando kubectl apply implanta a instância do contêiner de DL.

Substitua CONTAINER_IMAGE_NAME pela imagem selecionada na lista de imagens em Escolher uma imagem de contêiner e forneça a tag.

export KUBECONFIG=CLUSTER_KUBECONFIG

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: dl-container-pod
  namespace: NAMESPACE
spec:
  containers:
  - image: gcr.io/private-cloud-staging/notebooks/deeplearning-platform-release/CONTAINER_IMAGE_NAME:CONTAINER_IMAGE_TAG
    command: ["tail", "-f", "/dev/null"]
    name: training
EOF

Usar um contêiner de DL implantado

Os tópicos a seguir mostram um exemplo de como usar uma imagem de contêiner de aprendizado profundo para treinar e usar um modelo para gerar previsões.

Copie os arquivos do tutorial para o pod do contêiner de DL

Copie os arquivos do tutorial de início rápido para o pod do contêiner de DL. O beginner.ipynb contém as etapas para treinar e usar um modelo para fazer previsões. O tutorial de treinamento de ML usa o arquivo de conjunto de dados mnist.npz para treinar um modelo.

cd /tmp/datasets

kubectl cp beginner.ipynb dl-container-pod:/tmp
kubectl cp mnist.npz dl-container-pod:/tmp

Executar o tutorial de início rápido de ML

Execute o tutorial com os seguintes comandos. Use a primeira linha para inserir o pod do contêiner. Depois de entrar no pod do contêiner, mude o diretório para tmp e execute a ferramenta papermill incluída no contêiner de DL. A ferramenta papermill executa o tutorial para criar um notebook que gera previsões.

  1. Insira um terminal interativo no pod de DL:

    kubectl exec -it dl-container-pod -- /bin/bash
    
  2. No contexto do pod de DL, execute os seguintes comandos:

    cd tmp
    papermill beginner.ipynb result.ipynb
    

    A implantação gera um arquivo result.ipynb no diretório /tmp.

  3. Confira o conteúdo e as saídas de previsão do modelo de ML gerado:

    cat result.ipynb
    

Opcional: excluir o pod do contêiner de DL

Depois de concluir o experimento no pod do contêiner de DL, exclua o pod como prática recomendada:

kubectl delete pod dl-container-pod