Bagikan melalui


Dependensi model log

Dalam artikel ini, Anda mempelajari cara mencatat model dan dependensinya sebagai artefak model, sehingga tersedia di lingkungan Anda untuk tugas produksi seperti penyajian model.

Dependensi model paket Python Log

MLflow memiliki dukungan asli untuk beberapa pustaka Python ML, di mana MLflow dapat mencatat dependensi dengan andal untuk model yang menggunakan pustaka ini. Lihat rasa model bawaan.

Misalnya, MLflow mendukung scikit-learn dalam modul mlflow.sklearn, dan perintah mlflow.sklearn.log_model mencatat versi sklearn. Hal yang sama berlaku untuk autologging dengan pustaka ML tersebut. Lihat repositori github MLflow untuk contoh tambahan.

Untuk pustaka ML yang dapat diinstal dengan pip install PACKAGE_NAME==VERSION, tetapi tidak memiliki ragam model MLflow bawaan, Anda dapat mencatat paket tersebut menggunakan metode mlflow.pyfunc.log_model . Pastikan untuk mencatat persyaratan dengan versi pustaka yang tepat, misalnya, f"nltk=={nltk.__version__}" alih-alih hanya nltk.

mlflow.pyfunc.log_model mendukung pengelogan untuk:

  • Pustaka publik dan kustom dikemas sebagai file telur Python atau roda Python.
  • Paket publik pada PyPI dan paket yang dihosting secara privat di server PyPI Anda sendiri.

Dengan mlflow.pyfunc.log_model, MLflow mencoba menyimpulkan dependensi secara otomatis. MLflow menyimpulkan dependensi menggunakan mlflow.models.infer_pip_requirements, dan mencatatnya ke requirements.txt file sebagai artefak model.

Dalam versi yang lebih lama, MLflow terkadang tidak mengidentifikasi semua persyaratan Python secara otomatis, terutama jika pustaka bukan rasa model bawaan. Dalam kasus ini, Anda dapat menentukan dependensi tambahan dengan extra_pip_requirements parameter dalam log_model perintah . Lihat contoh penggunaan parameter extra_pip_requirements.

Penting

Anda juga dapat menimpa seluruh set persyaratan dengan conda_env parameter dan pip_requirements , tetapi melakukannya umumnya tidak dianjurkan karena ini mengambil alih dependensi yang diambil MLflow secara otomatis. Lihat contoh cara menggunakan pip_requirements parameter untuk menimpa persyaratan.

Pengelogan model yang disesuaikan

Untuk skenario di mana pengelogan model yang lebih disesuaikan diperlukan, Anda dapat:

  • Tulis model Python kustom. Melakukannya memungkinkan Anda untuk subkelas untuk menyesuaikan inisialisasi mlflow.pyfunc.PythonModel dan prediksi. Pendekatan ini berfungsi dengan baik untuk penyesuaian model khusus Python.
  • Tulis rasa kustom. Dalam skenario ini, Anda dapat menyesuaikan pengelogan lebih dari rasa generik pyfunc , tetapi melakukannya membutuhkan lebih banyak pekerjaan untuk diterapkan.

Kode Python kustom

Anda mungkin memiliki dependensi kode Python yang tidak dapat diinstal menggunakan %pip install perintah , seperti satu atau beberapa .py file.

Saat mencatat model, Anda dapat memberi tahu MLflow bahwa model dapat menemukan dependensi tersebut pada jalur tertentu dengan menggunakan code_path parameter di mlflow.pyfunc.log_model. MLflow menyimpan file atau direktori apa pun yang diteruskan menggunakan code_path sebagai artefak bersama dengan model dalam direktori kode. Saat memuat model, MLflow menambahkan file atau direktori ini ke jalur Python. Rute ini juga berfungsi dengan file roda Python kustom, yang dapat disertakan dalam model menggunakan code_path, seperti .py file.

mlflow.pyfunc.log_model( artifact_path=artifact_path,
                         code_path=[filename.py],
                         data_path=data_path,
                         conda_env=conda_env,
                       )

Mencatat dependensi model paket non-Python

MLflow tidak secara otomatis mengambil dependensi non-Python, seperti paket Java, paket R, dan paket asli (seperti paket Linux). Untuk paket ini, Anda perlu mencatat data tambahan.

  • Daftar dependensi: Databricks merekomendasikan pengelogan artefak dengan model yang menentukan dependensi non-Python ini. Ini bisa menjadi file atau .json sederhana.txt. mlflow.pyfunc.log_model memungkinkan Anda menentukan artefak tambahan ini menggunakan artifacts argumen .
  • Paket kustom: Sama seperti untuk dependensi Python kustom di atas, Anda perlu memastikan bahwa paket tersedia di lingkungan penyebaran Anda. Untuk paket di lokasi pusat seperti Maven Central atau repositori Anda sendiri, pastikan lokasi tersedia pada waktu penilaian atau penyajian. Untuk paket privat yang tidak dihosting di tempat lain, Anda dapat mencatat paket bersama dengan model sebagai artefak.

Menyebarkan model dengan dependensi

Saat menyebarkan model dari MLflow Tracking Server atau Model Registry, Anda perlu memastikan bahwa lingkungan penyebaran memiliki dependensi yang tepat yang diinstal. Jalur paling sederhana mungkin bergantung pada mode penyebaran Anda: batch/streaming atau penyajian online, dan pada jenis dependensi.

Untuk semua mode penyebaran, Databricks merekomendasikan untuk menjalankan inferensi pada versi runtime yang sama dengan yang Anda gunakan selama pelatihan, karena Databricks Runtime tempat Anda membuat model memiliki berbagai pustaka yang sudah diinstal. MLflow di Databricks secara otomatis menyimpan versi runtime tersebut MLmodel dalam file metadata di databricks_runtime bidang, seperti databricks_runtime: 10.2.x-cpu-ml-scala2.12.

Penyajian online: Model AI Mosaik Melayani

Databricks menawarkan Model Serving, di mana model pembelajaran mesin MLflow Anda diekspos sebagai titik akhir REST API yang dapat diskalakan.

Untuk dependensi Python dalam requirements.txt file, Databricks dan MLflow menangani semuanya untuk dependensi PyPI publik. Demikian pula, jika Anda menentukan .py file atau file roda Python saat mencatat model dengan menggunakan code_path argumen , MLflow memuat dependensi tersebut untuk Anda secara otomatis.

Untuk skenario penyajian model ini, lihat yang berikut ini:

Untuk dependensi Python dalam requirements.txt file, Databricks dan MLflow menangani semuanya untuk dependensi PyPI publik. Demikian pula, jika Anda menentukan .py file atau file roda Python saat mencatat model dengan menggunakan code_path argumen , MLflow memuat dependensi tersebut untuk Anda secara otomatis.

Penyajian online: sistem pihak ketiga atau kontainer Docker

Jika skenario Anda mengharuskan melayani solusi penyajian pihak ketiga atau solusi berbasis Docker Anda sendiri, Anda dapat mengekspor model Anda sebagai kontainer Docker.

Databricks merekomendasikan hal berikut untuk penyajian pihak ketiga yang secara otomatis menangani dependensi Python. Namun, untuk dependensi non-Python, kontainer perlu dimodifikasi untuk menyertakannya.

Pekerjaan batch dan streaming

Penilaian batch dan streaming harus dijalankan sebagai Pekerjaan Databricks. Pekerjaan notebook sering kali cukup, dan cara paling sederhana untuk menyiapkan kode adalah dengan menggunakan Databricks Model Registry untuk menghasilkan buku catatan penilaian.

Berikut ini menjelaskan proses dan langkah-langkah yang harus diikuti untuk memastikan dependensi diinstal dan diterapkan dengan sesuai:

  1. Mulai kluster penilaian Anda dengan versi Databricks Runtime yang sama yang digunakan selama pelatihan. databricks_runtime Baca bidang dari MLmodel file metadata, dan mulai kluster dengan versi runtime tersebut.

    • Ini dapat dilakukan secara manual dalam konfigurasi kluster atau diotomatisasi dengan logika kustom. Untuk otomatisasi, format versi runtime yang Anda baca dari file metadata di API Pekerjaan dan API Kluster.
  2. Selanjutnya, instal dependensi non-Python apa pun. Untuk memastikan dependensi non-Python Anda dapat diakses oleh lingkungan penyebaran, Anda dapat:

    • Instal dependensi non-Python model Anda secara manual pada kluster Databricks sebagai bagian dari konfigurasi kluster sebelum menjalankan inferensi.
    • Atau, Anda dapat menulis logika kustom dalam penyebaran pekerjaan penilaian Anda untuk mengotomatiskan penginstalan dependensi ke kluster Anda. Dengan asumsi Anda menyimpan dependensi non-Python sebagai artefak seperti yang dijelaskan dalam Dependensi model paket non-Python Log, otomatisasi ini dapat menginstal pustaka menggunakan API Pustaka. Atau, Anda dapat menulis kode tertentu untuk menghasilkan skrip inisialisasi cakupan kluster untuk menginstal dependensi.
  3. Pekerjaan penilaian Anda menginstal dependensi Python di lingkungan eksekusi pekerjaan. Di Databricks, Registri Model memungkinkan Anda membuat buku catatan untuk inferensi yang melakukan ini untuk Anda.

    • Saat Anda menggunakan Registri Model Databricks untuk menghasilkan buku catatan penilaian, buku catatan berisi kode untuk menginstal dependensi Python dalam file model requirements.txt . Untuk pekerjaan notebook Anda untuk penilaian batch atau streaming, kode ini menginisialisasi lingkungan notebook Anda, sehingga dependensi model diinstal dan siap untuk model Anda.
  4. MLflow menangani kode Python kustom apa pun yang disertakan code_path dalam parameter di log_model. Kode ini ditambahkan ke jalur Python ketika metode model predict() dipanggil. Anda juga dapat melakukan ini secara manual dengan:

    Catatan

    Jika Anda menentukan .py file atau file roda Python saat mencatat model menggunakan code_path argumen , MLflow memuat dependensi tersebut untuk Anda secara otomatis.