Registro de Experimentos com MLflow
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import logging import mlflow import mlflow.sklearn from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s") # Load sample dataset X, y = load_diabetes(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # Set experiment name (creates if doesn't exist) experiment_name = "DiabetesRegression" mlflow.set_experiment(experiment_name) logging.info(f"Using experiment: {experiment_name}") # Start an MLflow run with mlflow.start_run() as run: # Define and train model alpha = 0.5 logging.info(f"Training Ridge(alpha={alpha})") model = Ridge(alpha=alpha) model.fit(X_train, y_train) logging.info("Training complete") # Predict and calculate metric predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) logging.info(f"Test MSE: {mse:.6f}") # Log parameter, metric, and model mlflow.log_param("alpha", alpha) mlflow.log_metric("mse", mse) mlflow.sklearn.log_model(model, "model") logging.info("Logged params, metrics, and model to MLflow") # Optionally, log data version or hash for reproducibility mlflow.log_param("data_version", "sklearn_diabetes_v1") # Print run information to stdout run_id = run.info.run_id experiment_id = run.info.experiment_id artifact_uri = mlflow.get_artifact_uri() logging.info(f"Run ID: {run_id}") logging.info(f"Experiment ID: {experiment_id}") logging.info(f"Artifact URI: {artifact_uri}")
Para compreender como o registro de experimentos funciona na prática, siga esta análise passo a passo do código fornecido. Primeiro, o código carrega um conjunto de dados de exemplo usando load_diabetes do scikit-learn e, em seguida, divide-o em conjuntos de treino e teste. O experimento é nomeado utilizando mlflow.set_experiment, que seleciona um experimento existente ou cria um novo, se necessário.
A principal parte do fluxo de trabalho começa com mlflow.start_run(), que inicializa uma nova execução e garante que todos os registros subsequentes sejam agrupados. Dentro desta execução, um modelo de regressão Ridge é definido com um parâmetro alpha específico e treinado com os dados de treino. Após o treinamento, são feitas previsões no conjunto de teste e o erro quadrático médio (MSE) é calculado como métrica de desempenho.
As funções de registro do MLflow são então utilizadas para capturar aspectos-chave do experimento. O parâmetro alpha é registrado com mlflow.log_param, e o mse calculado é registrado como métrica usando mlflow.log_metric. O modelo treinado é salvo como artefato com mlflow.sklearn.log_model, facilitando sua recuperação ou implantação posteriormente. Para reprodutibilidade, o código também registra um parâmetro data_version, que documenta a origem ou versão do conjunto de dados utilizado no treinamento.
Aviso: sempre registre metadados relevantes, como versão dos dados, semente aleatória e informações do ambiente. Sem esses dados, reproduzir resultados ou depurar problemas torna-se muito mais difícil.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 6.67
Registro de Experimentos com MLflow
Deslize para mostrar o menu
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import logging import mlflow import mlflow.sklearn from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s") # Load sample dataset X, y = load_diabetes(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # Set experiment name (creates if doesn't exist) experiment_name = "DiabetesRegression" mlflow.set_experiment(experiment_name) logging.info(f"Using experiment: {experiment_name}") # Start an MLflow run with mlflow.start_run() as run: # Define and train model alpha = 0.5 logging.info(f"Training Ridge(alpha={alpha})") model = Ridge(alpha=alpha) model.fit(X_train, y_train) logging.info("Training complete") # Predict and calculate metric predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) logging.info(f"Test MSE: {mse:.6f}") # Log parameter, metric, and model mlflow.log_param("alpha", alpha) mlflow.log_metric("mse", mse) mlflow.sklearn.log_model(model, "model") logging.info("Logged params, metrics, and model to MLflow") # Optionally, log data version or hash for reproducibility mlflow.log_param("data_version", "sklearn_diabetes_v1") # Print run information to stdout run_id = run.info.run_id experiment_id = run.info.experiment_id artifact_uri = mlflow.get_artifact_uri() logging.info(f"Run ID: {run_id}") logging.info(f"Experiment ID: {experiment_id}") logging.info(f"Artifact URI: {artifact_uri}")
Para compreender como o registro de experimentos funciona na prática, siga esta análise passo a passo do código fornecido. Primeiro, o código carrega um conjunto de dados de exemplo usando load_diabetes do scikit-learn e, em seguida, divide-o em conjuntos de treino e teste. O experimento é nomeado utilizando mlflow.set_experiment, que seleciona um experimento existente ou cria um novo, se necessário.
A principal parte do fluxo de trabalho começa com mlflow.start_run(), que inicializa uma nova execução e garante que todos os registros subsequentes sejam agrupados. Dentro desta execução, um modelo de regressão Ridge é definido com um parâmetro alpha específico e treinado com os dados de treino. Após o treinamento, são feitas previsões no conjunto de teste e o erro quadrático médio (MSE) é calculado como métrica de desempenho.
As funções de registro do MLflow são então utilizadas para capturar aspectos-chave do experimento. O parâmetro alpha é registrado com mlflow.log_param, e o mse calculado é registrado como métrica usando mlflow.log_metric. O modelo treinado é salvo como artefato com mlflow.sklearn.log_model, facilitando sua recuperação ou implantação posteriormente. Para reprodutibilidade, o código também registra um parâmetro data_version, que documenta a origem ou versão do conjunto de dados utilizado no treinamento.
Aviso: sempre registre metadados relevantes, como versão dos dados, semente aleatória e informações do ambiente. Sem esses dados, reproduzir resultados ou depurar problemas torna-se muito mais difícil.
Obrigado pelo seu feedback!