- 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. - 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