Leia nosso artigo sobre

class="img-responsive

.

Neste artigo, apresentaremos uma ferramenta que demonstra, na prática, nossa experiência com o uso do Vertex AI Pipelines em um projeto em execução na produção.
Um tutorial completo sobre como treinar e implantar um modelo de ML personalizado em produção usando o Vertex AI Pipelines com o Kubeflow v2. Se você estiver confuso sobre como abordar o Vertex AI, poderá encontrar o caminho, pois tudo neste tutorial é baseado em experiências reais. Há muitos exemplos de pipelines que ilustram como usar determinados recursos interessantes do vertex AI e do Kubeflow. Você também encontrará um makefile para ajudá-lo a executar receitas importantes e economizar muito tempo para criar seu modelo e colocá-lo em funcionamento na produção.

Os pipelines em ML podem ser definidos como conjuntos de trabalhos conectados que executam partes completas ou específicas do fluxo de trabalho de ML (por exemplo, pipeline de treinamento).

exemplo de um pipeline de treinamento simples

exemplo de um pipeline de treinamento simples

Exemplo de um pipeline de treinamento no Vertex AI Pipelines usando o Kubeflow

Exemplo de um pipeline de treinamento no Vertex AI Pipelines usando o Kubeflow

Projetados adequadamente, os pipelines têm a vantagem de serem reproduzíveis e altamente personalizáveis. Essas duas propriedades tornam a experimentação e a implantação na produção uma tarefa relativamente fácil. O uso do Vertex AI Pipelines junto com o Kubeflow nos ajudou a projetar e executar rapidamente pipelines personalizados que têm as propriedades mencionadas acima. Os exemplos de pipelines que ilustramos no kit inicial são muito representativos do que se poderia encontrar ao trabalhar em um projeto de ML que precisa ser implantado na produção. Também compartilhamos várias dicas e scripts automatizados para que você possa se concentrar em se familiarizar com o Vertex AI.

Quando comecei a usar o Vertex AI Pipelines, fiquei bastante impressionado com todas as possibilidades de realizar exatamente a mesma tarefa. Não tinha muita certeza sobre as melhores opções de como construir meus pipelines. Depois de alguns meses, encontramos nosso caminho e forjamos algumas convicções, pelo menos no aspecto mais importante do gerenciamento do ciclo de vida de um projeto em produção com essa tecnologia.

Conforme declarado anteriormente, o objetivo deste artigo é apresentar um kit inicial que mostre, em métodos práticos, nossa experiência e o que aprendemos ao usar o Vertex AI Pipelines. Esperamos que isso ajude os iniciantes a compreender rapidamente essa ferramenta poderosa sem pagar o alto preço de entrada.

Nas próximas seções, apresentaremos os conceitos/recursos mais interessantes que encontramos usando o Vertex AI Pipelines. Também usaremos um projeto de previsão de brinquedo (a competição M5) para ilustrar tudo. Intencionalmente, não nos concentraremos na parte de modelagem, mas enfatizaremos as diferentes etapas necessárias para operacionalizar um modelo na produção.

Crie uma imagem de base personalizada e use-a como base para seus componentes

Se você já trabalhou com pipelines do Kubeflow, uma dúvida que pode ter é quando usar componentes baseados em contêineres em vez de componentes baseados em funções. Há muitos prós e contras em ambas as opções, no entanto, também é possível encontrar um meio termo. Os componentes baseados em contêineres são mais adequados para tarefas complexas em que há muitas dependências de código em comparação com os componentes baseados em funções, que contêm todas as dependências de código em uma função e geralmente são mais simples. O último é executado mais rapidamente, pois não precisamos criar e implantar uma imagem toda vez que editamos nosso código. Nos componentes baseados em funções, uma imagem padrão do python 3.7 é usada para executar sua função.

Nossa solução para executar componentes complexos e simples da mesma forma é trabalhar com uma versão sobrescrita da imagem de base padrão. Dentro dessa imagem de base alterada, instalamos todos os nossos códigos como um pacote. Em seguida, importamos essas funções dentro de componentes baseados em funções, como você faria com o pandas, por exemplo. Obtemos a vantagem de executar tarefas complexas e simples da mesma maneira e reduzimos o tempo de criação da imagem para apenas 1 (a imagem de base).

Também organizamos nossos arquivos de configuração de forma a facilitar a adaptação das entradas de seus componentes e pipelines.

Usar uma imagem base sobrescrita como base única para todos os seus componentes

Usar uma imagem base sobrescrita como base única para todos os seus componentes

Paralelizar partes de seus pipelines é tão simples quanto escrever um loop for

Ao fazer experiências com ML, geralmente precisamos executar muitas iterações de um fluxo de trabalho de treinamento simples, seja para ajustar um hiperparâmetro ou para criar vários modelos (por exemplo, um modelo por categoria de produto).

Fazer isso de forma otimizada significaria paralelizar os diferentes fluxos de trabalho de treinamento para ganhar tempo e otimizar os recursos. Com o Vertex Pipelines e o Kubefkow, o esforço é mínimo por design; você só precisará escrever um loop for. E, ao compilar seu pipeline, o Kubeflow descobrirá quais etapas e/ou grupos de etapas podem ser executados em paralelo e quais precisam ser executados sucessivamente.

class="img-responsive

Exemplo de um pipeline com partes que são executadas em paralelo

Implementação condicional para operar seu modelo de ML sem problemas

Com o kfp.dsl.condition, você pode implantar facilmente um modelo treinado e se preparar para reutilizá-lo posteriormente com alguma lógica de código. Se estiver fazendo experimentos com muitas configurações e esperando mover as coisas sem problemas para a produção com base em um conjunto de condições, essa funcionalidade do Kubeflow será muito útil. Combine-a com um ótimo CICD e você operará o ciclo de vida do seu modelo de ML sem problemas.

class="img-responsive

Exemplo de implantação condicional

Além desses recursos (que não são exaustivos), você terá reprodutibilidade, rastreabilidade, capacidade de gerenciamento e, por último, mas não menos importante, uma excelente interface de usuário para monitorar tudo na interface do Vertex AI no GCP.

Conclusão

Atualmente, espera-se que muitos modelos de ML sejam executados na produção. Portanto, se estiver trabalhando no GCP e planejando usar o Vertex AI, esperamos que este kit inicial o ajude a ter uma jornada agradável com a ferramenta. Você também deve dar uma olhada nele se estiver iniciando seus projetos com a ambição de torná-los úteis o mais rápido possível, ou seja, implantá-los na produção.

Muito obrigado a Luca Serra, Jeffrey Kayne e Robin Doumerc (Artefact) que ajudaram a construir esse kit inicial, mas também a Maxime Lutel por ter feito a modelagem do projeto de brinquedo que usamos.

Se quiser passar para o próximo nível, você encontrará na documentação do GCP como fazer:

class="img-responsive

Blog do Medium por Artefact.

Este artigo foi publicado inicialmente no Medium.com.
Siga-nos em nosso blog no Medium!