1
resposta

[Projeto] 03 Etapa #1 Engenharia de Dados e Pipeline de Treinamento

  1. Estrutura:
    implementação de MLOps. Rastreabilidade: É alcançada através do MLflow, que atua como um livro de registro imutável, salvando a "assinatura" de cada experimento (código, dados e parâmetros). Escalabilidade: É garantida pelo uso de Pipelines modulares e carregamento eficiente de dados (como o DataLoader do PyTorch), que permite processar dados em partes (batches), evitando o estouro da memória RAM.
  2. Implementação do Pipeline (Programação) - pipeline que integra Scikit-learn para o processamento e MLflow para a governança.
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import LabelEncoder
    from sklearn.ensemble import GradientBoostingRegressor
    from sklearn.metrics import mean_squared_error

--- 1. Carregar e Preparar Dataset ---

def load_and_prep(path):
df = pd.read_csv(path)
# Codificação de IDs para criar a base dos Embeddings numéricos
user_enc = LabelEncoder()
item_enc = LabelEncoder()
df['user_id'] = user_enc.fit_transform(df['user_id'])
df['music_id'] = item_enc.fit_transform(df['music_id'])
return df

--- 2. Pipeline de Treinamento Automatizado ---

def train_recommender(data_path):
# Configurando o rastreio
mlflow.set_experiment("Recomendacao_Musicas_Playcatch")

with mlflow.start_run(run_name="Treino_Sazonal_Abril"):
    # Carga
    data = load_and_prep(data_path)
    
    # Split Escalável
    X = data[['user_id', 'music_id']]
    y = data['rating'] # Ou 'play_count'
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    # Treino do Modelo (Abordagem de Regressão para Recomendação)
    params = {"n_estimators": 100, "learning_rate": 0.1, "max_depth": 5}
    model = GradientBoostingRegressor(**params)
    model.fit(X_train, y_train)

    # 3. Métricas e Artefatos
    preds = model.predict(X_test)
    rmse = mean_squared_error(y_test, preds, squared=False)

    # Registro no MLflow
    mlflow.log_params(params)
    mlflow.log_metric("rmse", rmse)
    mlflow.sklearn.log_model(model, "modelo_recomendacao_v1")
    
    print(f"Execução registrada! RMSE: {rmse}")

train_recommender("musicas_interacoes.csv")

3 Conceitos:
Embeddings (Representação): Em vez de tratar música como apenas um título, o modelo a transforma em um vetor de números
MLflow Artifacts: Ao usar log_model, você não salva apenas o arquivo .pkl. O MLflow salva um arquivo conda.yaml
DataLoader (Escalabilidade): Se o dataset da Playcatch crescer para milhões de interações, o uso de PyTorch DataLoader

1 resposta

Oi, Moacir! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da forma como você estruturou seu pipeline, separando bem as etapas de carregamento, preparação e treinamento, além de integrar o mlflow para rastreabilidade. Isso mostra uma visão bem alinhada com práticas de MLOps, principalmente ao registrar parâmetros, métricas e o modelo.

Continue assim!

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!