Розгортання моделей

Вступ до MLflow

Weston Bassler

Senior MLOps Engineer

Життєвий цикл ML

Етапи життєвого циклу ML

1 datacamp.com
Вступ до MLflow

Версії та стадії моделі

  • Версії моделі

    • Версія +1
  • Стадії моделі

    • Staging
    • Production
    • Archived

Версії та стадії моделі

Вступ до MLflow

Способи розгортання моделей

Завантажити модель

# MLflow flavor
mlflow.FLAVOR.load_model()

Надати сервіс моделі

# MLflow serve command-line
mlflow models serve
Вступ до MLflow

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


# Завантажити модель Unicorn у Staging model = mlflow.sklearn.load_model("models:/Unicorn/Staging")
# Вивести модель model
LogisticRegression()
# Інференс
model.predict(data)
Вступ до MLflow

Сервінг моделей

# Запустити сервіс моделі Unicorn у стадії Production
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

Endpoint invocations

api

http://localhost:5000/invocations

  • Формати
    • CSV
    • JSON
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

Прогноз моделі

# Надіслати payload на endpoint 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...