Кастомні моделі

Вступ до MLflow

Weston Bassler

Senior MLOps Engineer

Приклади застосувань

  • NLP — токенайзер(и)

  • Класифікація — кодувальник міток

  • Перед/післяобробка

  • Не вбудований flavor

Різне

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

Кастомні моделі Python

  • Вбудований flavor — python_function

  • mlflow.pyfunc

    • save_model()
    • log_model()
    • load_model()
Вступ до MLflow

Власний клас моделі

  • Власний клас моделі

    • MyClass(mlflow.pyfunc.PythonModel)
  • Клас PythonModel

    • load_context() — завантажує артефакти, коли викликають mlflow.pyfunc.load_model()
    • predict() — приймає вхід і виконує визначене користувачем оцінювання
Вступ до MLflow

Клас Python

# Клас
class MyPythonClass:

# Функція, що друкує Hello! def my_func(): print("Hello!")
# Створення нового об'єкта
x = MyPythonClass()

# Виконати функцію my_func x.my_func()
"Hello!"
Вступ до MLflow

Приклад кастомного класу

import mlflow.pyfunc

# Визначте клас моделі
class CustomPredict(mlflow.pyfunc.PythonModel):

# Завантажити артефакти def load_context(self, context): self.model = mlflow.sklearn.load_model(context.artifacts["custom_model"])
# Оцінити вхід за допомогою custom_function() def predict(self, context, model_input): prediction = self.model.predict(model_input) return custom_function(prediction)
Вступ до MLflow

Збереження й логування кастомної моделі

# Зберегти модель у локальну файлову систему
mlflow.pyfunc.save_model(path="custom_model", python_model=CustomPredict())
# Залогувати модель у MLflow Tracking
mlflow.pyfunc.log_model(artifact_path="custom_model", python_model=CustomPredict())
Вступ до MLflow

Завантаження кастомних моделей

# Завантажити модель з локальної файлової системи
mlflow.pyfunc.load_model("local")
# Завантажити модель з MLflow Tracking
mlflow.pyfunc.load_model("runs:/run_id/tracking_path")
Вступ до MLflow

Оцінювання моделі

  • mlflow.evaluate() — продуктивність на наборі даних

  • Моделі регресії та класифікації

Вступ до MLflow

Приклад оцінювання

# Тренувальні дані
X_train, X_test, y_train, y_test = \
    train_test_split(X, y,
    train_size=0.7,random_state=0)

# Модель лінійної регресії lr = LinearRegression() lr.fit(X_train, y_train)
# Набір даних
eval_data = X_test
eval_data["test_label"] = y_test

# Оцінити модель на наборі даних mlflow.evaluate( "runs:/run_id/model", eval_data, targets="test_label", model_type="regressor" )
Вступ до MLflow

Інтерфейс Tracking

eval

shap

1 shap.readthedocs.io
Вступ до MLflow

Давайте потренуємось!

Вступ до MLflow

Preparing Video For Download...