A utilização de uma imagem de contentor personalizada oferece a maior flexibilidade para a preparação no Vertex AI. Para saber como a utilização de uma imagem de contentor personalizado difere da utilização de uma aplicação de preparação Python com um contentor pré-criado, leia os requisitos de código de preparação.
O guia explica os seguintes passos:
- Criar um contentor personalizado:
- Escrever um Dockerfile que configure o seu contentor para funcionar com o Vertex AI e inclua as dependências necessárias para a sua aplicação de preparação.
- Criar e executar o seu contentor Docker localmente.
- Enviar a imagem de contentor para o Artifact Registry.
Antes de começar
Para configurar um repositório da API Artifact Registry e configurar o Docker no seu ambiente de desenvolvimento, siga o guia de início rápido do Artifact Registry para o Docker. Em concreto, certifique-se de que conclui os seguintes passos do início rápido:
- Antes de começar
- Escolha uma capa
- Crie um repositório do Docker
- Configure a autenticação
Crie uma imagem de contentor personalizada
Recomendamos dois fluxos de trabalho possíveis para criar uma imagem de contentor personalizada:
Escreva o seu código de treino. Em seguida, use o comando
local-run
da CLI gcloud para criar e testar uma imagem de contentor personalizada com base no seu código de preparação sem escrever um Dockerfile.Este fluxo de trabalho pode ser mais simples se não tiver experiência com o Docker. Se seguir este fluxo de trabalho, pode ignorar o resto desta secção.
Escreva o seu código de treino. Em seguida, escreva um Dockerfile e crie uma imagem de contentor com base nele. Por fim, teste o contentor localmente.
Este fluxo de trabalho oferece mais flexibilidade, porque pode personalizar a imagem do contentor como quiser.
O resto desta secção explica um exemplo do último fluxo de trabalho.
Código de formação
Pode escrever código de preparação usando quaisquer dependências em qualquer linguagem de programação. Certifique-se de que o seu código cumpre os requisitos do código de preparação. Se planeia usar o ajuste de hiperparâmetros, as GPUs ou a formação distribuída, certifique-se de que lê as secções correspondentes desse documento. Estas secções descrevem considerações específicas para usar as funcionalidades com contentores personalizados.
Crie um ficheiro Dockerfile
Crie um Dockerfile para especificar todas as instruções necessárias para criar a imagem do contentor.
Esta secção explica como criar um exemplo genérico de um Dockerfile para usar na preparação personalizada. Para saber como criar uma imagem de contentor, leia o início rápido da documentação do Docker.
Para utilização com o Vertex AI, o seu Dockerfile tem de incluir comandos que abrangem as seguintes tarefas:
- Escolha uma imagem base
- Instale dependências adicionais
- Copie o código de preparação para a imagem
- Configure o ponto de entrada para o Vertex AI invocar o seu código de preparação
O Dockerfile pode incluir lógica adicional, consoante as suas necessidades. Para mais informações sobre cada instrução específica, consulte a referência do Dockerfile.
Comando Dockerfile | Descrição | Exemplo(s) |
---|---|---|
FROM image:tag |
Especifica uma imagem básica e a respetiva etiqueta. | Exemplos de imagens de base com etiquetas:
|
WORKDIR /path/to/directory |
Especifica o diretório na imagem onde as instruções subsequentes são executadas. | /root |
|
Instala pacotes adicionais através de pip .Nota: se a imagem base não tiver o |
Exemplos de pacotes:
|
COPY src/training-app.py dest/training-app.py |
Copia o código da sua aplicação de preparação para a imagem. Consoante a estrutura da sua aplicação de preparação, é provável que inclua vários ficheiros. | Exemplos de nomes de ficheiros na sua aplicação de preparação:
|
|
Configura o ponto de entrada para invocar a execução do seu código de treino. Quando
inicia o treino personalizado, pode substituir este ponto de entrada especificando o campo command no seu ContainerSpec . Também pode especificar o campo args no ContainerSpec para fornecer argumentos adicionais ao ponto de entrada (e substituir a instrução CMD da imagem do contentor, se tiver uma). |
["python", "task.py"] |
A lógica no seu Dockerfile pode variar de acordo com as suas necessidades, mas, em geral, é semelhante a esta:
# Specifies base image and tag FROM image:tag WORKDIR /root # Installs additional packages RUN pip install pkg1 pkg2 pkg3 # Downloads training data RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename # Copies the trainer code to the docker image. COPY your-path-to/model.py /root/model.py COPY your-path-to/task.py /root/task.py # Sets up the entry point to invoke the trainer. ENTRYPOINT ["python", "task.py"]
(Opcional) Ajuste o seu Dockerfile para VMs de TPU
Se quiser fazer a preparação no Vertex AI com uma VM de TPU, tem de
ajustar o seu Dockerfile para instalar versões especialmente criadas das bibliotecas tensorflow
e libtpu
. Saiba como ajustar o contentor para utilização com uma VM de TPU.
Crie a imagem de contentor
Crie o URI da imagem correto através de variáveis de ambiente e, de seguida, crie a imagem do Docker:
export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export REPO_NAME=REPOSITORY_NAME
export IMAGE_NAME=IMAGE_NAME
export IMAGE_TAG=IMAGE_TAG
export IMAGE_URI=us-central1-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}
docker build -f Dockerfile -t ${IMAGE_URI} ./
Nestes comandos, substitua o seguinte:
- REPOSITORY_NAME: o nome do repositório do Artifact Registry que criou na secção Antes de começar.
- IMAGE_NAME: um nome à sua escolha para a imagem do contentor.
- IMAGE_TAG: uma etiqueta à sua escolha para esta versão da imagem do contentor.
Saiba mais sobre os requisitos do Artifact Registry para atribuir um nome à sua imagem de contentor.
Execute o contentor localmente (opcional)
Valide a imagem do contentor executando-a localmente como um contentor. É provável que queira executar o código de preparação num conjunto de dados mais pequeno ou durante um número mais curto de iterações do que planeia executar no Vertex AI. Por exemplo, se o script de ponto de entrada na imagem do contentor aceitar uma flag --epochs
para controlar o número de épocas durante as quais é executado, pode executar o seguinte comando:
docker run ${IMAGE_URI} --epochs 1
Envie o contentor para o Artifact Registry
Se a execução local funcionar, pode enviar o contentor para o Artifact Registry.
Primeiro, execute gcloud auth configure-docker us-central1-docker.pkg.dev
se ainda não o tiver feito no seu ambiente de programação. Em seguida, execute o seguinte comando:
docker push ${IMAGE_URI}
Autorizações do Artifact Registry
Se estiver a usar uma imagem do Artifact Registry do mesmo Google Cloud projeto onde está a usar o Vertex AI, não é necessário configurar mais autorizações. Pode criar imediatamente uma tarefa de preparação personalizada que use a sua imagem de contentor.
No entanto, se tiver enviado a imagem do contentor para o Artifact Registry num Google Cloud projeto diferente do projeto onde planeia usar o Vertex AI, tem de conceder ao agente de serviço do Vertex AI para o seu projeto do Vertex AI autorização para extrair a imagem do outro projeto. Saiba mais sobre o agente de serviço da Vertex AI e como lhe conceder autorizações.
Artifact Registry
Para saber como conceder ao agente de serviço da Vertex AI acesso ao seu repositório do Artifact Registry, leia a documentação do Artifact Registry sobre a concessão de autorizações específicas do repositório.
O que se segue?
- Saiba mais sobre os conceitos envolvidos na utilização de contentores.
- Saiba mais sobre os requisitos do código de preparação adicionais para a preparação personalizada.
- Saiba como criar uma tarefa de preparação personalizada ou um pipeline de preparação que use o seu contentor personalizado.