美文网首页
mlflow的入门实践二-模型注册

mlflow的入门实践二-模型注册

作者: 万州客 | 来源:发表于2022-05-30 11:04 被阅读0次

    project就不说了,Experiment也不说了,试试Model。

    一,代码

    import pandas as pd
    import mlflow
    import tensorflow.keras
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense
    
    os.environ["AWS_ACCESS_KEY_ID"] = "admin"
    os.environ["AWS_SECRET_ACCESS_KEY"] = "adminadmin"
    os.environ["MLFLOW_S3_ENDPOINT_URL"] = "http://192.168.1.111:9000"
    mlflow.set_experiment("Default")
    mlflow.set_tracking_uri('http://192.168.1.111:5000')
    model_name = "power-forecasting-model"
    wind_farm_data = pd.read_csv("windfarm_data.csv", index_col=0)
    
    def get_training_data():
      training_data = pd.DataFrame(wind_farm_data["2014-01-01":"2018-01-01"])
      X = training_data.drop(columns="power")
      y = training_data["power"]
      return X, y
    
    def get_validation_data():
      validation_data = pd.DataFrame(wind_farm_data["2018-01-01":"2019-01-01"])
      X = validation_data.drop(columns="power")
      y = validation_data["power"]
      return X, y
    
    def get_weather_and_forecast():
      format_date = lambda pd_date : pd_date.date().strftime("%Y-%m-%d")
      today = pd.Timestamp('today').normalize()
      week_ago = today - pd.Timedelta(days=5)
      week_later = today + pd.Timedelta(days=5)
    
      past_power_output = pd.DataFrame(wind_farm_data)[format_date(week_ago):format_date(today)]
      weather_and_forecast = pd.DataFrame(wind_farm_data)[format_date(week_ago):format_date(week_later)]
      if len(weather_and_forecast) < 10:
        past_power_output = pd.DataFrame(wind_farm_data).iloc[-10:-5]
        weather_and_forecast = pd.DataFrame(wind_farm_data).iloc[-10:]
    
      return weather_and_forecast.drop(columns="power"), past_power_output["power"]
    
    def train_keras_model(X, y):
      model = Sequential()
      model.add(Dense(100, input_shape=(X_train.shape[-1],), activation="relu", name="hidden_layer"))
      model.add(Dense(1))
      model.compile(loss="mse", optimizer="adam")
    
      model.fit(X_train, y_train, epochs=100, batch_size=64, validation_split=.2)
      return model
    
    X_train, y_train = get_training_data()
    
    with mlflow.start_run():
      # Automatically capture the model's parameters, metrics, artifacts,
      # and source code with the `autolog()` function
      mlflow.tensorflow.autolog()
    
      train_keras_model(X_train, y_train)
      run_id = mlflow.active_run().info.run_id
    
    
    from mlflow.tracking.client import MlflowClient
    
    client = MlflowClient()
    client.update_registered_model(
      name='power-forecasting-model',
      description="BBBThis model forecasts the power output of a wind farm based on weather data. The weather data consists of three features: wind speed, wind direction, and air temperature."
    )
    
    
    # The default path where the MLflow autologging function stores the Tensorflow Keras model
    artifact_path = "model"
    model_uri = "runs:/{run_id}/{artifact_path}".format(run_id=run_id, artifact_path=artifact_path)
    
    model_details = mlflow.register_model(model_uri=model_uri, name=model_name)
    
    import time
    from mlflow.tracking.client import MlflowClient
    from mlflow.entities.model_registry.model_version_status import ModelVersionStatus
    
    # Wait until the model is ready
    def wait_until_ready(model_name, model_version):
      client = MlflowClient()
      for _ in range(10):
        model_version_details = client.get_model_version(
          name=model_name,
          version=model_version,
        )
        status = ModelVersionStatus.from_string(model_version_details.status)
        print("Model status: %s" % ModelVersionStatus.to_string(status))
        if status == ModelVersionStatus.READY:
          break
        time.sleep(1)
    
    wait_until_ready(model_details.name, model_details.version)
    

    可以看到,有很多API,可以远程操作的。

    二,效果

    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:mlflow的入门实践二-模型注册

          本文链接:https://www.haomeiwen.com/subject/smloprtx.html