Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

As Vantagens da Abordagem Black Box do Vizier

By Joshua FoxAug 7, 20234 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Apenas um conselheiro

"Vizier" é o título dado ao conselheiro de um rei, derivado do árabe وزير wazīr, que chegou até nós pelo persa e pelo turco. O Vizier aconselha sobre a política real, mas não decide. E é assim que funciona a otimização black-box do Vizier: ele não executa as trials de otimização para você. Já os serviços de tuning de hiperparâmetros oferecidos pelo GCP e pela AWS fazem tudo no seu lugar. Você informa uma faixa de hiperparâmetros — por exemplo, a taxa de aprendizado variando continuamente de 0 a 1, ou o minimum child weight como um parâmetro inteiro de 1 a 3. Você cria o cliente do tuner de hiperparâmetros e então faz "fire and forget", chamando uma função como fit(). Essa função roda por um tempo, talvez algumas horas, e internamente executa várias iterações de treinamento, escolhendo diferentes hiperparâmetros pelo caminho. No fim, o tuner devolve o melhor modelo que conseguiu encontrar.

O processo de Black Box Optimization fica fora do seu controle e é invisível para você. (Ao menos no que diz respeito à API: normalmente há sistemas de monitoramento por trás.)

Observação: "Black Box" significa que as suas trials são invisíveis para o Vizier. Ele não sabe nada sobre o treinamento de ML nem sobre o teste A/B. Não sabe nada sobre os gradientes, nem sobre as oscilações da função que está sendo otimizada dentro de cada trial.

Para você, por outro lado, essas trials são totalmente "white-box": quem manda é você.

Vantagens

Um serviço de tuning de hiperparâmetros parece mais simples que o Vizier, e, de fato, o Google construiu o Vertex AI AutoML e os tuners de hiperparâmetros da AI Platform (a marca antiga) em cima de um motor baseado em Vizier. Mas a abordagem Black Box, em que você interage diretamente com o Vizier, traz vantagens.

Controle

Com a Black Box Optimization, você ganha mais controle.

As trials geralmente estão dentro da sua área de domínio. Os desenvolvedores do seu site conhecem cada detalhe dele; seus cientistas de dados dominam os pormenores dos algoritmos de ML. Você já refletiu com cuidado sobre como extrair o melhor dos seus sistemas pelo menor custo. Com o Vizier, você mantém o controle total do treinamento de ML em si: qual infraestrutura ou APIs usar, quantas e quais GPUs ou TPUs, e por aí vai.

Você pode até ignorar as sugestões do Vizier e usar seus próprios parâmetros. Claro, normalmente você vai querer aproveitar as sugestões — afinal, é para isso que está usando o Vizier. Mas, por exemplo, você pode ler sobre um novo algoritmo para o seu ML, ou os product managers podem querer testar uma variante que não estava no teste A/B do site — e você pode simplesmente experimentar. Mesmo quando você roda a trial com seus próprios parâmetros, ainda dá para enviar parâmetros e métricas ao Vizier, e ele vai aprender com isso, exatamente como faz quando você adota os parâmetros sugeridos por ele.

Escalabilidade

O Vizier só cuida da parte "fácil": otimizar entre várias trials. Ele não faz o trabalho pesado de ML, que pode exigir muito hardware especializado. Também não faz o trabalho pesado de um teste A/B em um site nem de operar uma fábrica. Isso o torna escalável, porque você é quem lida com o treinamento real ou com o processo otimizado em questão — a parte mais intensa do fluxo todo —, podendo aplicar as melhores práticas mais adequadas à sua configuração. (Na Figura 1 abaixo, as suas máquinas de treinamento são os "Evaluation workers" sob a API REST do Vizier.)

Enquanto isso, o Vizier sobe workers de forma escalável para gerar sugestões ou indicar quando parar. Como o estado fica armazenado em um banco de dados, e não no contexto de uma única execução de otimização, ele consegue se recuperar de falhas. E como os workers de sugestão fazem hiperotimização, e não o seu "trabalho pesado", o Vizier escala esses workers com eficiência.

Figura 1. Diagrama de arquitetura (baseado no diagrama do artigo de pesquisa. )

Multiobjetivo

A maioria dos processos de otimização, e a maioria dos tuners de hiperparâmetros, busca maximizar uma única métrica. Esse também é o uso mais comum do Vertex AI Vizier. Mas, em alguns casos, você quer otimizar várias métricas ao mesmo tempo. Em um teste A/B de site, talvez você queira maximizar a receita e o tempo de permanência. Ou pode ter um marketplace de dois lados e querer que os compradores fechem bons negócios, mas que os vendedores também maximizem o lucro.

Para ilustrar o conceito com um exemplo simples, dá uma olhada neste Notebook de exemplo do Google, que maximiza duas funções trigonométricas a partir dos mesmos dois parâmetros de entrada.

Figura 2. Não existe um único ponto ótimo para as duas funções.

Como não há um único ponto em que ambas as métricas atinjam o máximo, o Vertex AI Vizier descobre a fronteira de Pareto: uma linha em que, de um lado dela, não dá para melhorar uma métrica sem piorar a outra. O ótimo não é um ponto — é uma fronteira.

A seguir: flexibilidade e os primeiros notebooks de ML com o Vizier

O Vizier é um sistema direto, e você pode (e, em geral, deve) usá-lo com as configurações padrão. Ainda assim, dá para ajustar mais a fundo o que ele oferece. No próximo artigo, mostraremos como fazer isso e traremos também alguns exemplos de código.