Kubeflow é uma plataforma de código aberto projetada para machine learning e MLOps no Kubernetes, introduzida inicialmente pelo Google. Ela fornece uma coleção de componentes de software que correspondem a diferentes estágios de um ciclo de vida típico de machine learning, incluindo desenvolvimento de modelos, treinamento, serving e automação de machine learning. Cada componente pode ser implantado separadamente, permitindo que os usuários adotem apenas as partes necessárias, em vez de toda a plataforma.
A plataforma tem como objetivo simplificar a implantação e o gerenciamento de sistemas de machine learning, aproveitando o Kubernetes para orquestração, escalabilidade e infraestrutura. Ela suporta uma variedade de frameworks e ferramentas populares, tornando-a uma opção flexível tanto para ambientes de pesquisa quanto para produção.
História
O projeto Kubeflow foi anunciado pela primeira vez na KubeCon + CloudNativeCon North America 2017 pelos engenheiros do Google David Aronchick, Jeremy Lewi e Vishnu Kannan. A iniciativa surgiu da percepção de que havia uma falta de opções flexíveis para construir sistemas de machine learning prontos para produção. O projeto também começou como uma forma de o Google abrir o código de como executava o TensorFlow internamente.
A primeira versão, Kubeflow 0.1, foi anunciada na KubeCon + CloudNativeCon Europe 2018. A versão 1.0 foi lançada em março de 2020, com um anúncio público no blog, indicando que muitos componentes haviam atingido um "status estável" e estavam prontos para uso em produção. Em outubro de 2022, o Google anunciou que o Kubeflow havia se candidatado para ingressar na Cloud Native Computing Foundation (CNCF). A fundação votou para aceitar o Kubeflow como um projeto em estágio de incubação em julho de 2023.
Componentes
Kubeflow Notebooks para Desenvolvimento de Modelos
Os modelos de machine learning são desenvolvidos no componente Kubeflow Notebooks. Este componente executa ambientes de desenvolvimento baseados na web dentro de um cluster Kubernetes, com suporte nativo para Jupyter Notebook, Visual Studio Code e RStudio. Ele permite que cientistas de dados trabalhem em interfaces familiares enquanto se beneficiam dos recursos do cluster.
Kubeflow Pipelines para Treinamento de Modelos
Uma vez desenvolvidos, os modelos são treinados usando o componente Kubeflow Pipelines. Esta plataforma cria e implanta fluxos de trabalho de machine learning portáteis e escaláveis, baseados em contêineres Docker. O Google Cloud Platform adotou o DSL do Kubeflow Pipelines em seu produto Vertex AI Pipelines, demonstrando sua utilidade em ambientes de nuvem.
Kubeflow Training Operator para Treinamento de Modelos
Para certos modelos e bibliotecas de machine learning, o Kubeflow Training Operator fornece recursos personalizados do Kubernetes. Ele executa trabalhos de treinamento distribuídos ou não distribuídos para TensorFlow, PyTorch, Apache MXNet, XGBoost e MPI no Kubernetes. Este componente simplifica a orquestração de tarefas de treinamento complexas.
KServe para Serving de Modelos
KServe, anteriormente chamado de KFServing, fornece recursos personalizados do Kubernetes para servir modelos de machine learning em frameworks como TensorFlow, XGBoost, scikit-learn, PyTorch e ONNX. Foi desenvolvido colaborativamente por Google, IBM, Bloomberg, NVIDIA e Seldon. Entre os adotantes publicamente conhecidos estão Bloomberg, Gojek e a Wikimedia Foundation.
Katib para Automação de Machine Learning
Katib é um projeto nativo do Kubernetes para automação de treinamento e desenvolvimento de modelos de machine learning. Ele oferece ajuste de hiperparâmetros, parada antecipada e busca de arquitetura neural, permitindo a otimização automatizada do desempenho dos modelos.
Linha do Tempo de Lançamentos
O Kubeflow evoluiu através de vários lançamentos desde o seu início. O lançamento inicial 0.1 em 2018 estabeleceu as bases, e o lançamento 1.0 em 2020 marcou um marco para a prontidão de produção. Versões subsequentes continuaram a refinar os componentes e adicionar novos recursos, com o projeto ganhando status de incubação na CNCF em 2023.
Adoção e Ecossistema
O Kubeflow é utilizado em diversas indústrias para fluxos de trabalho de machine learning. Sua integração com o Kubernetes o torna atraente para organizações que já usam orquestração de contêineres. O design modular da plataforma permite que as equipes a combinem com outras ferramentas do ecossistema de Machine learning, como frameworks de Deep learning e serviços de Artificial intelligence.
Ver Também
- Machine learning
- Deep learning
- kubernetes
- MLOps