Aracılığıyla paylaş


Unity Kataloğu'nda model yaşam döngüsünü yönetme

Önemli

  • Bu makalede, Databricks'in modelleri yönetmek ve dağıtmak için önerdiği Unity Kataloğu'ndaki Modeller belgeleniyor. Çalışma alanınız Unity Kataloğu için etkinleştirilmemişse, bu sayfadaki işlevler kullanılamaz. Bunun yerine bkz . Çalışma Alanı Modeli Kayıt Defteri'ni (eski) kullanarak model yaşam döngüsünü yönetme. Çalışma Alanı Modeli Kayıt Defteri'nden Unity Kataloğu'na yükseltme yönergeleri için bkz . İş akışlarını ve modelleri Unity Kataloğu'na geçirme.
  • Unity Kataloğu'ndaki modeller Azure Kamu bölgelerde kullanılamaz.

Bu makalede, ML modellerinin tüm yaşam döngüsünü yönetmek için makine öğrenmesi iş akışınızın bir parçası olarak Unity Kataloğu'ndaki Modellerin nasıl kullanılacağı açıklanmaktadır. Databricks, Unity Kataloğu'nda MLflow Model Kayıt Defteri'nin barındırılan bir sürümünü sağlar. Unity Kataloğu'ndaki modeller, Unity Kataloğu'nun avantajlarını, çalışma alanları arasında merkezi erişim denetimi, denetim, köken ve model bulma dahil olmak üzere ML modellerine genişletir. Unity Kataloğu'ndaki modeller açık kaynak MLflow Python istemcisiyle uyumludur.

Model Kayıt Defteri kavramlarına genel bakış için bkz . MLflow kullanarak ML yaşam döngüsü yönetimi.

Gereksinimler

  1. Unity Kataloğu çalışma alanınızda etkinleştirilmelidir. Bkz . Unity Kataloğu Meta Veri Deposu oluşturmak, çalışma alanında etkinleştirmek ve katalog oluşturmak için Unity Kataloğu'nu kullanmaya başlama. Unity Kataloğu etkin değilse çalışma alanı modeli kayıt defterini kullanın.

  2. Unity Kataloğu'na erişimi olan bir işlem kaynağı kullanmanız gerekir. ML iş yükleri için bu, işlem için erişim modunun Tek kullanıcı olması gerektiği anlamına gelir. Daha fazla bilgi için bkz . Erişim modları.

  3. Yeni kayıtlı modeller oluşturmak için aşağıdaki ayrıcalıklara sahip olmanız gerekir:

    • USE SCHEMA ve USE CATALOG şema ve onun kapsayan kataloğundaki ayrıcalıklar.
    • CREATE_MODEL ayrıcalığı. Bu ayrıcalığı vermek için Katalog Gezgini kullanıcı arabirimini veya aşağıdaki SQL GRANT komutunu kullanın:
    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

Not

Çalışma alanınız, ayrıcalık devralmayı destekleyen bir Unity Kataloğu meta deposuna eklenmelidir. Bu, 25 Ağustos 2022'den sonra oluşturulan tüm meta veri depoları için geçerlidir. Eski bir meta veri deposunda çalışıyorsa, yükseltmek için belgeleri izleyin.

Unity Kataloğu için MLflow istemcisini yükleme ve yapılandırma

Bu bölüm, Unity Kataloğu için MLflow istemcisini yükleme ve yapılandırma yönergelerini içerir.

MLflow Python istemcisini yükleme

Aşağıdaki kodu kullanarak, not defterinize MLflow Python istemcisinin en son sürümünü yükleyerek Databricks Runtime 11.3 LTS ve üzeri sürümlerde Unity Kataloğu'ndaki modelleri de kullanabilirsiniz.

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

Unity Kataloğu'ndaki modellere erişmek için MLflow istemcisini yapılandırma

Çalışma alanınızın varsayılan kataloğu Unity Kataloğu'ndaysa (yerine hive_metastore) ve Databricks Runtime 13.3 LTS veya üzerini (Azure Çin bölgelerinde Databricks Runtime 15.0 veya üzeri) kullanarak bir küme çalıştırıyorsanız, modeller otomatik olarak içinde oluşturulur ve varsayılan katalogdan yüklenir. Bu adımı gerçekleştirmeniz gerekmez.

Diğer çalışma alanları için MLflow Python istemcisi Databricks çalışma alanı modeli kayıt defterinde modeller oluşturur. Unity Kataloğu'ndaki modellere yükseltmek için not defterlerinizde aşağıdaki kodu kullanarak MLflow istemcisini yapılandırın:

import mlflow
mlflow.set_registry_uri("databricks-uc")

Hem varsayılan kataloğun Ocak 2024'den önce Unity Kataloğu'nda bir katalog olarak yapılandırıldığı hem de Çalışma alanı modeli kayıt defterinin Ocak 2024'den önce kullanıldığı az sayıda çalışma alanı için, yukarıda gösterilen komutu kullanarak varsayılan kataloğu El ile Unity Kataloğu olarak ayarlamanız gerekir.

Unity Kataloğu ile uyumlu modelleri eğitin ve kaydedin

Gerekli izinler: Yeni bir kayıtlı model oluşturmak için, kapsayan CREATE_MODEL şemada ve USE SCHEMA ayrıcalıklarına ve USE CATALOG kapsayan katalogda ayrıcalığına sahip olmanız gerekir. Kayıtlı bir model altında yeni model sürümleri oluşturmak için, kayıtlı modelin sahibi olmanız ve modeli içeren şema ve katalog üzerinde ve USE CATALOG ayrıcalıklarına sahip USE SCHEMA olmanız gerekir.

UC'deki ML modeli sürümlerinin model imzası olmalıdır. MLflow modellerini model eğitim iş yüklerinizde imzalarla günlüğe kaydetmediyseniz şunları yapabilirsiniz:

  • Birçok popüler ML çerçevesi için imzaları olan modelleri otomatik olarak günlüğe kaydeden Databricks otomatik kaydetme özelliğini kullanın. Bkz. MLflow belgelerinde desteklenen çerçeveler.
  • MLflow 2.5.0 ve üzeri ile çağrınızda mlflow.<flavor>.log_model bir giriş örneği belirtebilirsiniz ve model imzası otomatik olarak çıkarılır. Daha fazla bilgi için MLflow belgelerine bakın.

Ardından, modelin üç düzeyli adını biçimindeki <catalog>.<schema>.<model>MLflow API'lerine geçirin.

Bu bölümdeki örnekler, kataloğun ml_team altındaki şemada modeller oluşturur ve bu modellere erişer prod .

Bu bölümdeki model eğitim örnekleri yeni bir model sürümü oluşturur ve kataloğa prod kaydeder. Kataloğun prod kullanılması, model sürümünün üretim trafiğine hizmet ettiğini göstermez. Model sürümünün kapsayan kataloğu, şeması ve kayıtlı modeli, ortamını () ve ilişkili idare kurallarını (prodörneğin, yalnızca yöneticilerin katalogdan prod silebilmesi için ayrıcalıklar ayarlanabilir), dağıtım durumunu yansıtmaz. Dağıtım durumunu yönetmek için model diğer adlarını kullanın.

Otomatik kaydetmeyi kullanarak modeli Unity Kataloğu'na kaydetme

Modeli kaydetmek için MLflow İstemci API'sini register_model() kullanın. Bkz. mlflow.register_model.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)

# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist
autolog_run = mlflow.last_active_run()
model_uri = "runs:/{}/model".format(autolog_run.info.run_id)
mlflow.register_model(model_uri, "prod.ml_team.iris_model")

API kullanarak modeli kaydetme

mlflow.register_model(
  "runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)

Otomatik olarak çıkarsanan imzayla modeli Unity Kataloğu'na kaydetme

Otomatik olarak çıkarsanan imzalar için destek MLflow sürüm 2.5.0 ve üzeri sürümlerde sağlanır ve Databricks Runtime 11.3 LTS ML ve üzeri sürümlerde desteklenir. Otomatik olarak çıkarsanan imzaları kullanmak için aşağıdaki kodu kullanarak not defterinize en son MLflow Python istemcisini yükleyin:

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

Aşağıdaki kodda otomatik olarak çıkarıla bir imza örneği gösterilmektedir.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

with mlflow.start_run():
    # Train a sklearn model on the iris dataset
    X, y = datasets.load_iris(return_X_y=True, as_frame=True)
    clf = RandomForestClassifier(max_depth=7)
    clf.fit(X, y)
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_model",
    )

Kullanıcı arabirimini kullanarak model kaydetme

Şu adımları izleyin:

  1. Deneme çalıştırma sayfasında, kullanıcı arabiriminin sağ üst köşesindeki Modeli kaydet'e tıklayın.

  2. İletişim kutusunda Unity Kataloğu'nu seçin ve açılan listeden bir hedef model seçin.

    Açılan menüyle model sürümünü kaydet iletişim kutusu

  3. Kaydet’e tıklayın.

    Düğmeyle model sürümünü kaydet iletişim kutusu

Modeli kaydetmek zaman alabilir. İlerleme durumunu izlemek için Unity Kataloğu'nda hedef modele gidin ve düzenli aralıklarla yenileyin.

Diğer adları kullanarak modelleri dağıtma

Model diğer adları, kayıtlı bir modelin belirli bir sürümüne değiştirilebilir, adlandırılmış bir başvuru atamanıza olanak sağlar. Model sürümünün dağıtım durumunu belirtmek için diğer adları kullanabilirsiniz. Örneğin, şu anda üretimde olan model sürümüne bir "Şampiyon" diğer adı ayırabilir ve bu diğer adı üretim modelini kullanan iş yüklerinde hedefleyebilirsiniz. Ardından"Şampiyon" diğer adını farklı bir model sürümüne yeniden atayarak üretim modelini güncelleştirebilirsiniz.

Modellerde diğer adları ayarlama ve silme

Gerekli izinler: Kayıtlı modelin sahibi, ayrıca USE SCHEMA USE CATALOG modeli içeren şema ve katalogdaki ayrıcalıklar.

Katalog Gezgini'ni kullanarak Unity Kataloğu'nda modellerin diğer adlarını ayarlayabilir, güncelleştirebilir ve kaldırabilirsiniz. Model ayrıntıları sayfasında kayıtlı bir modeldeki diğer adları yönetebilir ve model sürümü ayrıntıları sayfasında belirli bir model sürümü için diğer adları yapılandırabilirsiniz.

MLflow İstemci API'sini kullanarak diğer adları ayarlamak, güncelleştirmek ve silmek için aşağıdaki örneklere bakın:

from mlflow import MlflowClient
client = MlflowClient()

# create "Champion" alias for version 1 of model "prod.ml_team.iris_model"
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1)

# reassign the "Champion" alias to version 2
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2)

# get a model version by alias
client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")

# delete the alias
client.delete_registered_model_alias("prod.ml_team.iris_model", "Champion")

Diğer ad istemci API'leri hakkında daha fazla bilgi için MLflow API belgelerine bakın.

Çıkarım iş yükleri için diğer adlara göre model sürümünü yükleme

Gerekli izinler: EXECUTE Kayıtlı modelde ayrıcalık, ayrıca USE SCHEMA USE CATALOG modeli içeren şema ve katalogdaki ayrıcalıklar.

Toplu çıkarım iş yükleri diğer adlara göre model sürümüne başvurabilir. Aşağıdaki kod parçacığı toplu çıkarım için "Şampiyon" modeli sürümünü yükler ve uygular. "Şampiyon" sürümü yeni bir model sürümüne başvuracak şekilde güncelleştirilirse, toplu çıkarım iş yükü bunu bir sonraki yürütmesinde otomatik olarak alır. Bu, model dağıtımlarını toplu çıkarım iş yüklerinizden ayırmanıza olanak tanır.

import mlflow.pyfunc
model_version_uri = "models:/prod.ml_team.iris_model@Champion"
champion_version = mlflow.pyfunc.load_model(model_version_uri)
champion_version.predict(test_x)

Uç noktalara hizmet veren model, diğer adlara göre model sürümüne de başvurabilir. Diğer adlara göre model sürümü almak için dağıtım iş akışları yazabilir ve REST API'ye hizmet veren modeli kullanarak uç noktaya hizmet veren bir modeli güncelleştirebilirsiniz. Örneğin:

import mlflow
import requests
client = mlflow.tracking.MlflowClient()
champion_version = client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# Invoke the model serving REST API to update endpoint to serve the current "Champion" version
model_name = champion_version.name
model_version = champion_version.version
requests.request(...)

Çıkarım iş yükleri için sürüm numarasına göre model sürümünü yükleme

Model sürümlerini sürüm numarasına göre de yükleyebilirsiniz:

import mlflow.pyfunc
# Load version 1 of the model "prod.ml_team.iris_model"
model_version_uri = "models:/prod.ml_team.iris_model/1"
first_version = mlflow.pyfunc.load_model(model_version_uri)
first_version.predict(test_x)

Çalışma alanları arasında modelleri paylaşma

Modelleri aynı bölgedeki kullanıcılarla paylaşma

Uygun ayrıcalıklara sahip olduğunuz sürece, Unity Kataloğu'ndaki modellere modeli içeren meta veri deposuna bağlı herhangi bir çalışma alanından erişebilirsiniz. Örneğin, yeni geliştirilen modelleri üretim temeli prod ile karşılaştırmayı kolaylaştırmak için bir geliştirme çalışma alanında katalogdan modellere erişebilirsiniz.

Oluşturduğunuz kayıtlı bir modelde diğer kullanıcılarla işbirliği yapmak (yazma ayrıcalıklarını paylaşmak) için modelin sahipliğini kendinizi ve işbirliği yapmak istediğiniz kullanıcıları içeren bir gruba vermelisiniz. Ortak çalışanların ayrıca modeli içeren katalog ve şemada ve USE SCHEMA ayrıcalıklarına sahip USE CATALOG olması gerekir. Ayrıntılar için bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler .

Modelleri başka bir bölgedeki veya hesaptaki kullanıcılarla paylaşma

Modelleri diğer bölgelerdeki veya hesaplardaki kullanıcılarla paylaşmak için Delta Sharing Databricks-To-Databricks paylaşım akışını kullanın. Bkz . Paylaşıma model ekleme (sağlayıcılar için) ve Databricks-Databricks modelinde (alıcılar için) erişim alma. Alıcı olarak, bir paylaşımdan katalog oluşturduktan sonra, bu paylaşılan katalogdaki modellere Unity Kataloğu'ndaki diğer modellerle aynı şekilde erişmiş olursunuz.

Unity Kataloğu'nda modelin veri kökenini izleme

Not

Unity Kataloğu'nda tablo modelleme kökeni desteği MLflow 2.11.0 ve üzerinde sağlanır.

Unity Kataloğu'ndaki bir tabloda model eğittiğinizde, modelin kökenini eğitildiği ve değerlendirildiği yukarı akış veri kümelerine izleyebilirsiniz. Bunu yapmak için mlflow.log_input kullanın. Bu, giriş tablosu bilgilerini modeli oluşturan MLflow çalıştırmasıyla kaydeder. Veri kökeni, özellik deposu API'leri kullanılarak günlüğe kaydedilen modeller için de otomatik olarak yakalanır. Bkz. Özellik idaresi ve köken.

Modeli Unity Kataloğu'na kaydettiğinizde, köken bilgileri otomatik olarak kaydedilir ve Katalog Gezgini'ndeki model sürümü kullanıcı arabiriminin Köken sekmesinde görünür.

Aşağıdaki kodda bir örneği gösterilmiştir.

import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor

# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
  columns = {
    'sepal length (cm)':'sepal_length',
    'sepal width (cm)':'sepal_width',
    'petal length (cm)':'petal_length',
    'petal width (cm)':'petal_width'},
  inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")

# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
    clf = RandomForestRegressor(n_estimators=100)
    clf.fit(X, y)
    mlflow.log_input(dataset, "training")
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_classifier",
    )

Modellere erişimi denetleme

Unity Kataloğu'nda, kayıtlı modeller güvenli hale getirilebilir nesnenin FUNCTION bir alt ttype'tır. Unity Kataloğu'nda kayıtlı bir modele erişim vermek için kullanın GRANT ON FUNCTION. Ayrıntılar için bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler. Modelleri kataloglar ve şemalar arasında düzenlemeye yönelik en iyi yöntemler için bkz . Verilerinizi düzenleme.

Grants REST API'sini kullanarak model izinlerini program aracılığıyla yapılandırabilirsiniz. Model izinlerini yapılandırırken REST API isteklerinde olarak "FUNCTION" ayarlayınsecurable_type. Örneğin, kayıtlı model izinlerini güncelleştirmek için kullanın PATCH /api/2.1/unity-catalog/permissions/function/{full_name} .

Kullanıcı arabirimindeki modelleri görüntüleme

Gerekli izinler: Kayıtlı modeli ve kullanıcı arabirimindeki model sürümlerini görüntülemek için kayıtlı modelde USE SCHEMA ayrıca modeli içeren şema ve USE CATALOG katalogda ayrıca ayrıcalıklara sahip olmanız gerekir EXECUTE

Katalog Gezgini'ni kullanarak Unity Kataloğu'nda kayıtlı modelleri ve model sürümlerini görüntüleyebilir ve yönetebilirsiniz.

Modeli yeniden adlandırma

Gerekli izinler: Kayıtlı modelin sahibi, CREATE_MODEL kayıtlı modeli içeren şemada ayrıcalık ve USE SCHEMA USE CATALOG modeli içeren şema ve katalogdaki ayrıcalıklar.

Kayıtlı bir modeli yeniden adlandırmak için, MLflow İstemci API’si rename_registered_model() yöntemini kullanın:

client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")

Model sürümünü kopyalama

Unity Kataloğu'nda bir model sürümünü bir modelden diğerine kopyalayabilirsiniz.

Kullanıcı arabirimini kullanarak model sürümünü kopyalama

Şu adımları izleyin:

  1. Model sürümü sayfasında, kullanıcı arabiriminin sağ üst köşesindeki Bu sürümü kopyala'ya tıklayın.

  2. Açılan listeden bir hedef model seçin ve Kopyala'ya tıklayın.

    Model sürümünü kopyala iletişim kutusu

Modelin kopyalanması zaman alabilir. İlerleme durumunu izlemek için Unity Kataloğu'nda hedef modele gidin ve düzenli aralıklarla yenileyin.

API kullanarak model sürümünü kopyalama

Model sürümünü kopyalamak için MLflow'un copy_model_version() Python API'sini kullanın:

client = MlflowClient()
client.copy_model_version(
  "models:/<source-model-name>/<source-model-version>",
  "<destination-model-name>",
)

Modeli veya model sürümünü silme

Gerekli izinler: Kayıtlı modelin sahibi, ayrıca USE SCHEMA USE CATALOG modeli içeren şema ve katalogdaki ayrıcalıklar.

Katalog Gezgini kullanıcı arabirimini veya API'yi kullanarak kayıtlı bir modeli veya kayıtlı bir model içindeki model sürümünü silebilirsiniz.

Uyarı

Bu eylemi geri alamazsınız. Bir modeli sildiğinizde Unity Kataloğu tarafından depolanan tüm model yapıtları ve kayıtlı modelle ilişkili tüm meta veriler silinir.

Kullanıcı arabirimini kullanarak model sürümünü veya modeli silme

Unity Kataloğu'nda bir modeli veya model sürümünü silmek için aşağıdaki adımları izleyin.

  1. Model sayfasında veya model sürümü sayfasında sağ üst köşedeki kebap menüsüne Kebap menüsü tıklayın.

    Model sayfasından:

    silme ile model sayfası kebap menüsü

    Model sürümü sayfasından:

    silme ile model sürümü sayfası kebap menüsü

  2. Sil'i seçin.

  3. Bir onay iletişim kutusu görüntülenir. Onaylamak için Sil'e tıklayın.

API’yi kullanarak model sürümünü veya modeli silme

Model sürümünü silmek için MLflow İstemci API’si delete_model_version() yöntemini kullanın:

# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
  client.delete_model_version(name="<model-name>", version=version)

Modeli silmek için MLflow İstemci API’si delete_registered_model() yöntemini kullanın:

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

Modellerde etiket kullanma

Etiketler , kayıtlı modeller ve model sürümleriyle ilişkilendirdiğiniz anahtar-değer çiftleridir ve bunları işleve veya duruma göre etiketlemenize ve kategorilere ayırmanıza olanak tanır. Örneğin, soru yanıtlama görevlerine yönelik kayıtlı modellere anahtar "task" ve değer "question-answering" içeren bir etiket (kullanıcı arabiriminde olarak task:question-answeringgörüntülenir) uygulayabilirsiniz. Model sürümü düzeyinde, ile dağıtım öncesi doğrulamadan geçen ve ile validation_status:pending validation_status:approveddağıtım için temizlenen sürümleri etiketleyebilirsiniz.

gerekli izinler: Kayıtlı modelin sahibi veya bu APPLY_TAG model USE SCHEMA üzerinde ayrıcalığı ve USE CATALOG modeli içeren şema ve katalogdaki ayrıcalıkları.

Kullanıcı arabirimini kullanarak etiketleri ayarlama ve silme hakkında bilgi için bkz . Katalog Gezgini'ni kullanarak etiket ekleme ve güncelleştirme.

MLflow İstemci API'sini kullanarak etiketleri ayarlamak ve silmek için aşağıdaki örneklere bakın:

from mlflow import MlflowClient
client = MlflowClient()

# Set registered model tag
client.set_registered_model_tag("prod.ml_team.iris_model", "task", "classification")

# Delete registered model tag
client.delete_registered_model_tag("prod.ml_team.iris_model", "task")

# Set model version tag
client.set_model_version_tag("prod.ml_team.iris_model", "1", "validation_status", "approved")

# Delete model version tag
client.delete_model_version_tag("prod.ml_team.iris_model", "1", "validation_status")

Hem kayıtlı model hem de model sürümü etiketlerinin platform genelindeki kısıtlamaları karşılaması gerekir.

İstemci API'lerini etiketleme hakkında daha fazla bilgi için MLflow API belgelerine bakın.

Model veya model sürümüne açıklama (açıklamalar) ekleme

Gerekli izinler: Kayıtlı modelin sahibi, ayrıca USE SCHEMA USE CATALOG modeli içeren şema ve katalogdaki ayrıcalıklar.

Unity Kataloğu'nda herhangi bir model veya model sürümü için metin açıklaması ekleyebilirsiniz. Örneğin, soruna genel bir bakış veya kullanılan metodoloji ve algoritma hakkında bilgi sağlayabilirsiniz.

Modeller için yapay zeka tarafından oluşturulan açıklamaları kullanma seçeneğiniz de vardır. Bkz. Unity Kataloğu nesnelerine yapay zeka tarafından oluşturulan açıklamalar ekleme.

Kullanıcı arabirimini kullanarak modele açıklama ekleme

Modele açıklama eklemek için yapay zeka tarafından oluşturulan açıklamaları kullanabilir veya kendi açıklamalarınızı girebilirsiniz. Yapay zeka tarafından oluşturulan açıklamaları gerektiği gibi düzenleyebilirsiniz.

  • Otomatik olarak oluşturulan açıklamaları eklemek için yapay zeka oluştur düğmesine tıklayın.
  • Kendi açıklamalarınızı eklemek için Ekle'ye tıklayın. İletişim kutusuna açıklamalarınızı girin ve Kaydet'e tıklayın.

uc modeli açıklama düğmeleri

Kullanıcı arabirimini kullanarak model sürümüne açıklama ekleme

Unity Kataloğu'nda model sürümüne açıklama eklemek için şu adımları izleyin:

  1. Model sürümü sayfasında, Açıklama'nın altındaki kalem simgesine tıklayın.

    model sürümüne açıklama eklemek için kalem simgesi

  2. İletişim kutusuna açıklamalarınızı girin ve Kaydet'e tıklayın.

API kullanarak model veya model sürümüne açıklama ekleme

Kayıtlı model açıklamasını güncelleştirmek için MLflow İstemci API'sini update_registered_model() kullanın:

client = MlflowClient()
client.update_registered_model(
  name="<model-name>",
  description="<description>"
)

Model sürümü açıklamasını güncelleştirmek için MLflow İstemci API’si update_model_version() yöntemini kullanın:

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

Modelleri listeleme ve arama

Unity Kataloğu'nda kayıtlı modellerin listesini almak için MLflow'un search_registered_models() Python API'sini kullanın:

client=MlflowClient()
client.search_registered_models()

Belirli bir model adını aramak ve modelin sürümleri hakkında bilgi almak için kullanın search_model_versions():

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

Not

Unity Kataloğu'ndaki modeller için tüm arama API'leri alanları ve işleçleri desteklenmez. Ayrıntılar için bkz. Sınırlamalar.

Model dosyalarını indirme (gelişmiş kullanım örneği)

Çoğu durumda, modelleri yüklemek için veya mlflow.<flavor>.load_model gibi mlflow.pyfunc.load_model MLflow API'lerini kullanmanız gerekir (örneğin, mlflow.transformers.load_model HuggingFace modelleri için).

Bazı durumlarda, model davranışında veya model yükleme sorunlarında hata ayıklamak için model dosyalarını indirmeniz gerekebilir. model dosyalarını kullanarak mlflow.artifacts.download_artifactsaşağıdaki gibi indirebilirsiniz:

import mlflow
mlflow.set_registry_uri("databricks-uc")
model_uri = f"models:/{model_name}/{version}" # reference model by version or alias
destination_path = "/local_disk0/model"
mlflow.artifacts.download_artifacts(artifact_uri=model_uri, dst_path=destination_path)

Modeli ortamlar arasında yükseltme

Databricks, ML işlem hatlarını kod olarak dağıtmanızı önerir. Bu, tüm üretim modelleri bir üretim ortamındaki otomatik eğitim iş akışları aracılığıyla üretilebildiği için modelleri ortamlar arasında yükseltme gereksinimini ortadan kaldırır.

Ancak bazı durumlarda, modelleri ortamlar arasında yeniden eğitmek çok pahalı olabilir. Bunun yerine, model sürümlerini ortamlar arasında yükseltmek için Unity Kataloğu'ndaki kayıtlı modeller arasında kopyalayabilirsiniz.

Aşağıdaki örnek kodu yürütmek için aşağıdaki ayrıcalıklara ihtiyacınız vardır:

  • USE CATALOGstaging ve prod kataloglarında.
  • USE SCHEMAstaging.ml_team ve prod.ml_team şemalarında.
  • EXECUTE üzerinde staging.ml_team.fraud_detection.

Ayrıca, kayıtlı modelin prod.ml_team.fraud_detectionsahibi olmanız gerekir.

Aşağıdaki kod parçacığı, MLflow 2.8.0 ve üzeri sürümlerde kullanılabilen MLflow İstemci API'sini kullanır copy_model_version .

import mlflow
mlflow.set_registry_uri("databricks-uc")

client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)

Model sürümü üretim ortamında olduktan sonra, gerekli dağıtım öncesi doğrulamayı gerçekleştirebilirsiniz. Ardından, diğer adları kullanarak dağıtım için model sürümünü işaretleyebilirsiniz.

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

Yukarıdaki örnekte, yalnızca kayıtlı modelden staging.ml_team.fraud_detection okuyabilen ve kayıtlı modele prod.ml_team.fraud_detection yazabilen kullanıcılar hazırlama modellerini üretim ortamına yükseltebilir. Aynı kullanıcılar, üretim ortamında dağıtılan model sürümlerini yönetmek için diğer adları da kullanabilir. Model yükseltmeyi ve dağıtımı yönetmek için başka kurallar veya ilkeler yapılandırmanız gerekmez.

Bu akışı özelleştirerek model sürümünü kurulumunuzla eşleşen , qave prodgibi devbirden çok ortamda yükseltebilirsiniz. Erişim denetimi her ortamda yapılandırıldığı gibi uygulanır.

Örnek

Bu örnekte, bir makine öğrenmesi uygulaması oluşturmak için Unity Kataloğu'ndaki Modellerin nasıl kullanılacağı gösterilmektedir.

Unity Kataloğu'ndaki modeller örneği

İş akışlarını ve modelleri Unity Kataloğu'na geçirme

Databricks, geliştirilmiş idare, çalışma alanları ve ortamlar arasında kolay paylaşım ve daha esnek MLOps iş akışları için Unity Kataloğu'ndaki Modellerin kullanılmasını önerir. Tablo, Çalışma Alanı Modeli Kayıt Defteri ve Unity Kataloğu'nun özelliklerini karşılaştırır.

Özellik Çalışma Alanı Modeli Kayıt Defteri (eski) Unity Kataloğu'ndaki modeller (önerilen)
Adlandırılmış diğer adlara göre başvuru modeli sürümleri Model Kayıt Defteri Aşamaları: Model sürümlerini bu aşamaya göre başvurmak için dört sabit aşamadan birine taşıyın. Aşamalar yeniden adlandırılamıyor veya eklenemiyor. Model Kayıt Defteri Diğer Adları: Her kayıtlı model için model sürümlerine en fazla 10 özel ve yeniden atanabilir adlandırılmış başvuru oluşturun.
Modeller için erişim denetimli ortamlar oluşturma Model Kayıt Defteri Aşamaları: Dört sabit aşamadan (Staging ve Production) yalnızca ikisi için erişim denetimleriyle, model sürümlerinin ortamını belirtmek için kayıtlı bir model içindeki aşamaları kullanın. Kayıtlı Modeller: İDAREyi ifade etmek için Unity Kataloğu'nun üç düzeyli ad alanlarını ve izinlerini kullanarak MLOps iş akışınızdaki her ortam için kayıtlı bir model oluşturun.
Modelleri ortamlar arasında yükseltme (modeli dağıtma) transition_model_version_stage() MLflow İstemciSI API'sini kullanarak model sürümünü farklı bir aşamaya taşıyın ve önceki aşamaya başvuran iş akışlarını bozabilir. copy_model_version() MLflow İstemci API'sini kullanarak bir model sürümünü kayıtlı bir modelden diğerine kopyalayın.
Çalışma alanları arasında modellere erişme ve modelleri paylaşma Modelleri çalışma alanları arasında el ile dışarı ve içeri aktarın ya da kişisel erişim belirteçlerini ve çalışma alanı gizli kapsamlarını kullanarak uzak model kayıt defterlerine bağlantıları yapılandırın. Aynı hesaptaki çalışma alanları genelindeki modellere kullanıma yönelik erişim. Yapılandırma gerekmez.
İzinleri yapılandırma çalışma alanı düzeyinde izinleri ayarlayın. çalışma alanları arasında tutarlı idare uygulayan hesap düzeyinde izinleri ayarlayın.
Databricks markplace içindeki modellere erişme Kullanılamaz. Databricks marketi modellerini Unity Kataloğu meta veri deponuza yükleyin ve çalışma alanları arasında bunlara erişin.

Aşağıda bağlantılı makalelerde, iş akışlarının (model eğitimi ve toplu çıkarım işleri) ve modellerin Çalışma Alanı Modeli Kayıt Defteri'nden Unity Kataloğu'na nasıl geçirileceğini açıklanmaktadır.

Sınırlamalar

  • Unity Kataloğu'ndaki modeller için aşamalar desteklenmez. Databricks, bir modelin içinde olduğu ortamı ifade etmek için Unity Kataloğu'ndaki üç düzeyli ad alanının kullanılmasını ve dağıtım için modelleri yükseltmek için diğer adların kullanılmasını önerir. Ayrıntılar için bkz . Modeli ortamlar arasında yükseltme.
  • Web kancaları Unity Kataloğu'ndaki modeller için desteklenmez. Yükseltme kılavuzunda önerilen alternatiflere bakın.
  • Unity Kataloğu'ndaki modeller için bazı arama API'leri alanları ve işleçleri desteklenmez. Bu, desteklenen filtreler kullanılarak arama API'leri çağrılarak ve sonuçlar taranarak azaltılabilir. Aşağıda bazı örnekler verilmiştir:
    • order_by parametresi search_model_versions veya search_registered_models istemci API'lerinde desteklenmez.
    • Etiket tabanlı filtreler (tags.mykey = 'myvalue') veya search_registered_modelsiçin search_model_versions desteklenmez.
    • Veya için search_model_versions search_registered_modelstam eşitlik dışındaki işleçler (örneğin, LIKE, ILIKE, !=) desteklenmez.
    • Kayıtlı modelleri ada göre arama (örneğin, MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") desteklenmez. Belirli bir kayıtlı modeli ada göre getirmek için get_registered_model kullanın.
  • Kayıtlı modellerde ve model sürümlerinde e-posta bildirimleri ve açıklama tartışması yazışmaları Unity Kataloğu'nda desteklenmez.
  • Unity Kataloğu'ndaki modeller için etkinlik günlüğü desteklenmez. Unity Kataloğu'ndaki modellerdeki etkinliği izlemek için denetim günlüklerini kullanın.
  • search_registered_models Delta Sharing aracılığıyla paylaşılan modeller için eski sonuçlar döndürebilir. En son sonuçları elde etmek için Databricks CLI veya SDK'yı kullanarak şemadaki modelleri listeleyin.