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.
Panduan dalam artikel ini dapat membantu Anda menangkap masalah dengan model Anda sebelum menunggu proses penyebaran titik akhir. Databricks merekomendasikan untuk melalui langkah-langkah validasi ini untuk memastikan pengalaman pengembangan yang lebih baik saat menggunakan penyajian model.
Menguji prediksi sebelum penyebaran
Sebelum menyebarkan model Anda ke titik akhir penyajian, uji prediksi offline dengan lingkungan virtual menggunakan contoh mlflow.models.predict dan input. MLflow menyediakan API validasi yang mensimulasikan lingkungan penyebaran dan memungkinkan pengujian dependensi yang dimodifikasi.
Ada dua opsi validasi pra-penyebaran: MLflow Python API dan MLflow CLI. Lihat dokumentasi MLflow untuk menguji prediksi untuk panduan yang lebih rinci.
Anda dapat menentukan parameter berikut:
- Model
model_uriyang disebarkan untuk memodelkan penyajian. - Salah satu hal berikut ini:
-
input_datadalam format yang diharapkan untukmlflow.pyfunc.PyFuncModel.predict()panggilan model. -
input_pathyang menentukan file yang berisi data input yang akan dimuat dan digunakan untuk panggilan kepredict.
-
-
content_typedalamcsvataujsonformat. -
output_pathOpsional untuk menulis prediksi ke file. Jika Anda menghilangkan parameter ini, prediksi akan dicetak kestdout. - Manajer lingkungan sistem,
env_manager, yang digunakan untuk membangun lingkungan sistem untuk menjalankan:- Defaultnya adalah
virtualenv. Direkomendasikan untuk melayani validasi. -
localtersedia, tetapi berpotensi rawan kesalahan untuk melayani validasi. Umumnya hanya digunakan untuk penelusuran kesalahan cepat.
- Defaultnya adalah
- Apakah akan menginstal versi MLflow saat ini yang ada di lingkungan Anda dengan lingkungan virtual menggunakan
install_mlflow. Pengaturan ini secara default adalahFalse. - Apakah perlu memperbarui dan menguji versi dependensi paket yang berbeda untuk pemecahan masalah atau pengecekan kesalahan. Anda dapat menentukan ini sebagai daftar dependensi string yang akan diganti atau ditambahkan menggunakan argumen override,
pip_requirements_override.
Contohnya:
import mlflow
run_id = "..."
model_uri = f"runs:/{run_id}/model"
mlflow.models.predict(
model_uri=model_uri,
input_data={"col1": 34.2, "col2": 11.2, "col3": "green"},
content_type="json",
env_manager="virtualenv",
install_mlflow=False,
pip_requirements_override=["pillow==10.3.0", "scipy==1.13.0"],
)
Memperbarui dependensi model
Jika ada masalah dengan dependensi yang ditentukan dengan model yang dicatat, Anda dapat memperbarui persyaratan dengan menggunakan MLflow CLI atau mlflow.models.model.update_model_requirements() di MLflow Python API tanpa harus mencatat model lain.
Contoh berikut menunjukkan cara memperbarui pip_requirements.txt dari model yang dicatat secara langsung.
Anda dapat memperbarui definisi yang ada dengan versi paket tertentu atau menambahkan persyaratan yang tidak ada ke file pip_requirements.txt. File ini berada dalam artefak model MLflow di lokasi yang ditentukan model_uri .
from mlflow.models.model import update_model_requirements
update_model_requirements(
model_uri=model_uri,
operation="add",
requirement_list=["pillow==10.2.0", "scipy==1.12.0"],
)
Memvalidasi input model sebelum penyebaran
Model yang melayani titik akhir mengharapkan format khusus input JSON. Anda dapat memvalidasi bahwa input model Anda berfungsi pada titik akhir penyajian sebelum penyebaran menggunakan validate_serving_input di MLflow.
Berikut ini adalah contoh kode yang dihasilkan secara otomatis di tab artefak eksekusi jika model Anda dicatat dengan contoh input yang valid.
from mlflow.models import validate_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
serving_payload = """{
"messages": [
{
"content": "How many product categories are there?",
"role": "user"
}
]
}
"""
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Anda juga dapat menguji contoh input apa pun terhadap model yang dicatat dengan menggunakan convert_input_example_to_serving_input API untuk menghasilkan input penyajian JSON yang valid.
from mlflow.models import validate_serving_input
from mlflow.models import convert_input_example_to_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
# Define INPUT_EXAMPLE with your own input example to the model
# A valid input example is a data instance suitable for pyfunc prediction
serving_payload = convert_input_example_to_serving_input(INPUT_EXAMPLE)
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Uji penyajian model secara manual
Anda dapat menguji perilaku penyajian model secara manual menggunakan langkah-langkah berikut:
- Buka notebook dan lampirkan ke kluster All-Purpose yang menggunakan versi Databricks Runtime, bukan Databricks Runtime untuk Pembelajaran Mesin.
- Muat model menggunakan MLflow dan coba debugging dari sana.
Anda juga dapat memuat model secara lokal di PC dan debug dari sana. Muat model Anda secara lokal menggunakan yang berikut ini:
import os
import mlflow
os.environ["MLFLOW_TRACKING_URI"] = "databricks://PROFILE"
ARTIFACT_URI = "model_uri"
if '.' in ARTIFACT_URI:
mlflow.set_registry_uri('databricks-uc')
local_path = mlflow.artifacts.download_artifacts(ARTIFACT_URI)
print(local_path)
conda env create -f local_path/artifact_path/conda.yaml
conda activate mlflow-env
mlflow.pyfunc.load_model(local_path/artifact_path)