{"id":30130,"date":"2024-09-24T12:39:43","date_gmt":"2024-09-24T15:39:43","guid":{"rendered":"https:\/\/building.nu.com\/?p=30130"},"modified":"2024-12-19T19:06:50","modified_gmt":"2024-12-19T22:06:50","slug":"fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura","status":"publish","type":"post","link":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/","title":{"rendered":"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Autor: Pedro Viana Gomes Pena<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Revisado por Kevin Rossell<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os fluxos de trabalho de machine learning (ML) s\u00e3o a espinha dorsal da inova\u00e7\u00e3o baseada em dados, mas garantir que eles sejam escal\u00e1veis e adapt\u00e1veis pode ser uma tarefa desafiadora. \u00c9 por isso que constru\u00edmos o Common Python Workflows (CPW), uma solu\u00e7\u00e3o vers\u00e1til que simplifica como as equipes criam, gerenciam e executam pipelines de machine learning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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\u00ednio por tr\u00e1s do desenvolvimento do CPW, seus recursos diferenciados e os principais aprendizados da nossa jornada at\u00e9 agora.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Desafios Iniciais<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes do CPW, enfrent\u00e1vamos v\u00e1rias limita\u00e7\u00f5es com nossa ferramenta existente, Sheep:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Complexidade e confus\u00e3o: Ao longo dos anos, Sheep tornou-se sobrecarregada com in\u00fameras fun\u00e7\u00f5es, levando a uma experi\u00eancia de usu\u00e1rio confusa. Escrever arquivos de configura\u00e7\u00e3o adequados para governar o comportamento do treinamento era igualmente desafiador, dificultando para os usu\u00e1rios entenderem seu pleno potencial.<\/li>\n\n\n\n<li>Falta de extensibilidade: A Sheep foi projetada como uma \u00fanica biblioteca Python com todo o c\u00f3digo e depend\u00eancias agrupadas. Isso tornava dif\u00edcil estender ou substituir certas funcionalidades, como carregamento de dados. Os usu\u00e1rios tinham pouca flexibilidade para alterar a pipeline: podiam apenas substituir 3 etapas pr\u00e9-definidas.<\/li>\n\n\n\n<li>Suporte a frameworks: Dar suporte a v\u00e1rios frameworks (como Scikit-learn, Pytorch e Tensorflow) n\u00e3o era f\u00e1cil, e distribuir o treinamento era trabalhoso. Os usu\u00e1rios tinham que treinar o modelo com fklearn.<\/li>\n\n\n\n<li>Treinamento out-of-core: Os usu\u00e1rios n\u00e3o podiam realizar treinamento out-of-core de forma eficiente.<\/li>\n\n\n\n<li>Predi\u00e7\u00e3o e avalia\u00e7\u00e3o: N\u00e3o havia abstra\u00e7\u00e3o para predi\u00e7\u00e3o, avalia\u00e7\u00e3o ou compara\u00e7\u00e3o de modelos.<\/li>\n\n\n\n<li>Re-treinamento autom\u00e1tico: Pipelines de re-treinamento autom\u00e1tico n\u00e3o eram fornecidas por padr\u00e3o.<\/li>\n\n\n\n<li>Gest\u00e3o de depend\u00eancias: Mesmo mudan\u00e7as menores exigiam a atualiza\u00e7\u00e3o de m\u00faltiplas depend\u00eancias nos modelos, o que frequentemente levava ao <a href=\"https:\/\/en.wikipedia.org\/wiki\/Dependency_hell\">inferno das depend\u00eancias<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esses desafios nos levaram a desenvolver o CPW\u2014uma solu\u00e7\u00e3o flex\u00edvel e \u00e0 prova de futuro para simplificar fluxos de trabalho de ML e resolver esses pontos problem\u00e1ticos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O que \u00e9 o CPW?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW \u00e9 uma biblioteca projetada para simplificar a cria\u00e7\u00e3o e gest\u00e3o de fluxos de trabalho de ML. Ela introduz v\u00e1rios recursos chave:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Workflows de treinamento personalizados: Adapte os workflows para atender necessidades espec\u00edficas.<\/li>\n\n\n\n<li>Herdar e adaptar fluxos de treinamento: Reutilize workflows com m\u00ednimas altera\u00e7\u00f5es.<\/li>\n\n\n\n<li>Compartilhamento de fluxos entre equipes: Promova a colabora\u00e7\u00e3o permitindo f\u00e1cil compartilhamento de workflows.<\/li>\n\n\n\n<li>Manipula\u00e7\u00e3o de serializa\u00e7\u00e3o\/deserializa\u00e7\u00e3o: Simplifique a salvaguarda e o carregamento de modelos e dados.<\/li>\n\n\n\n<li>Implementa\u00e7\u00e3o de re-treinamento autom\u00e1tico: Implemente mecanismos de re-treinamento autom\u00e1tico facilmente.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para executar pipelines de modelos, usamos o Kubeflow Pipelines\u2014uma plataforma open-source de machine learning que facilita a implanta\u00e7\u00e3o e gest\u00e3o de piplines de ML ponta a ponta. Al\u00e9m de orquestrar pipelines de ML no Kubernetes, ele fornece ferramentas para gest\u00e3o e monitoramento de execu\u00e7\u00f5es de pipeline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW integra-se perfeitamente com o Kubeflow atrav\u00e9s do <a href=\"https:\/\/argo-workflows.readthedocs.io\/en\/latest\/\">Argo Workflows<\/a>. Uma vez que um fluxo (Flow) \u00e9 criado, ele pode ser compilado para um Argo Workflow e submetido para execu\u00e7\u00e3o no Kubeflow, que oferece recursos como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Executar tarefas em paralelo, cada uma em um cont\u00eainer diferente.<\/li>\n\n\n\n<li>Ajustar hiperpar\u00e2metros com o Katib (Componente do Kubeflow para busca de hiperpar\u00e2metros).<\/li>\n\n\n\n<li>Alocar diferentes recursos de m\u00e1quina para cada etapa.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW baseia-se no <a href=\"https:\/\/github.com\/dagster-io\/dagster\">Dagster<\/a>, aproveitando principalmente os conceitos de <em>software defined assets<\/em> e IOManagers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Por que Escolhemos o Dagster<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ao desenhar o CPW, evitamos deliberadamente re-implementar solu\u00e7\u00f5es existentes para Grafos Ac\u00edclicos Direcionados (DAG) e orquestra\u00e7\u00e3o. Havia v\u00e1rios frameworks open-source que faziam isso bem. Quer\u00edamos focar na experi\u00eancia de autoria de pipelines.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s avaliar frameworks open-source como Metaflow e Dagster, escolhemos o Dagster pelas seguintes caracter\u00edsticas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Design modular: O design modular do Dagster permite uma separa\u00e7\u00e3o clara de responsabilidades. Cada etapa em um fluxo de trabalho pode ser definida de forma independente, e as depend\u00eancias s\u00e3o inferidas com base nos artefatos produzidos por cada etapa. Isso contrasta com o Metaflow, que exigia que os usu\u00e1rios agrupassem o que uma etapa faria com a descri\u00e7\u00e3o de quais etapas seguiriam.<\/li>\n\n\n\n<li>Ativos definidos por software: O conceito de ativos definidos por software do Dagster alinha-se bem com nosso objetivo de criar workflows reutiliz\u00e1veis e flex\u00edveis. Isso nos permite gerenciar os componentes e artefatos de nossos workflows de maneira modular e reutiliz\u00e1vel.<\/li>\n\n\n\n<li>IOManagers: Os IOManagers do Dagster oferecem uma maneira robusta de lidar com opera\u00e7\u00f5es de entrada e sa\u00edda, assegurando que os dados sejam gerenciados de maneira eficiente e consistente em diferentes etapas do workflow, liberando assim nosso usu\u00e1rio final desse fardo.<\/li>\n\n\n\n<li>Extensibilidade: O design do Dagster permite uma maior e focada extensibilidade, permitindo aos usu\u00e1rios customizarem apenas o componente do qual precisam para atender suas necessidades espec\u00edficas, como um IOManager para imagens, que pode ser al\u00e9m disso reutilizado e compartilhado com outras equipes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Design da Classe de Workflow<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para facilitar a cria\u00e7\u00e3o de workflows reutiliz\u00e1veis, 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\u00f3) ao sobrescrever o atributo apropriado do workflow herdado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa abordagem traz benef\u00edcios adicionais:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integra\u00e7\u00e3o com infraestrutura: Cria um ponto central para nossa equipe manter e evoluir. Uma vez que algo mude em nossa infraestrutura, podemos atualizar a classe base e ter certeza de que todos os workflows se adaptar\u00e3o \u00e0 mudan\u00e7a.<\/li>\n\n\n\n<li>Facilidade de desenvolvimento: Desenvolver novas funcionalidades tornou-se mais f\u00e1cil porque podemos contar com os conceitos modulares que t\u00ednhamos para Ativos, IOManagers, e Flows (reposit\u00f3rios no Dagster).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Como exemplo, desde que introduzimos o CPW, habilitamos as seguintes funcionalidades para os usu\u00e1rios:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Diferentes backends para execu\u00e7\u00e3o: ao mudar uma palavra-chave na defini\u00e7\u00e3o do ativo, os usu\u00e1rios podem executar essa etapa em clusters Spark no Databricks ou no Sagemaker.<\/li>\n\n\n\n<li>Profiling: ao passar uma palavra-chave na linha de comando, cProfiling \u00e9 habilitado para todas as etapas do Flow.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Isso permite mudan\u00e7as minimamente intrusivas que requerem pouco ou nenhuma modifica\u00e7\u00e3o no c\u00f3digo do usu\u00e1rio para serem usadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este design tamb\u00e9m facilitou a colabora\u00e7\u00e3o, com equipes desenvolvendo Flows b\u00e1sicos de treinamento a serem usados para m\u00faltiplos modelos, permitindo que melhorias sejam aplicadas uma vez em todos os modelos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conceitos Centrais<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW baseia-se em v\u00e1rios conceitos centrais do Dagster, principalmente <em>software defined assets<\/em> e IOManagers. Esses conceitos permitem definir e gerenciar os componentes dos workflows de forma modular e reutiliz\u00e1vel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui est\u00e1 um exemplo de defini\u00e7\u00e3o de Flow no CPW:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"489\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-30-58.png?resize=1024%2C489&#038;ssl=1\" alt=\"\" class=\"wp-image-30126\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-30-58.png?resize=1024%2C489&amp;ssl=1 1024w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-30-58.png?resize=300%2C143&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-30-58.png?resize=768%2C367&amp;ssl=1 768w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-30-58.png?w=1262&amp;ssl=1 1262w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Neste exemplo, definimos um workflow simples com tr\u00eas ativos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>params: Um dicion\u00e1rio contendo defini\u00e7\u00f5es est\u00e1ticas necess\u00e1rias ao longo do workflow, como hiperpar\u00e2metros.<\/li>\n\n\n\n<li>my_dataset: Um dataset que \u00e9 dividido com base nos par\u00e2metros definidos em params.<\/li>\n\n\n\n<li>train_model: Um modelo treinado usando o dataset de treino e par\u00e2metros.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Com base nos nomes e argumentos dos ativos (fun\u00e7\u00f5es), o CPW automaticamente estabelece as depend\u00eancias entre as fun\u00e7\u00f5es. O DAG resultante ter\u00e1 a seguinte apar\u00eancia:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"878\" height=\"157\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-26-10.png?resize=878%2C157&#038;ssl=1\" alt=\"\" class=\"wp-image-30117\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-26-10.png?w=878&amp;ssl=1 878w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-26-10.png?resize=300%2C54&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Captura-de-tela-de-2024-09-23-13-26-10.png?resize=768%2C137&amp;ssl=1 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Artefatos e Persist\u00eancia<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW assegura que os artefatos de cada ativo sejam persistidos em um diret\u00f3rio S3 compartilhado (ou local). Por exemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>params: Armazenado como um arquivo JSON.<\/li>\n\n\n\n<li>my_dataset: Salvo como Parquet.<\/li>\n\n\n\n<li>train_model: Serializado e salvo como um objeto Pickle.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW lida com a serializa\u00e7\u00e3o e deserializa\u00e7\u00e3o desses artefatos, garantindo que eles sejam armazenados e recuperados de maneira eficiente. Essa persist\u00eancia autom\u00e1tica permite que os usu\u00e1rios se concentrem na defini\u00e7\u00e3o do seu workflow sem se preocupar com a gest\u00e3o subjacente dos dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ao aproveitar os ativos definidos por software e os IOManagers do Dagster, o CPW fornece uma estrutura robusta e flex\u00edvel para construir e gerenciar workflows de ML. Essa abordagem modular torna f\u00e1cil definir, compartilhar e adaptar workflows, capacitando as equipes a trabalharem de forma mais eficiente e eficaz, focando apenas no que importa:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A fun\u00e7\u00e3o que seu Flow deve executar, e;<\/li>\n\n\n\n<li>Os artefatos que seu Flow deve produzir.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Estudos de Caso<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O CPW permitiu que m\u00faltiplas equipes simplificassem significativamente seus workflows:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compartilhando um mesmo fluxo base para uma variedade de modelos de NLP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma das hist\u00f3rias de sucesso mais significativas vem de uma equipe trabalhando com modelos de processamento de linguagem natural (NLP). Compartilhando um Flow base comum para v\u00e1rios modelos de NLP, a equipe conseguiu reduzir o esfor\u00e7o para atualizar o workflow de treinamento dos modelos em 80%.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso foi alcan\u00e7ado reutilizando a mesma estrutura de workflow e apenas modificando par\u00e2metros espec\u00edficos 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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Distribuindo melhorias entre as equipes<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outra hist\u00f3ria de sucesso envolve um cientista de dados que desenvolveu ativos de avalia\u00e7\u00e3o e gr\u00e1ficos 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\u00e7o de engenharia e retrabalho, \u00e0 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\u00e7\u00e3o e efici\u00eancia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esses estudos de caso demonstram os benef\u00edcios tang\u00edveis de usar o CPW para gerenciar workflows de ML. Ao alavancar a natureza modular e reutiliz\u00e1vel do CPW, as equipes podem melhorar significativamente a efici\u00eancia de seus workflows e reduzir o tempo e esfor\u00e7o necess\u00e1rios para desenvolver e manter modelos de ML.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Li\u00e7\u00f5es Aprendidas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Durante o desenvolvimento e uso do CPW, identificamos v\u00e1rias li\u00e7\u00f5es-chave:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Equilibrando flexibilidade e simplicidade: Enquanto o CPW permitiu casos de uso complexos, tamb\u00e9m introduziu uma nova linguagem de dom\u00ednio espec\u00edfico (DSL), com uma curva de aprendizado mais acentuada. Fornecer abstra\u00e7\u00f5es mais simples para workflows b\u00e1sicos \u00e9 crucial para uma ado\u00e7\u00e3o mais ampla. Com pontos de entrada diretos, podemos tornar o CPW mais acess\u00edvel a novos usu\u00e1rios, oferecendo ainda capacidades avan\u00e7adas para workflows complexos.<\/li>\n\n\n\n<li>Fornecendo exemplos e templates: Exemplos do mundo real e templates abrangentes s\u00e3o essenciais para demonstrar as capacidades do CPW e facilitar sua ado\u00e7\u00e3o.<\/li>\n\n\n\n<li>Identifica\u00e7\u00e3o de &#8220;campe\u00f5es&#8221; em cada equipe: Identificar e apoiar \u201ccampe\u00f5es\u201d dentro das equipes favoreceu uma ado\u00e7\u00e3o mais profunda e reduziu a necessidade de orienta\u00e7\u00f5es constantes do nosso time principal.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Essas li\u00e7\u00f5es informaram nosso plano futuro, garantindo que o CPW continue a evoluir e atender \u00e0s necessidades dos nossos usu\u00e1rios enquanto mant\u00e9m sua flexibilidade e poder.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning<\/p>\n","protected":false},"author":178110103,"featured_media":30123,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2514,2503,2502],"tags":[2504,3205,2540],"class_list":["post-30130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-building-stories-pt-br","category-data-analytics","category-data-science-machine-learning-pt-br","tag-ciencia-de-dados","tag-generative-ai-pt-br","tag-machine-learning-pt-br"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es - Building Nubank<\/title>\n<meta name=\"description\" content=\"Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es - Building Nubank\" \/>\n<meta property=\"og:description\" content=\"Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning\" \/>\n<meta property=\"og:url\" content=\"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Nubank\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-24T15:39:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-19T22:06:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1-1024x683.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Nubank Editorial\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nubank Editorial\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/\"},\"author\":{\"name\":\"Nubank Editorial\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/462f4f5a8d4ec3ccbc3d661dde00f0a4\"},\"headline\":\"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es\",\"datePublished\":\"2024-09-24T15:39:43+00:00\",\"dateModified\":\"2024-12-19T22:06:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/\"},\"wordCount\":1890,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1\",\"keywords\":[\"ci\u00eancia de dados\",\"generative AI\",\"machine learning\"],\"articleSection\":[\"Building Stories\",\"Data &amp; Analytics\",\"Data science &amp; Machine Learning\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/\",\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/\",\"name\":\"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es - Building Nubank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1\",\"datePublished\":\"2024-09-24T15:39:43+00:00\",\"dateModified\":\"2024-12-19T22:06:50+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/462f4f5a8d4ec3ccbc3d661dde00f0a4\"},\"description\":\"Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1\",\"width\":5760,\"height\":3840,\"caption\":\"Nubankers working at Nu Office\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/\",\"name\":\"Building Nubank\",\"description\":\"We make the extraordinary happen\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/462f4f5a8d4ec3ccbc3d661dde00f0a4\",\"name\":\"Nubank Editorial\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g\",\"caption\":\"Nubank Editorial\"},\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/author\\\/editorial\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es - Building Nubank","description":"Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/","og_locale":"pt_BR","og_type":"article","og_title":"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es - Building Nubank","og_description":"Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning","og_url":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/","og_site_name":"Building Nubank","article_published_time":"2024-09-24T15:39:43+00:00","article_modified_time":"2024-12-19T22:06:50+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1-1024x683.jpg","type":"image\/jpeg"}],"author":"Nubank Editorial","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Nubank Editorial","Est. tempo de leitura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#article","isPartOf":{"@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/"},"author":{"name":"Nubank Editorial","@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/462f4f5a8d4ec3ccbc3d661dde00f0a4"},"headline":"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es","datePublished":"2024-09-24T15:39:43+00:00","dateModified":"2024-12-19T22:06:50+00:00","mainEntityOfPage":{"@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/"},"wordCount":1890,"commentCount":0,"image":{"@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1","keywords":["ci\u00eancia de dados","generative AI","machine learning"],"articleSection":["Building Stories","Data &amp; Analytics","Data science &amp; Machine Learning"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/","url":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/","name":"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es - Building Nubank","isPartOf":{"@id":"https:\/\/building.nu.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#primaryimage"},"image":{"@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1","datePublished":"2024-09-24T15:39:43+00:00","dateModified":"2024-12-19T22:06:50+00:00","author":{"@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/462f4f5a8d4ec3ccbc3d661dde00f0a4"},"description":"Dos desafios \u00e0s solu\u00e7\u00f5es: a evolu\u00e7\u00e3o do CPW para a gest\u00e3o fluida de fluxos de Machine Learning","breadcrumb":{"@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#primaryimage","url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1","contentUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1","width":5760,"height":3840,"caption":"Nubankers working at Nu Office"},{"@type":"BreadcrumbList","@id":"https:\/\/building.nu.com\/pt-br\/fluxos-de-machine-learning-com-common-python-workflows-de-pipelines-complexas-a-execucao-sem-costura\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/building.nu.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Fluxos de Machine Learning com common-python-workflows: De pipelines complexas \u00e0 execu\u00e7\u00e3o sem complica\u00e7\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/building.nu.com\/pt-br\/#website","url":"https:\/\/building.nu.com\/pt-br\/","name":"Building Nubank","description":"We make the extraordinary happen","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/building.nu.com\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/462f4f5a8d4ec3ccbc3d661dde00f0a4","name":"Nubank Editorial","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g","caption":"Nubank Editorial"},"url":"https:\/\/building.nu.com\/pt-br\/author\/editorial\/"}]}},"jetpack_shortlink":"https:\/\/wp.me\/pbKBB5-7PY","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/09\/Talent-Brand_Photo-34-1.jpg?fit=5760%2C3840&ssl=1","_links":{"self":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/30130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/users\/178110103"}],"replies":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/comments?post=30130"}],"version-history":[{"count":7,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/30130\/revisions"}],"predecessor-version":[{"id":30909,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/30130\/revisions\/30909"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/media\/30123"}],"wp:attachment":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/media?parent=30130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/categories?post=30130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/tags?post=30130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}