Model kustom

Pengantar MLflow

Weston Bassler

Senior MLOps Engineer

Contoh use case

  • NLP - Tokenizer

  • Klasifikasi - Label encoder

  • Pra/Pasca-pemrosesan

  • Bukan flavor bawaan

Berbeda

1 unsplash.com
Pengantar MLflow

Model Python kustom

  • Flavor bawaan - python_function

  • mlflow.pyfunc

    • save_model()
    • log_model()
    • load_model()
Pengantar MLflow

Kelas model kustom

  • Kelas model kustom

    • MyClass(mlflow.pyfunc.PythonModel)
  • Kelas PythonModel

    • load_context() - memuat artefak saat mlflow.pyfunc.load_model() dipanggil
    • predict() - menerima input model dan melakukan evaluasi buatan pengguna
Pengantar MLflow

Kelas Python

# Kelas
class MyPythonClass:

# Fungsi yang mencetak Hello! def my_func(): print("Hello!")
# Buat Objek baru
x = MyPythonClass()

# Jalankan fungsi my_func x.my_func()
"Hello!"
Pengantar MLflow

Contoh kelas kustom

import mlflow.pyfunc

# Definisikan kelas model
class CustomPredict(mlflow.pyfunc.PythonModel):

# Muat artefak def load_context(self, context): self.model = mlflow.sklearn.load_model(context.artifacts["custom_model"])
# Evaluasi input dengan custom_function() def predict(self, context, model_input): prediction = self.model.predict(model_input) return custom_function(prediction)
Pengantar MLflow

Menyimpan dan mencatat model kustom

# Simpan model ke filesystem lokal
mlflow.pyfunc.save_model(path="custom_model", python_model=CustomPredict())
# Catat model ke MLflow Tracking
mlflow.pyfunc.log_model(artifact_path="custom_model", python_model=CustomPredict())
Pengantar MLflow

Memuat model kustom

# Muat model dari filesystem lokal
mlflow.pyfunc.load_model("local")
# Muat model dari MLflow Tracking
mlflow.pyfunc.load_model("runs:/run_id/tracking_path")
Pengantar MLflow

Evaluasi model

  • mlflow.evaluate() - Kinerja berbasis dataset

  • Model regresi dan klasifikasi

Pengantar MLflow

Contoh evaluasi

# Data pelatihan
X_train, X_test, y_train, y_test = \
    train_test_split(X, y,
    train_size=0.7,random_state=0)

# Model Regresi Linear lr = LinearRegression() lr.fit(X_train, y_train)
# Dataset
eval_data = X_test
eval_data["test_label"] = y_test

# Evaluasi model dengan Dataset mlflow.evaluate( "runs:/run_id/model", eval_data, targets="test_label", model_type="regressor" )
Pengantar MLflow

UI Tracking

eval

shap

1 shap.readthedocs.io
Pengantar MLflow

Ayo berlatih!

Pengantar MLflow

Preparing Video For Download...