Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, modelinizi günlüğe kaydettiğinizde özel kitaplıkları veya özel bir yansı sunucusundaki kitaplıkları nasıl ekleyeceğinizi, böylece bunları Model Serving model dağıtımlarıyla nasıl kullanabileceğinizi öğreneceksiniz. Eğitilmiş bir ML modeli dağıtılmaya hazır olduktan sonra ancak bir Azure Databricks Model Sunma uç noktası oluşturmadan önce bu kılavuzda ayrıntılı adımları tamamlamanız gerekir.
Model geliştirme genellikle ön veya son işleme, özel model tanımları ve diğer paylaşılan yardımcı programlar için işlevler içeren özel Python kitaplıklarının kullanılmasını gerektirir. Ayrıca birçok kurumsal güvenlik ekibi, tedarik zinciri saldırıları riskini azaltmak için Nexus veya Artifactory gibi özel PyPi yansıtmalarının kullanılmasını teşvik eder. Azure Databricks, Azure Databricks çalışma alanındaki özel kitaplıkların ve özel bir yansıtmadan gelen kitaplıkların yüklenmesi için yerel destek sunar.
Gereksinimler
- MLflow 1.29 veya üzeri
- Ağ ilkelerini yapılandırarak Model Sunma uç noktalarına giden ağ erişimini kısıtlayın. Bkz . Model sunma ile doğrulama.
Seçenek 1: Özel paket deposu kullanma
Kuruluşunuz özel bir PyPI yansıtması kullanıyorsa (Nexus veya Artifactory gibi) Seçenek 1'i kullanın. Çalışma alanı yöneticileri bunu çalışma alanı için varsayılan paket deposu olarak yapılandırabilir. Model Sunma, model ortamınızı oluştururken otomatik olarak bu çalışma alanı düzeyinde yapılandırmayı kullanır.
Özel paket deposu ayarlamak için bkz. Varsayılan paket depolarını yapılandırma.
Depoyu yapılandırdıktan sonra Modelinize hizmet verme bölümüne geçin.
Seçenek 2: Özel kitaplıkları tekerlek dosyaları olarak paketleme
Özel bir PyPI yansıtması erişilebilir değilse veya herhangi bir paket deposunda bulunmayan özel kitaplıklarınız varsa 2. Seçeneği kullanın. Bunları Python tekerlek dosyaları olarak paketleyebilir ve modelinizi günlüğe kaydederken ekleyebilirsiniz.
1. Adım: Bağımlılık dosyanızı karşıya yükleyin
Databricks, bağımlılık dosyanızı Unity Kataloğu birimlerineyüklemenizi önerir. Alternatif olarak, Azure Databricks kullanıcı arabirimini kullanarak Databricks Dosya Sistemi'ne (DBFS) yükleyebilirsiniz.
Kitaplığınızın not defterinizde kullanılabilir olduğundan emin olmak için %pip kullanarak yüklemeniz gerekir. kullanarak %pip kitaplığı geçerli not defterine yükler ve kümeye bağımlılığı indirir.
2. Adım: Modeli özel bir kitaplıkla günlüğe kaydetme
Kitaplığı yükledikten ve Python tekerlek dosyasını Unity Kataloğu birimlerine veya DBFS'ye yükledikten sonra betiğinize aşağıdaki kodu ekleyin. içinde extra_pip_requirements bağımlılık dosyanızın yolunu belirtin.
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volumes/path/to/dependency.whl"])
Özel kitaplığınız varsa, günlüğü yapılandırırken modelinizle ilişkili tüm özel Python kitaplıklarını belirtmeniz gerekir. Bunu extra_pip_requirementsconda_env veya parametreleriyle yapabilirsiniz.
from mlflow.utils.environment import _mlflow_conda_env
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency.whl"],
)
Özel kitaplığınız bir birim veya DBFS dışında bir yerde depolanıyorsa, code_paths parametresini kullanarak konumunu belirtebilir ve "code/<wheel-file-name>.whl" parametresini extra_pip_requirements parametresi içinde iletebilirsiniz.
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"],
)
3. Adım: MLflow modelini Python tekerlek dosyalarıyla güncelleştirme
MLflow, modelinizi python tekerlek dosyaları olarak önceden paketlenmiş tüm bağımlılıklarıyla günlüğe kaydetmek için add_libraries_to_model() yardımcı programını sağlar. Bu, modelinizin bağımlılıkları olarak belirtilen diğer tüm kitaplıklara ek olarak özel kitaplıklarınızı da modelle birlikte paketler. Bu, modeliniz tarafından kullanılan kitaplıkların eğitim ortamınızdan erişilebilen kitaplıklar olmasını garanti eder.
Aşağıdaki örnekte, model_urimodels:/<uc-model>/<model-version>söz dizimini kullanarak Unity Kataloğu model kayıt defterine başvurur. Çalışma alanı model kayıt defterine (eski) başvurmak için models:/<model-name>/<model-version>kullanın.
Model kayıt defteri URI'sini kullandığınızda, bu yardımcı program mevcut kayıtlı modeliniz altında yeni bir sürüm oluşturur.
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
Modelinize hizmet etme
Dahil edilen paketleri içeren yeni bir model sürümü model kayıt defterinde kullanılabilir olduğunda, model sunumunu içeren bir uç noktaya bu model sürümünü ekleyebilirsiniz.
Paket yükleme sorunlarını giderme
Derleme aşamasında model dağıtımınız başarısız olursa, paket yükleme sorunlarını belirlemek için derleme günlüklerini gözden geçirebilirsiniz.
- Azure Databricks çalışma alanınızda Sunum sayfasına gidin.
- Uç nokta ayrıntılarını açmak için uç noktanızın adına tıklayın.
- Günlükler sekmesine tıklayın.
- Açılan menüden başarısız sürümü seçin.
- Günlük oluştur'a tıklayın.
Sorunu tanımlamak için hata iletilerini gözden geçirin.
Sorunu çözdükten sonra yeni bir dağıtım oluşturun veya uç noktanızı güncelleştirerek yeni bir derleme tetikleyin.
Özel paket deposu sorunlarını giderme
Özel paket deposu kullanıyorsanız yaygın sorunlar şunlardır:
- Eksik paketler: Paket, yapılandırılan deponuzda kullanılamaz. Gerekli paketi özel deponuza ekleyin.
- Bağlantı sorunları: Model Sunma paket deponuza erişemiyor. Ağ bağlantısını ve güvenlik duvarı kurallarını doğrulayın.
- Kimlik doğrulama hataları: Deponuz için yapılandırılan kimlik bilgileri geçerli değil veya süresi doldu. Çalışma alanı yapılandırmanızdaki gizli bilgileri güncelleyin.
Sunucusuz not defterleri, çalışma alanınız için yapılandırılan aynı varsayılan paket deposunu kullanır. Model Sunma'ya dağıtmadan önce modelinizin requirements.txt dosyasından gereksinimleri yükleyerek bağlantı, kimlik doğrulaması ve paket kullanılabilirliğini test etmek için not defteri kullanabilirsiniz.
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!")