
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Launch Vertex AI Workbench instance
/ 30
Create a Dockerfile and add model training code
/ 30
Build the container
/ 20
Run a hyperparameter tuning job on Vertex AI
/ 20
Neste laboratório, você vai aprender a usar a Vertex AI para executar um job de ajuste de hiperparâmetros para um modelo do TensorFlow. Este laboratório usa o TensorFlow para o código do modelo, mas ele pode ser substituído sem problemas por outro framework.
Este laboratório usa a mais nova oferta de produtos de IA disponível no Google Cloud. A Vertex AI integra as ofertas de ML do Google Cloud em uma experiência de desenvolvimento intuitiva. Anteriormente, modelos treinados com o AutoML e modelos personalizados eram acessíveis por serviços separados. A nova oferta combina ambos em uma única API, com outros novos produtos. Você também pode migrar projetos existentes para a Vertex AI. Se você tiver algum feedback, consulte a página de suporte.
A Vertex AI inclui vários produtos diferentes para dar suporte a fluxos de trabalho integrais de ML. O foco deste laboratório são os produtos destacados abaixo: treinamento/ajuste de hiperparâmetros e Notebooks.
A Vertex AI tem duas soluções de notebooks, o Workbench e o Colab Enterprise.
O Vertex AI Workbench é uma boa opção para projetos que priorizam o controle e a personalização. Ele é ótimo para quando há vários arquivos com dependências complexas. Também é uma boa escolha para cientistas de dados que estão fazendo a transição da nuvem para uma estação de trabalho ou notebook.
As instâncias do Vertex AI Workbench vêm com um pacote pré-instalado de pacotes de aprendizado profundo, incluindo o suporte para os frameworks TensorFlow e PyTorch.
Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.
Faça login no Qwiklabs em uma janela anônima.
Confira o tempo de acesso do laboratório (por exemplo, 1:15:00
) e finalize todas as atividades nesse prazo.
Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.
Quando tudo estiver pronto, clique em Começar o laboratório.
Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.
Clique em Abrir Console do Google.
Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.
Aceite os termos e pule a página de recursos de recuperação.
No Console do Cloud, clique em Menu de navegação > API e Serviços > Biblioteca.
Pesquise por API Compute Engine e, em seguida, clique em Ativar se ela ainda não estiver ativada. Você vai precisar disso para criar sua instância de notebook.
No Console do Cloud, clique em Menu de navegação > API e Serviços > Biblioteca.
Pesquise API Google Container Registry e selecione Ativar caso ela ainda não esteja ativada. Use isso para criar um contêiner para seu job de treinamento personalizado.
No console do Google Cloud, no menu de navegação (), clique em Vertex AI.
Selecione Ativar todas as APIs recomendadas.
No menu de navegação, clique em Workbench.
Verifique se você está na visualização Instâncias do topo da página do Workbench.
Clique em Criar.
Configure a instância:
O processo vai levar alguns minutos, e uma marca de seleção verde vai aparecer ao lado do nome da instância quando ela estiver pronta.
Clique em Verificar meu progresso para conferir o objetivo.
Para enviar este job de ajuste de hiperparâmetros à Vertex, coloque o código do aplicativo de treinamento em um contêiner do Docker e envie-o ao Google Container Registry. Dessa forma, é possível ajustar hiperparâmetros para um modelo integrado a qualquer framework.
horses_or_humans
e use cd nele:A primeira etapa na conteinerização de seu código é criar um Dockerfile. No Dockerfile, você vai incluir todos os comandos necessários para executar a imagem. Ele vai instalar todas as bibliotecas necessárias, incluindo a biblioteca CloudML Hypertune e também configurar o ponto de entrada para o código de treinamento.
Este Dockerfile usa a imagem Docker do TensorFlow Enterprise 2.9 GPU no Deep Learning Container. Os Deep Learning Containers no Google Cloud vêm com muitos frameworks comuns de ML e ciência de dados pré-instalados.
Após fazer download dessa imagem, este Dockerfile configura o ponto de entrada para o código de treinamento. Você ainda não criou esses arquivos – na próxima etapa, você vai adicionar o código para treinar e ajustar o modelo.
Seu diretório horses_or_humans/
agora deve conter o seguinte:
Antes de criar o contêiner, vamos analisar o código mais a fundo. Existem alguns componentes específicos para usar o serviço de ajuste de hiperparâmetros.
O script importa a biblioteca hypertune
. Note que o Dockerfile da Etapa 1 incluiu instruções para instalar esta biblioteca com o pip.
A função get_args()
define um argumento de linha de comando para cada hiperparâmetro que você quiser ajustar. Neste exemplo, os hiperparâmetros que vão ser ajustados são a taxa de aprendizado, o valor do momento no otimizador e o número de neurônios na última camada escondida do modelo, mas fique à vontade para mexer nos outros. O valor passado nesses argumentos é usado para definir o hiperparâmetro correspondente no código.
No final da função main()
, a biblioteca hypertune
é usada para definir a métrica que você quer otimizar. No TensorFlow, o método model.fit
do keras retorna um objeto History
. O atributo History.history
é um registro de valores de perda de treinamento e valores de métricas em épocas sucessivas. Se você passar dados de validação para o model.fit
, o atributo History.history
também vai incluir perda de validação e valores de métricas.
Por exemplo, se você treinou um modelo para três épocas com dados de validação e forneceu accuracy
como uma métrica, o atributo History.history
seria semelhante ao dicionário abaixo.
Se quiser que o serviço de ajuste de hiperparâmetros descubra os valores que maximizam a acurácia da validação do modelo, defina a métrica como a última entrada (ou NUM_EPOCS - 1
) da lista val_accuracy
. Em seguida, passe essa métrica para uma instância do HyperTune
. É possível escolher qualquer string que quiser para hyperparameter_metric_tag
, mas você vai precisar usar a string novamente mais tarde quando iniciar o job de ajuste de hiperparâmetros.
Clique em Verificar meu progresso para conferir o objetivo.
your-cloud-project
pelo ID do seu projeto:gcloud config list --format 'value(core.project)'
no terminal.Depois que o contêiner for enviado para o Container Registry, estará tudo pronto para iniciar um job de ajuste de hiperparâmetros de modelos personalizados.
Clique em Verificar meu progresso para conferir o objetivo.
Este laboratório usa treinamento personalizado com um contêiner específico no Google Container Registry, mas também é possível executar um job de ajuste de hiperparâmetros com os contêineres pré-criados.
Clique em Treinar novo modelo para inserir os parâmetros do seu job de ajuste de hiperparâmetros:
horses-humans-hyptertune
(ou como quiser nomear seu modelo) em Nome do modelo.Na etapa de Contêiner de treinamento, selecione Contêiner personalizado:
gcr.io/<your-cloud-project>/horse-human:hypertune
, com o nome do seu projeto. Deixe os demais campos em branco e clique em Continuar.Em seguida, você vai precisar adicionar os hiperparâmetros definidos como argumentos de linha de comando no código do aplicativo de treinamento. Ao adicionar um hiperparâmetro, primeiro você vai precisar fornecer o nome. Ele deve corresponder ao nome do argumento que você passou para argparse
.
Insira learning_rate
no Nome do parâmetro.
Selecione Double como Tipo.
Insira os valores de 0,01
para Mín. e 1
para Máx..
Selecione Log como Escalonamento.
Clique em CONCLUÍDO.
Depois de adicionar o hiperparâmetro learning_rate
, adicione parâmetros para momentum
e num_neurons
.
Em momentum:
momentum
em Nome do parâmetro.0
para Mín. e 1
para Máx..Em num_neurons:
num_neurons
para Nome do parâmetro.64.128.512
em Valores.Depois de adicionar os hiperparâmetros, você vai fornecer a métrica que quer otimizar, e também a meta. Isso deve ser igual à hyperparameter_metric_tag que você configurou no seu aplicativo de treinamento.
accuracy
como a Métrica a ser otimizada.O serviço de ajuste de hiperparâmetros da Vertex AI vai executar diversas avaliações do seu aplicativo de treinamento com os valores configurados nas etapas anteriores. Você vai precisar definir um limite superior para o número de tentativas que o serviço vai executar.
Uma maior quantidade de testes geralmente leva a melhores resultados, mas vai haver um ponto de retornos decrescentes e, depois dele, testes adicionais vão ter pouco ou nenhum efeito sobre a métrica que você está tentando otimizar. É uma prática recomendada começar com um número menor de testes e ter uma noção do impacto dos hiperparâmetros escolhidos antes de escalonar verticalmente para um grande número de testes.
Você também vai precisar definir um limite superior para o número de tentativas paralelas. Aumentar o número de testes paralelos vai reduzir o tempo que o job de ajuste de hiperparâmetros leva para ser executado. No entanto, isso pode reduzir a eficácia do job em geral. Isso ocorre porque a estratégia de ajuste padrão usa resultados de tentativas anteriores para informar a atribuição de valores em tentativas subsequentes. Se você executar muitos testes em paralelo, vai haver testes que vão começar sem o benefício do resultado dos testes ainda em execução.
Para fins de demonstração, você pode configurar o Número máximo de testes como 15
e o Número máximo de testes em paralelo como 3
. É possível usar números diferentes, mas isso pode resultar em um tempo de ajuste mais longo e em custos mais altos.
Escolha Padrão como o Algoritmo, que vai usar o Google Vizier para realizar a otimização bayesiana para o ajuste de hiperparâmetros. Saiba mais sobre esse algoritmo na postagem no blog Como ajustar hiperparâmetros no Cloud Machine Learning Engine usando a otimização bayesiana (em inglês).
Clique em Continuar.
Em Computação e preços, não mude a região selecionada e, nas Configurações de computação, selecione Implantar em um novo pool de workers.
Configure o pool de workers 0 desta forma:
100
.Quando estiver concluído, você poderá clicar no nome do job e conferir os resultados dos testes de ajuste.
Clique em Verificar meu progresso para conferir o objetivo.
Se você quiser continuar usando o notebook que criou neste laboratório, é recomendado que você o desligue quando não estiver usando. A partir da interface de Notebooks no seu Console do Cloud, selecione o notebook e depois clique em Parar.
Se quiser excluir um notebook totalmente, simplesmente clique no botão Excluir no canto superior direito.
Para excluir o bucket de armazenamento, vá até o Menu de navegação > Cloud Storage, escolha seu bucket e clique em Excluir.
Você aprendeu a usar a Vertex AI para:
Iniciar um job de ajuste de hiperparâmetros para um código de treinamento fornecido em um contêiner personalizado. Neste exemplo você usou um modelo do TensorFlow, mas é possível treinar um modelo criado com qualquer framework usando contêineres personalizados ou integrados. Conheça as diferentes partes da Vertex AI na documentação.
Após terminar seu laboratório, clique em End Lab. O Qwiklabs removerá os recursos usados e limpará a conta para você.
Você poderá avaliar sua experiência neste laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Submit.
O número de estrelas indica o seguinte:
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Support.
Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.
Este conteúdo não está disponível no momento
Você vai receber uma notificação por e-mail quando ele estiver disponível
Ótimo!
Vamos entrar em contato por e-mail se ele ficar disponível
One lab at a time
Confirm to end all existing labs and start this one