def mlflow_run(params, run_name="LOCAL_REGISTRY"): """ Function to start a run within a Default experiment :param params: ters used for the run, such as arguments to RandomForest scikit-learn :param run_name: label for the name of the run :return: experiment ID and run ID """ with mlflow.start_run(run_name=run_name) as run: # Get the run and experimentid run_id = run.info.run_uuid experiment_id = run.info.experiment_id # Create our model type instance sk_learn_rfr = RandomForestRegressor(params) # Log params and metrics using the MLflow APIs mlflow.log_params(params) mlflow.log_metric("metric_1", random()) mlflow.log_metric("metric_2", random() + 1) mlflow.log_metric("metric_3", random() + 2) # Set the notes for experiment and the Runs MlflowClient().set_experiment_tag( experiment_id, "mlflow.note.content", "This is experiment for getting started with MLflow ...") MlflowClient().set_tag( run_id, "mlflow.note.content", "This Run is for getting started with MLflow Model Registry ...") # Log the model at the same time mlflow.sklearn.log_model(sk_model=sk_learn_rfr, artifact_path="sklearn-model") # Create sample message artifact if not os.path.exists("messages"): os.makedirs("messages") with open("messages/message.txt", "w") as f: f.write(gen_random_text()) mlflow.log_artifacts("messages") shutil.rmtree('messages') # Create scatter random plot artifacts file and log artifact for npoints in range(55, 70, 5): fig, ex = gen_random_scatter_plots(npoints) temp_file_name = Utils.get_temporary_directory_path( "scatter-plot-", ".png") temp_name = temp_file_name.name try: fig.savefig(temp_name) mlflow.log_artifact(temp_name, "scatter_plots") finally: temp_file_name.close() # Delete the temp file return (run_id, experiment_id)
Draxl, C., B.M. Hodge, A. Clifton, and J. McCaa. 2015. "The Wind Integration National Dataset (WIND) Toolkit." Applied Energy 151: 355366. Lieberman-Cribbin, W., C. Draxl, and A. Clifton. 2014. Guide to Using the WIND Toolkit Validation Code (Technical Report, NREL/TP-5000-62595). Golden, CO: National Renewable Energy Laboratory. King, J., A. Clifton, and B.M. Hodge. 2014. Validation of Power Output for the WIND Toolkit (Technical Report, NREL/TP-5D00-61714). Golden, CO: National Renewable Energy Laboratory. """ if __name__ == "__main__": # Use sqlite:///mlruns.db as the local store for tracking and registery mlflow.set_tracking_uri("sqlite:///mlruns.db") # Load and print dataset csv_path = "data/windfarm_data.csv" # Use column 0 (date) as the index wind_farm_data = Utils.load_data(csv_path, index_col=0) Utils.print_pandas_dataset(wind_farm_data) # Get Validation data X_train, y_train = Utils.get_training_data(wind_farm_data) val_x, val_y = Utils.get_validation_data(wind_farm_data) # Train, fit and register our model params_list = [{ "n_estimators": 100 }, { "n_estimators": 200 }, { "n_estimators": 300 }]
import requests from cls.utils import Utils import json (x_train, y_train), (val_x, val_y) = Utils.load_data() data = val_x[0].reshape(1, -1) data_json = json.dumps(data.tolist()) # print(data_json) headers = {'Content-Type': 'application/json; format=pandas-records'} request_uri = 'http://127.0.0.1:5000/invocations' if __name__ == '__main__': try: response = requests.post(request_uri, data=data_json, headers=headers) print(response.content) print('done!!!') except Exception as ex: raise (ex)