Bagikan melalui


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 selama predict 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.

Mengkustomisasi output penyajian model dengan notebook MLflow PyFunc

Dapatkan buku catatan