Menyebarkan kode Python dengan Model Serving
Artikel ini menjelaskan cara menyebarkan kode Python dengan Model Serving.
Fungsi Python MLflow, pyfunc
, memberikan fleksibilitas untuk menyebarkan bagian kode Python atau model Python apa pun. Berikut ini adalah contoh skenario di mana Anda mungkin ingin menggunakan panduan.
- Model Anda memerlukan pra-pemrosesan sebelum input dapat diteruskan ke fungsi prediksi model.
- Kerangka kerja model Anda tidak didukung secara asli oleh MLflow.
- Aplikasi Anda mengharuskan output mentah model diproses pasca-diproses untuk dikonsumsi.
- Model itu sendiri memiliki logika per permintaan per percabangan.
- Anda ingin menyebarkan kode kustom sepenuhnya sebagai model.
Membuat model fungsi MLflow Python kustom
MLflow menawarkan kemampuan untuk mencatat kode Python dengan format model Python kustom.
Ada dua fungsi yang diperlukan saat mengemas kode python arbitrer dengan MLflow:
load_context
- apa pun yang perlu dimuat hanya satu kali agar model beroperasi harus didefinisikan dalam fungsi ini. Ini sangat penting sehingga sistem meminimalkan jumlah artefak yang dimuat selamapredict
fungsi, yang mempercepat inferensi.predict
- fungsi ini menampung semua logika yang dijalankan setiap kali permintaan input dibuat.
Catat model fungsi Python Anda
Meskipun Anda menulis model Anda dengan kode kustom, dimungkinkan untuk menggunakan modul kode bersama dari organisasi Anda. code_path
Dengan parameter , penulis model dapat mencatat referensi kode lengkap yang dimuat ke jalur dan dapat digunakan dari model kustom pyfunc
lainnya.
Misalnya, jika model dicatat dengan:
mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])
Kode dari preprocessing_utils
tersedia dalam konteks model yang dimuat. Berikut ini adalah contoh model yang menggunakan kode ini.
class CustomModel(mlflow.pyfunc.PythonModel):
def load_context(self, context):
self.model = torch.load(context.artifacts["model-weights"])
from preprocessing_utils.my_custom_tokenizer import CustomTokenizer
self.tokenizer = CustomTokenizer(context.artifacts["tokenizer_cache"])
def format_inputs(self, model_input):
# insert some code that formats your inputs
pass
def format_outputs(self, outputs):
predictions = (torch.sigmoid(outputs)).data.numpy()
return predictions
def predict(self, context, model_input):
model_input = self.format_inputs(model_input)
outputs = self.model.predict(model_input)
return self.format_outputs(outputs)
Layani model Anda
Setelah mencatat model kustom pyfunc
, Anda dapat mendaftarkannya ke Unity Catalog atau Workspace Registry dan melayani model Anda ke titik akhir Model Serving.
Contoh buku catatan
Contoh notebook berikut menunjukkan cara menyesuaikan output model saat output mentah model yang dikueri perlu diproses pasca-diproses untuk dikonsumsi.