模型服務

MLflow 入門

Weston Bassler

Senior MLOps Engineer

MLflow Models

  • 標準化模型封裝

  • 記錄模型

  • 模型評估

MLflow 入門

模型部署

機器學習生命週期

1 datacamp.com
MLflow 入門

REST API

  • /ping-健康檢查

  • /health-健康檢查

  • /version-取得 MLflow 版本

  • /invocations-模型評分

  • 連接埠 5000

MLflow 入門

Invocations 端點

/invocations

No,Name,Subject
1,Bill Johnson,English
2,Gary Valentine,Mathematics

Content-Type:application/jsonapplication/csv

{
    "1": {
        "No": "1",
        "Name": "Bill Johnson",
        "Subject": "English"
    },
    "2": {
        "No": "2",
        "Name": "Gary Valentine",
        "Subject": "Mathematics"
    }
}
MLflow 入門

CSV 格式

  • pandas DataFrame

  • pandas_df.to_csv()

JSON 格式

  • dataframe_split-以 split 方向的 pandas DataFrame

  • dataframe_records-以 records 方向的 pandas DataFrame

MLflow 入門

DataFrame split

# DataFrame split 方向
{
  "dataframe_split": {
      "columns": ["sex", "age", "weight"],
      "data": [["male", 23, 160], ["female", 33, 120]]
  }
}
MLflow 入門

提供模型服務

# MLflow 服務指令
mlflow models serve --help
Usage: mlflow models serve [OPTIONS]
MLflow 入門

Serve URI

# 本機檔案系統
mlflow models serve -m relative/path/to/local/model
# Run ID
mlflow models serve -m runs:/<mlflow_run_id>/artifacts/model
# AWS S3
mlflow models serve -m s3://my_bucket/path/to/model
MLflow 入門

服務範例

# 從 run 提供模型服務
mlflow models serve -m runs:/e84a122920de4bdeaedb54146deeb429/artifacts/model
2023/03/12 16:28:28 INFO mlflow.models.flavor_backend_registry: 
Selected backend for flavor 'python_function'
2023/03/12 16:28:28 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-12 16:28:29 -0400] [48431] [INFO] Starting gunicorn 20.1.0
[2023-03-12 16:28:29 -0400] [48431] [INFO] Listening at: http://127.0.0.1:5000 
(48431)
[2023-03-12 16:28:29 -0400] [48431] [INFO] Using worker: sync
[2023-03-12 16:28:29 -0400] [48432] [INFO] Booting worker with pid: 48432
MLflow 入門

Invocations 請求

# 傳送 dataframe_split 方向的負載給 MLflow
curl http://127.0.0.1:5000/invocations -H 'Content-Type: application/json' -d '{
  "dataframe_split": {
      "columns": ["sex", "age", "weight"],
      "data": [["male", 23, 160], ["female", 33, 120]]
  }
}'
{"predictions": [1, 0]}
MLflow 入門

一起來練習吧!

MLflow 入門

Preparing Video For Download...