模型部署

MLflow 入門

Weston Bassler

Senior MLOps Engineer

ML 生命週期

機器學習生命週期步驟

1 datacamp.com
MLflow 入門

模型版本與階段

  • 模型版本

    • 版本 +1
  • 模型階段

    • Staging
    • Production
    • Archived

模型版本與階段

MLflow 入門

部署模型的方式

載入模型

# MLflow flavor
mlflow.FLAVOR.load_model()

服務模型

# MLflow serve 指令列
mlflow models serve
MLflow 入門

Models URI

慣例

models:/

模型版本

models:/model_name/version

模型階段

models:/model_name/stage
MLflow 入門

載入模型

# 匯入 flavor
import mlflow.FLAVOR

# 載入版本 mlflow.FLAVOR.load_model("models:/model_name/version")
# 載入階段 mlflow.FLAVOR.load_model("models:/model_name/stage")
MLflow 入門

載入模型範例

# 匯入 flavor
import mlflow.sklearn


# 載入 Staging 的 Unicorn 模型 model = mlflow.sklearn.load_model("models:/Unicorn/Staging")
# 列印模型 model
LogisticRegression()
# 推論
model.predict(data)
MLflow 入門

提供模型服務

# 服務 Production 階段的 Unicorn 模型
mlflow models serve -m "models:/Unicorn/Production"
2023/03/26 15:07:00 INFO mlflow.models.flavor_backend_registry: 
Selected backend for flavor 'python_function'
2023/03/26 15:07:00 INFO mlflow.pyfunc.backend: === Running command 'exec gunicorn 
--timeout=60 -b 127.0.0.1:5000 -w 1 ${GUNICORN_CMD_ARGS} -- 
mlflow.pyfunc.scoring_server.wsgi:app'
[2023-03-26 15:07:00 -0400] [86409] [INFO] Starting gunicorn 20.1.0
[2023-03-26 15:07:00 -0400] [86409] [INFO] Listening at: http://127.0.0.1:5000
[2023-03-26 15:07:00 -0400] [86409] [INFO] Using worker: sync
[2023-03-26 15:07:00 -0400] [86410] [INFO] Booting worker with pid: 86410
MLflow 入門

Invocations 端點

1 Flaticon.com
MLflow 入門

CSV 格式

pandas_df.to_csv()

JSON 格式

{
  "dataframe_split": {
      "columns": ["R&D Spend", "Administration", "Marketing Spend", "State"],
      "data": [["165349.20", 136897.80, 471784.10, 1]]
  }
}
MLflow 入門

模型預測

# 將負載送到 invocations 端點
curl http://127.0.0.1:5000/invocations -H 'Content-Type: application/json' -d
{
  "dataframe_split": {
      "columns": ["R&D Spend", "Administration", "Marketing Spend", "State"],
      "data": [["165349.20", 136897.80, 471784.10, 1]]
  }
}
[[104055.1842384]]
MLflow 入門

一起來練習吧!

MLflow 入門

Preparing Video For Download...