Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda akan mempelajari cara menyertakan pustaka kustom atau pustaka dari server cermin privat saat mendokumentasikan model, sehingga Anda dapat menggunakannya dengan penyebaran Mosaic AI Model Serving. Anda harus menyelesaikan langkah-langkah yang dirinci dalam panduan ini setelah Anda memiliki model ML terlatih yang siap disebarkan tetapi sebelum Anda membuat endpoint Penyajian Model Azure Databricks.
Pengembangan model sering memerlukan penggunaan pustaka Python kustom yang berisi fungsi untuk pra-atau pasca-pemrosesan, definisi model kustom, dan utilitas bersama lainnya. Selain itu, banyak tim keamanan perusahaan mendorong penggunaan cermin PyPi privat, seperti Nexus atau Artifactory, untuk mengurangi risiko serangan rantai pasokan. Azure Databricks menawarkan dukungan bawaan untuk penginstalan pustaka kustom dan pustaka dari mirror server privat di ruang kerja Azure Databricks.
Persyaratan
- MLflow 1.29 atau lebih tinggi
- Batasi akses jaringan keluar dari titik akhir Model Serving dengan mengonfigurasi kebijakan jaringan. Lihat Memvalidasi dengan penyajian model.
Opsi 1: Menggunakan repositori paket privat
Gunakan Opsi 1 jika organisasi Anda menggunakan cermin PyPI privat (seperti Nexus atau Artifactory). Admin ruang kerja dapat mengonfigurasinya sebagai repositori paket default untuk ruang kerja. Penyajian Model secara otomatis menggunakan konfigurasi ruang kerja tingkat ini saat membangun lingkungan model yang Anda.
Untuk menyiapkan repositori paket privat, lihat Mengonfigurasi repositori paket Python default.
Setelah dikonfigurasi, lanjutkan ke Layani model Anda.
Opsi 2: Mengemas pustaka kustom sebagai file roda
Gunakan Opsi 2 jika cermin PyPI privat tidak dapat diakses, atau jika Anda memiliki pustaka kustom yang tidak tersedia di repositori paket apa pun. Anda dapat mengemasnya sebagai file roda Python dan menyertakannya saat mencatat model Anda.
Langkah 1: Unggah file dependensi Anda
Databricks merekomendasikan agar Anda mengunggah file dependensi anda ke Unity Catalog volume. Atau, Anda dapat mengunggahnya ke Databricks File System (DBFS) menggunakan UI Azure Databricks.
Untuk memastikan pustaka Anda tersedia untuk buku catatan Anda, Anda perlu menginstalnya menggunakan %pip. Menggunakan %pip menginstal pustaka di notebook saat ini dan mengunduh dependensi ke kluster.
Langkah 2: Rekam model dengan pustaka kustom
Setelah Anda menginstal pustaka dan mengunggah file roda Python ke volume Katalog Unity atau DBFS, sertakan kode berikut dalam skrip Anda. Tentukan jalur file dependensi Anda di extra_pip_requirements.
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])
Untuk DBFS, gunakan hal berikut:
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])
Jika Anda memiliki pustaka kustom, Anda harus menentukan semua pustaka Python kustom yang terkait dengan model Anda saat mengonfigurasi pengelogan. Anda dapat melakukannya dengan parameter extra_pip_requirements atau conda_env di log_model().
Penting
Jika menggunakan DBFS, pastikan untuk menyertakan garis miring, /, sebelum jalur dbfs Anda saat melakukan logging extra_pip_requirements. Pelajari selengkapnya tentang jalur DBFS di Bekerja dengan file di Azure Databricks.
from mlflow.utils.environment import _mlflow_conda_env
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency"],
)
Jika pustaka kustom Anda disimpan di suatu tempat selain volume atau DBFS, Anda dapat menentukan lokasinya menggunakan parameter code_paths, dan melewatkan "code/<wheel-file-name>.whl" ke parameter extra_pip_requirements.
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
code_paths=["/path/to/dependency.whl"], # This will be logged as `code/dependency.whl`
extra_pip_requirements=["code/dependency.whl"],
)
Langkah 3: Perbarui model MLflow dengan file roda Python
MLflow menyediakan utilitas add_libraries_to_model() untuk mencatat model Anda dengan semua dependensinya yang telah dikemas sebelumnya sebagai file roda Python. Ini mengemas pustaka kustom Anda bersama model selain semua pustaka lain yang ditentukan sebagai dependensi model Anda. Ini menjamin bahwa pustaka yang digunakan oleh model Anda adalah pustaka yang dapat diakses dari lingkungan pelatihan Anda.
Dalam contoh berikut, model_uri mereferensikan registri model Unity Catalog menggunakan sintaks models:/<uc-model>/<model-version>. Untuk merujuk penggunaan registri model ruang kerja (versi lama), models:/<model-name>/<model-version>.
Saat Anda menggunakan URI registri model, utilitas ini menghasilkan versi baru di bawah model terdaftar yang ada.
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
Layani model Anda
Saat versi model baru dengan paket yang disertakan tersedia dalam registri model, Anda dapat menambahkan versi model ini ke titik akhir dengan Model Serving.
Memecahkan masalah penginstalan paket
Jika penyebaran model Anda gagal selama fase build, Anda dapat meninjau log build untuk mengidentifikasi masalah penginstalan paket.
- Buka halaman Melayani di ruang kerja Azure Databricks Anda.
- Klik nama titik akhir Anda untuk membuka detail titik akhir.
- Klik tab Logs.
- Pilih versi yang gagal dari menu drop-down.
- Klik Buat log.
Tinjau pesan kesalahan untuk mengidentifikasi masalah.
Setelah menyelesaikan masalah, buat penggelaran baru atau perbarui endpoint Anda untuk memicu build baru.
Memecahkan masalah repositori paket privat
Jika Anda menggunakan repositori paket privat, masalah umum meliputi:
- Paket yang hilang: Paket tidak tersedia di repositori anda yang dikonfigurasi. Tambahkan paket yang diperlukan ke repositori privat Anda.
- Masalah koneksi: Penyajian Model tidak dapat menjangkau repositori paket Anda. Verifikasi konektivitas jaringan dan aturan firewall.
- Kegagalan autentikasi: Kredensial yang dikonfigurasi untuk repositori Anda tidak valid atau kedaluwarsa. Perbarui rahasia di konfigurasi ruang kerja Anda.
Notebook tanpa server menggunakan repositori paket default yang sama yang dikonfigurasi untuk ruang kerja Anda. Anda dapat menggunakan notebook untuk menguji konektivitas, autentikasi, dan ketersediaan paket dengan menginstal persyaratan dari file model requirements.txt Anda sebelum menyebarkan ke Model Serving.
import mlflow
import subprocess
import sys
# Step 1: Set your model details
catalog = "<your_catalog>"
schema = "<your_schema>"
model_name = "<your_model>"
version = <your_version>
# Step 2: Download the model's requirements.txt
full_model_name = f"{catalog}.{schema}.{model_name}"
requirements_uri = f"models:/{full_model_name}/{version}/requirements.txt"
print(f"Downloading artifacts from: {requirements_uri}")
local_path = mlflow.artifacts.download_artifacts(requirements_uri)
# Step 3: Print the requirements
with open(local_path, "r") as f:
print(f.read())
# Step 4: Install the requirements using the workspace's default package repository
print(f"Installing requirements from {local_path}...")
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", local_path])
print("Installation complete!")