Share via


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.

Unity Kataloğu'ndaki modellerin temel özellikleri şunlardır:

  • Modelleri ortam, proje veya ekip düzeyinde gruplandırabilmeniz ve yönetebilmeniz için modeller için adlar ve idare ("Veri bilimciler üretim modellerine salt okunur erişim ver").
  • Kronolojik model kökeni (MLflow denemesi ve çalıştırması modeli belirli bir zamanda üretmektedir).
  • Model Sunma.
  • Model sürümü oluşturma.
  • Diğer adlar aracılığıyla model dağıtımı. Örneğin, kataloğunuzda prod bir modelin "Şampiyon" sürümünü işaretleyin.

Çalışma alanınızın varsayılan kataloğu Unity Kataloğu'nda bir katalog olarak yapılandırılmışsa veya gibi mlflow.<model-type>.log_model(..., registered_model_name)mlflow.register_model(model_uri, name) MLflow API'leri kullanılarak kaydedilen modeller varsayılan olarak Unity Kataloğu'na kaydedilir.

Bu makale hem Unity Kataloğu'ndaki Modeller kullanıcı arabirimi hem de API için yönergeler içerir.

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 klasik çalışma alanı modeli kayıt defterini kullanmaya devam edebilirsiniz.

  2. Ç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.

  3. Unity Kataloğu'na erişimi olan bir kümede komut çalıştırma erişiminiz olmalıdır.

  4. Yeni kayıtlı modeller oluşturmak için şema ve onun kapsayan CREATE_MODEL kataloğundaki ve USE CATALOG ayrıcalıklarına ek olarak USE SCHEMA şemada ayrıcalığınız olmalıdır. CREATE_MODEL , aşağıda gösterildiği gibi Katalog Gezgini kullanıcı arabirimini veya SQL GRANT komutunu kullanarak verebileceğiniz yeni bir şema düzeyi ayrıcalığıdır.

    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

Eğitim iş yüklerini Unity Kataloğu'na yükseltme

Bu bölüm, mevcut eğitim iş yüklerini Unity Kataloğu'na yükseltme 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

Varsayılan olarak, MLflow Python istemcisi Databricks çalışma alanı modeli kayıt defterinde modeller oluşturur. Unity Kataloğu'ndaki modellere yükseltmek için MLflow istemcisini yapılandırın:

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

Not

Ç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 varsayılan katalogda otomatik olarak oluşturulur ve yapılandırılması gerekmez. Diğer Databricks Runtime sürümlerinde davranışta bir değişiklik yoktur. Hem varsayılan kataloğun Ocak 2024'ten önce Unity Kataloğu'nda bir katalog olarak yapılandırıldığı hem de Ocak 2024'ten önce çalışma alanı modeli kayıt defterinin kullanıldığı az sayıda çalışma alanı bu davranıştan muaftır.

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

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

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

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 deposu kökenini görüntüleme.

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

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.

Modellere erişimi denetleme

Unity Kataloğu'nda kayıtlı modellere erişimi denetleme hakkında bilgi 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 programlı olarak 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} .

Diğer adlar ve etiketlerle modelleri dağıtma ve düzenleme

Model diğer adları ve etiketleri Unity Kataloğu'nda modelleri düzenlemenize ve yönetmenize yardımcı olur.

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.

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:pendingvalidation_status:approveddağıtım için temizlenen sürümleri etiketleyebilirsiniz.

Diğer adları ve etiketleri kullanma hakkında bilgi için aşağıdaki bölümlere bakın.

Modellerde diğer adları ayarlama ve silme

Gerekli izinler: Kayıtlı modelin sahibi, ayrıca USE SCHEMAUSE 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")

Modellerde etiketleri ayarlama ve silme

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'nde etiketleri yönetme.

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.

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

Çıkarım için modelleri yükleme

Çıkarım iş yüklerinde diğer adlara göre model sürümlerini kullanma

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

Diğer adla model sürümüne başvuran toplu çıkarım iş yükleri yazabilirsiniz. Örneğin, 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)

Ayrıca, diğer adla model sürümü almak için dağıtım iş akışları yazabilir ve REST API'ye hizmet veren modeli kullanarak bu sürüme hizmet veren bir modeli güncelleştirebilirsiniz:

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üklerinde sürüm numarasına göre model sürümlerini kullanma

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.

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ırcopy_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.

Modele veya model sürümüne not ekleme

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

Model veya model sürümü hakkında bilgi sağlamak için not ekleyebilirsiniz. Örneğin, soruna ilişkin bir genel bakış veya kullanılan metodoloji ve algoritmayla ilgili bilgi eklemek isteyebilirsiniz.

Kullanıcı arabirimini kullanarak modele veya model sürümüne not ekleme

Bkz . Markdown açıklamalarını kullanarak Katalog Gezgini'nde belge verileri.

API'yi 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>"
)

Modeli yeniden adlandırma

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

Kayıtlı bir modeli yeniden adlandırmak için Databricks SDK'sını (RegisteredModelsAPI.update) veya Databricks REST API'sini (Kayıtlı modeli güncelleştirme) kullanmanız gerekir.

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

Gerekli izinler: Kayıtlı modelin sahibi, ayrıca USE SCHEMAUSE 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.

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

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.

Model sürümünü 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)

Model silme

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

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

Modelleri listeleme ve arama

MLflow'un search_registered_models() Python API'siyle Unity Kataloğu'nda kayıtlı modelleri listeleyebilirsiniz:

client=MlflowClient()
client.search_registered_models()

Ayrıca yöntemini kullanarak search_model_versions() belirli bir model adını arayabilir ve sürüm ayrıntılarını listeleyebilirsiniz:

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)

Ö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ıla -mıyor. 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_versionssearch_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. Ancak denetim günlüklerini kullanarak Unity Kataloğu'ndaki modellerdeki etkinlikleri izleyebilirsiniz.
  • 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.