mais lidos
Life at Nu
Conheça a sede do Nubank em Pinheiros, São Paulo/Brasil jan 11
Design
A nova aparência do Nubank: conheça nossa nova logo maio 17
Culture & Values
Como os valores e a cultura da Nu moldam os produtos que criamos ago 7
Carreiras
Reunimos grandes mentes de diversas origens que permitem a discussão e o debate e melhoram a resolução de problemas.
Saiba mais sobre nossas carreiras



Autor: Pedro Viana Gomes Pena
Revisado por Kevin Rossell
Os fluxos de trabalho de machine learning (ML) são a espinha dorsal da inovação baseada em dados, mas garantir que eles sejam escaláveis e adaptáveis pode ser uma tarefa desafiadora. É por isso que construímos o Common Python Workflows (CPW), uma solução versátil que simplifica como as equipes criam, gerenciam e executam pipelines de machine learning.
O CPW enfrenta problemas comuns, como a complexidade dos fluxos de trabalho e a falta de flexibilidade, capacitando as equipes a focarem em refinar seus modelos em vez de lutarem contra processos ineficientes. Neste post do blog, vamos explorar o raciocínio por trás do desenvolvimento do CPW, seus recursos diferenciados e os principais aprendizados da nossa jornada até agora.
Desafios Iniciais
Antes do CPW, enfrentávamos várias limitações com nossa ferramenta existente, Sheep:
Esses desafios nos levaram a desenvolver o CPW—uma solução flexível e à prova de futuro para simplificar fluxos de trabalho de ML e resolver esses pontos problemáticos.
O que é o CPW?
O CPW é uma biblioteca projetada para simplificar a criação e gestão de fluxos de trabalho de ML. Ela introduz vários recursos chave:
Para executar pipelines de modelos, usamos o Kubeflow Pipelines—uma plataforma open-source de machine learning que facilita a implantação e gestão de piplines de ML ponta a ponta. Além de orquestrar pipelines de ML no Kubernetes, ele fornece ferramentas para gestão e monitoramento de execuções de pipeline.
O CPW integra-se perfeitamente com o Kubeflow através do Argo Workflows. Uma vez que um fluxo (Flow) é criado, ele pode ser compilado para um Argo Workflow e submetido para execução no Kubeflow, que oferece recursos como:
O CPW baseia-se no Dagster, aproveitando principalmente os conceitos de software defined assets e IOManagers.
Por que Escolhemos o Dagster
Ao desenhar o CPW, evitamos deliberadamente re-implementar soluções existentes para Grafos Acíclicos Direcionados (DAG) e orquestração. Havia vários frameworks open-source que faziam isso bem. Queríamos focar na experiência de autoria de pipelines.
Após avaliar frameworks open-source como Metaflow e Dagster, escolhemos o Dagster pelas seguintes características:
Design da Classe de Workflow
Para facilitar a criação de workflows reutilizáveis, introduzimos uma classe FlowSpec. Esta classe permite que as equipes criem workflows que podem ser herdados e adaptados por outras equipes. Por exemplo, uma equipe pode herdar um workflow (um DAG) e substituir uma etapa (um nó) ao sobrescrever o atributo apropriado do workflow herdado.
Essa abordagem traz benefícios adicionais:
Como exemplo, desde que introduzimos o CPW, habilitamos as seguintes funcionalidades para os usuários:
Isso permite mudanças minimamente intrusivas que requerem pouco ou nenhuma modificação no código do usuário para serem usadas.
Este design também facilitou a colaboração, com equipes desenvolvendo Flows básicos de treinamento a serem usados para múltiplos modelos, permitindo que melhorias sejam aplicadas uma vez em todos os modelos.
Conceitos Centrais
O CPW baseia-se em vários conceitos centrais do Dagster, principalmente software defined assets e IOManagers. Esses conceitos permitem definir e gerenciar os componentes dos workflows de forma modular e reutilizável.
Aqui está um exemplo de definição de Flow no CPW:
Neste exemplo, definimos um workflow simples com três ativos:
Com base nos nomes e argumentos dos ativos (funções), o CPW automaticamente estabelece as dependências entre as funções. O DAG resultante terá a seguinte aparência:
Artefatos e Persistência
O CPW assegura que os artefatos de cada ativo sejam persistidos em um diretório S3 compartilhado (ou local). Por exemplo:
O CPW lida com a serialização e deserialização desses artefatos, garantindo que eles sejam armazenados e recuperados de maneira eficiente. Essa persistência automática permite que os usuários se concentrem na definição do seu workflow sem se preocupar com a gestão subjacente dos dados.
Ao aproveitar os ativos definidos por software e os IOManagers do Dagster, o CPW fornece uma estrutura robusta e flexível para construir e gerenciar workflows de ML. Essa abordagem modular torna fácil definir, compartilhar e adaptar workflows, capacitando as equipes a trabalharem de forma mais eficiente e eficaz, focando apenas no que importa:
Estudos de Caso
O CPW permitiu que múltiplas equipes simplificassem significativamente seus workflows:
Compartilhando um mesmo fluxo base para uma variedade de modelos de NLP
Uma das histórias de sucesso mais significativas vem de uma equipe trabalhando com modelos de processamento de linguagem natural (NLP). Compartilhando um Flow base comum para vários modelos de NLP, a equipe conseguiu reduzir o esforço para atualizar o workflow de treinamento dos modelos em 80%.
Isso foi alcançado reutilizando a mesma estrutura de workflow e apenas modificando parâmetros específicos para cada modelo. O design modular do CPW permitiu que a equipe gerenciasse e adaptasse seus workflows de maneira eficiente, resultando em economias substanciais de tempo e aumento da produtividade.
Distribuindo melhorias entre as equipes
Outra história de sucesso envolve um cientista de dados que desenvolveu ativos de avaliação e gráficos para seu modelo. Usando o CPW, ele conseguiu implantar imediatamente essas melhorias em todos os outros modelos dentro de sua equipe. Isso economizou semanas de esforço de engenharia e retrabalho, à medida que os novos ativos puderam ser integrados perfeitamente nos workflows existentes. A capacidade de compartilhar e reutilizar componentes de workflow entre diferentes modelos e equipes destaca o poder do CPW em promover a colaboração e eficiência.
Esses estudos de caso demonstram os benefícios tangíveis de usar o CPW para gerenciar workflows de ML. Ao alavancar a natureza modular e reutilizável do CPW, as equipes podem melhorar significativamente a eficiência de seus workflows e reduzir o tempo e esforço necessários para desenvolver e manter modelos de ML.
Lições Aprendidas
Durante o desenvolvimento e uso do CPW, identificamos várias lições-chave:
Essas lições informaram nosso plano futuro, garantindo que o CPW continue a evoluir e atender às necessidades dos nossos usuários enquanto mantém sua flexibilidade e poder.
Conheça nossas oportunidades