Aracılığıyla paylaş


Model Sunma için dağıtım öncesi doğrulama

Bu makaledeki yönergeler, uç nokta dağıtım işlemini beklemeden önce modelinizle ilgili sorunları yakalamanıza yardımcı olabilir. Databricks, model sunma kullanırken daha iyi bir geliştirme deneyimi sağlamak için bu doğrulama adımlarının izlenmesini önerir.

Dağıtımdan önce tahminleri test edin

Modelinizi sunum uç noktasına dağıtmadan önce, mlflow.models.predict ve giriş örneklerini kullanarak çevrimdışı tahminleri sanal bir ortamla test edin. MLflow, dağıtım ortamını simüle eden ve değiştirilen bağımlılıkların test edilmesine izin veren doğrulama API'leri sağlar.

İki dağıtım öncesi doğrulama seçeneği vardır: MLflow Python API ve MLflow CLI. Daha ayrıntılı yönergeler almak için tahminleri test etmek amacıyla MLflow belgelerine bakın.

Aşağıdaki parametreleri belirtebilirsiniz:

  • Model model_uri sunma için dağıtılan modelin.
  • Aşağıdakilerden biri:
    • input_data Modelin çağrısı için mlflow.pyfunc.PyFuncModel.predict() beklenen biçimde.
    • input_path çağrısı için predictyüklenecek ve kullanılacak giriş verilerini içeren bir dosya tanımlayan.
  • in content_typecsv veya json biçimi.
  • Tahminleri bir dosyaya yazmak için isteğe bağlı output_path . Bu parametreyi atlarsanız, tahminler olarak stdoutyazdırılır.
  • Hizmet vermek için ortamı oluşturmak amacıyla kullanılan bir ortam yöneticisi env_manager:
    • Varsayılan değer: virtualenv. Doğrulama için önerilir.
    • local kullanılabilir, ancak doğrulamaya yönelik olası hatalara açıktır. Genellikle yalnızca hızlı hata ayıklama için kullanılır.
  • kullanarak install_mlflowortamınızdaki geçerli MLflow sürümünün sanal ortamıyla yüklenip yüklenmeyeceği. Bu ayar varsayılan olarak olarak ayarlanır False.
  • Sorun giderme veya hata ayıklama için paket bağımlılıklarının farklı sürümlerini güncelleştirme ve test etme. Bunu geçersiz kılma bağımsız değişkenini pip_requirements_overridekullanarak dize bağımlılığı geçersiz kılmalarının veya eklemelerinin listesi olarak belirtebilirsiniz.

Örneğin:

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"],
)

Model bağımlılıklarını güncelleştirme

Günlüğe kaydedilen modelle belirtilen bağımlılıklarla ilgili herhangi bir sorun varsa, başka bir modeli günlüğe kaydetmek zorunda kalmadan MLflow CLI'sini veya mlflow.models.model.update_model_requirements() MLflow Python API'sini kullanarak gereksinimleri güncelleştirebilirsiniz.

Aşağıdaki örnek, günlüğe kaydedilen bir modelin pip_requirements.txt'sini yerinde güncelleştirmeyi gösterir.

Mevcut tanımları belirtilen paket sürümleriyle güncelleştirebilir veya var olmayan gereksinimleri dosyaya pip_requirements.txt ekleyebilirsiniz. Bu dosya, belirtilen model_uri konumdaki MLflow modeli yapıtı içindedir.

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"],
)

Dağıtımdan önce model girişini doğrulama

Uç noktaları sunan model, özel bir JSON girişi biçimi bekler. MLflow'da kullanarak validate_serving_input dağıtımdan önce model girişinizin bir sunum uç noktasında çalıştığını doğrulayabilirsiniz.

Modeliniz geçerli bir giriş örneğiyle günlüğe kaydedildiyse, çalıştırmanın çıktılar sekmesinde otomatik olarak oluşturulan kodun bir örneği aşağıda verilmiştir.

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)

Ayrıca, geçerli bir JSON servis girişi oluşturmak için convert_input_example_to_serving_input API'yi kullanarak günlüğe alınan modelde herhangi bir giriş örneğini test edebilirsiniz.

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)

Modelin el ile sunumunu test etme

Aşağıdaki adımları kullanarak modelin sunum davranışını el ile test edebilirsiniz:

  1. Bir defter açın ve Databricks Runtime sürümünü kullanan, Machine Learning için Databricks Runtime sürümünü kullanmayan Genel Amaçlı bir kümeye ekleyin.
  2. MLflow kullanarak modeli yükleyin ve oradan hata ayıklamayı deneyin.

Ayrıca modeli bilgisayarınıza yerel olarak yükleyebilir ve oradan hata ayıklayabilirsiniz. Aşağıdakini kullanarak modelinizi yerel olarak yükleyin:

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)