Kubeflow é uma plataforma open-source para machine learning que roda no Kubernetes, projetada para tornar deployments de workflows de ML escaláveis, portáveis e composáveis.
Desenvolvido pelo Google e pela comunidade, Kubeflow oferece uma solução completa para o ciclo de vida de ML, desde desenvolvimento até produção, aproveitando a orquestração e escalabilidade do Kubernetes.
Plataforma para construir e deployar workflows de ML
Ambiente de desenvolvimento interativo
Sistema de hyperparameter tuning e AutoML
Serving de modelos serverless
Plataforma ML empresarial escalável
Portabilidade entre provedores cloud
Plataformas de pesquisa colaborativa
Integração e deployment contínuo
Exemplo de pipeline Kubeflow com Python SDK:
import kfp
from kfp import dsl
from kfp.components import create_component_from_func
# Definir componente de treinamento
def train_model(data_path: str, model_path: str) -> str:
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
import joblib
# Carregar dados
data = pd.read_csv(data_path)
X = data.drop('target', axis=1)
y = data['target']
# Treinar modelo
model = RandomForestClassifier(n_estimators=100)
model.fit(X, y)
# Salvar modelo
joblib.dump(model, model_path)
return model_path
# Definir componente de avaliação
def evaluate_model(model_path: str, test_data_path: str) -> float:
import pandas as pd
import joblib
from sklearn.metrics import accuracy_score
# Carregar modelo e dados de teste
model = joblib.load(model_path)
test_data = pd.read_csv(test_data_path)
X_test = test_data.drop('target', axis=1)
y_test = test_data['target']
# Avaliar modelo
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
return accuracy
# Criar componentes
train_op = create_component_from_func(
train_model,
base_image='python:3.8',
packages_to_install=['pandas', 'scikit-learn', 'joblib']
)
evaluate_op = create_component_from_func(
evaluate_model,
base_image='python:3.8',
packages_to_install=['pandas', 'scikit-learn', 'joblib']
)
# Definir pipeline
@dsl.pipeline(
name='ML Training Pipeline',
description='Pipeline para treinamento e avaliação de modelo'
)
def ml_pipeline(
data_path: str = '/data/train.csv',
test_data_path: str = '/data/test.csv',
model_path: str = '/models/model.pkl'
):
# Etapa de treinamento
train_task = train_op(data_path, model_path)
# Etapa de avaliação
evaluate_task = evaluate_op(model_path, test_data_path)
evaluate_task.after(train_task)
# Compilar e executar pipeline
if __name__ == '__main__':
kfp.compiler.Compiler().compile(ml_pipeline, 'ml_pipeline.yaml')
# Conectar ao Kubeflow
client = kfp.Client()
# Executar pipeline
run = client.run_pipeline(
experiment_id='ml-experiment',
job_name='ml-training-run',
pipeline_package_path='ml_pipeline.yaml'
)