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.
Önemli
- Bu sayfada, 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ölgelerinde 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ğuMLflow 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. Databricks'te MLflow.
MLflow 3 , Unity Kataloğu'nda MLflow Model Kayıt Defteri'nde önemli geliştirmeler yaparak modellerinizin parametreler ve ölçümler gibi verileri doğrudan yakalamasına ve bunları tüm çalışma alanları ve denemelerde kullanılabilir hale getirmesine olanak tanır. MLflow 3'teki varsayılan kayıt defteri URI'si, databricks-ucUnity Kataloğu'ndaki MLflow Model Kayıt Defteri'nin kullanılacağı anlamına gelir. Diğer ayrıntılar için bkz. Modeller için MLflow 3 ile çalışmaya başlama ve MLflow 3 ile Model Kayıt Defteri geliştirmeleri.
Gereksinimler
Unity Kataloğu çalışma alanınızda etkinleştirilmelidir. Bir Unity Kataloğu Meta Veri Deposu oluşturmak, bunu bir çalışma alanında etkinleştirmek ve bir katalog oluşturmak için Unity Kataloğu'nu kullanmaya başlamayla ilgili ve'e bakın. Unity Kataloğu etkin değilse, çalışma alanı modeli kayıt defterikullanın.
Unity Kataloğu'na erişimi olan bir işlem kaynağı kullanmanız gerekir. ML iş yükleri için bu, işlem erişim modunun Ayrılmış (eski adıyla tek kullanıcı) olması gerektiği anlamına gelir. Daha fazla bilgi için bkz . Erişim modları. Databricks Runtime 15.4 LTS ML ve üzeri ile ayrılmışgrup erişim modunu da kullanabilirsiniz.
Yeni kayıtlı modeller oluşturmak için aşağıdaki ayrıcalıklara sahip olmanız gerekir:
- Şema ve onu içeren katalog üzerindeki
USE SCHEMAveUSE CATALOGayrıcalıkları. -
CREATE MODELveyaCREATE FUNCTIONşema üzerinde ayrıcalık. Ayrıcalıklar vermek için Katalog Gezgini kullanıcı arabirimini veya SQL GRANT komutunu kullanın:
GRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal>- Şema ve onu içeren katalog üzerindeki
Bir modeli kaydetmeye çalışırken yetkilendirme sorunlarıyla karşılaşırsanız ortam değişkenini
MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UColarakTrueayarlamayı deneyin. Not defterinize aşağıdaki kodu içeren bir hücre ekleyin:import os os.environ['MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC'] = 'True'Bu yaklaşım, Delta Sharing ile paylaşılan ve varsayılan depolamayı kullanan modeller için kullanılamaz.
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
Unity Kataloğu'ndaki modeller için destek, Databricks Runtime 13.2 ML ve üzeri sürümlere (Azure Çin'de Databricks Runtime 15.0 ML ve üzeri sürümlere) dahildir.
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) veya MLflow 3'ü kullanarak bir küme çalıştırıyorsanız, modeller otomatik olarak içinde oluşturulur ve varsayılan katalogdan yüklenir.
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 uyumlu modelleri eğitip kaydetmeyi
gerekli İzinler: Yeni bir kayıtlı model oluşturmak için, kapsayan şemada CREATE MODEL ve USE SCHEMA ayrıcalıklarına ve kapsayan katalogda USE CATALOG 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 katalogda USE SCHEMA ve USE CATALOG ayrıcalıklarına sahip olmanız gerekir.
Bir modeli kaydetmeye çalışırken yetkilendirme sorunlarıyla karşılaşırsanız ortam değişkenini MLFLOW_USE_DATABRICKS_SDK_MODEL_ARTIFACTS_REPO_FOR_UC olarak Trueayarlamayı deneyin. Bu yaklaşım, Delta Sharing ile paylaşılan ve varsayılan depolamayı kullanan modeller için kullanılamaz. Bkz . Gereksinimler.
UC'deki yeni 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_modelbir 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.
İmzaları olmayan model sürümlerinin belirli sınırlamaları vardır. Bu sınırlamaların listesi ve var olan bir model sürümüne imza eklemek veya güncelleştirmek için bkz. Var olan model sürümü için imza ekleme veya güncelleştirme.
Bu bölümdeki örnekler, ml_team kataloğunun altındaki prod şemasında modeller oluşturur ve bunlara erişer.
Bu bölümdeki model eğitim örnekleri yeni bir model sürümü oluşturur ve prod kataloğuna 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 kapsayıcı kataloğu, şeması ve kayıtlı modeli, ortamını (prod) ve ilişkili yönetişim kurallarını yansıtmakla birlikte (ö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.
MLflow 3
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,
# and the model version will contain all parameters and metrics
# logged with the corresponding MLflow Logged Model.
logged_model = mlflow.last_logged_model()
mlflow.register_model(logged_model.model_uri, "prod.ml_team.iris_model")
MLflow 2.x
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 3
mlflow.register_model(
"models:/<model_id>", "prod.ml_team.iris_model"
)
MLflow 2.x
mlflow.register_model(
"runs:/<run_id>/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. Unity Kataloğu'na modeli kaydeden registered_model_name çağrısında log_model() komutunun kullanılması, modelin tam üç düzeyli adını <catalog>.<schema>.<model> biçiminde sağlamanızı gerektirir.
MLflow 3
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,
name="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_model",
)
MLflow 2.x
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,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_model",
)
Kullanıcı arabirimini kullanarak model kaydetme
Şu adımları izleyin:
Deneme çalıştırma sayfasında, kullanıcı arabiriminin sağ üst köşesindeki Modeli kaydet'e tıklayın.
İletişim kutusunda Unity Catalogseçin ve açılan listeden bir hedef model seçin.
Kaydet’e tıklayın.
Modeli kaydetmek zaman alabilir. İlerleme durumunu izlemek için Unity Kataloğu'nda hedef modele gidin ve düzenli aralıklarla yenileyin.
Mevcut model sürümü için imza ekleme veya güncelleştirme
İmzası olmayan model sürümleri aşağıdaki sınırlamalara sahiptir:
- bir imza sağlanırsa, model girişleri çıkarım sırasında denetlenirse ve girişler imzayla eşleşmiyorsa bir hata bildirilir. İmza olmadan otomatik giriş zorlaması yoktur ve modellerin beklenmeyen girişleri işleyebilmesi gerekir.
- Yapay zeka işlevleriyle model sürümü kullanmak için işlev çağrısında bir şema sağlanması gerekir.
- Model Sunma ile model sürümü kullanmak giriş örneklerini otomatik olarak oluşturmaz.
Model sürümü imzası eklemek veya güncelleştirmek için MLflow belgelerine bakın.
Model diğer adlarını kullanın
Model diğer adları, kayıtlı bir modelin belirli bir sürümüne değiştirilebilir, adlandırılmış bir referans atamanıza izin verir. 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ı belirleyip silme
Gerekli İzinler: Kayıtlı modelin sahibi ve modeli içeren şema ile katalogda USE SCHEMA ve USE CATALOG ayrıcalıkları.
Katalog Gezgini'ni kullanarak Unity Kataloğu'nda modellerin diğer adlarını ayarlayabilir, güncelleştirebilir ve kaldırabilirsiniz. Bkz. Kullanıcı arabiriminde modelleri görüntüleme ve yönetme.
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")
Takma 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 İzinler: kayıtlı model üzerinde EXECUTE ayrıcalığı, ayrıca modeli içeren şema ve katalogda USE SCHEMA ve USE CATALOG 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)
Model sunum uç noktaları, bir model sürümüne diğer ad ile de başvurabilir. Rest APIsunan
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 ile karşılaştırmayı kolaylaştırmak için geliştirme çalışma alanında prod kataloğundan 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 ayrıca modeli içeren katalog ve şemada USE CATALOG ve USE SCHEMA ayrıcalıklarına sahip olmalıdır. Ayrıntılar için bkz Unity Katalogu ayrıcalıkları referansı.
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 modeller ekleme (sağlayıcılar için) ve Databricks'ten Databricks'e modelinde erişim alma (alıcılar için). 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ında 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ü sayfasındaki Köken sekmesinde görünür. Bkz. Model sürümü bilgilerini ve model kökenini görüntüleme.
Aşağıdaki kodda bir örneği gösterilmiştir.
MLflow 3
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,
name="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_classifier",
)
MLflow 2.x
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,
# Use three-level name to register model in Unity Catalog.
registered_model_name="prod.ml_team.iris_classifier",
)
Modellere erişimi denetleme
Unity Kataloğu'nda kayıtlı modeller, FUNCTION güvenlik nesnesinin bir alt türüdür. Unity Kataloğu'nda kayıtlı bir modele erişim vermek için GRANT ON FUNCTIONkullanırsınız. Model sahipliğini ve izinlerini ayarlamak için Katalog Gezgini'ni de kullanabilirsiniz. Ayrıntılar için bkz. Unity Kataloğu'nda ayrıcalıkları yönetme ve Unity Kataloğu nesne modeli.
Grants REST API'sini kullanarak model izinlerini program aracılığıyla yapılandırabilirsiniz. Model izinlerini yapılandırırken, REST API isteklerinde securable_type"FUNCTION" olarak ayarlayın. Örneğin, kayıtlı model izinlerini güncelleştirmek için PATCH /api/2.1/unity-catalog/permissions/function/{full_name} kullanın.
Kullanıcı arabiriminde modelleri görüntüleme ve yönetme
İzinleri gerekli: Kayıtlı modeli ve model sürümlerini kullanıcı arabiriminde görüntülemek için kayıtlı modelde EXECUTE ayrıca modeli içeren şema ve katalogda USE SCHEMA ve USE CATALOG ayrıcalıklarına sahip olmanız gerekir
Katalog Gezgini'ni kullanarak Unity Kataloğu'nda kayıtlı modelleri ve model sürümlerini görüntüleyebilir ve yönetebilirsiniz.
Model bilgilerini görüntüleme
Katalog Gezgini'nde modelleri görüntülemek için:
Kenar çubuğunda katalog.
Sağ üstteki açılan listeden bir işlem kaynağı seçin.
Soldaki Katalog Gezgini ağacında bir katalog açın ve bir şema seçin.
Şemada herhangi bir model varsa, bunlar gösterildiği gibi Modeller'in altındaki ağaçta görünür.
Daha fazla bilgi görmek için bir modele tıklayın. Model ayrıntıları sayfasında, ek bilgiler içeren model sürümlerinin listesi gösterilir.
Model diğer adlarını ayarla
Arabirimi kullanarak model takma adı ayarlamak için:
- Model ayrıntıları sayfasında, takma ad eklemek istediğiniz model sürümünün satırı üzerine gelin. Diğer ad ekle düğmesi görüntülenir.
- Diğer ad ekle'ye tıklayın.
- Bir takma ad girin veya açılır menüden birini seçin. İletişim kutusuna birden çok takma ad ekleyebilirsiniz.
- Diğer adları kaydet'e tıklayın.
Bir takma adı silmek için:
- Model sürüm satırının üzerine gelin ve takma adın yanındaki kalem simgesine tıklayın.
- İletişim kutusunda, kaldırmak istediğiniz diğer adın yanındaki
Xsimgesine tıklayın. - Diğer adları kaydet'e tıklayın.
Model ayrıntıları sayfasında bir takma adı model sürümünden kaldırma.
Model sürümü bilgilerini ve model kökenini görüntüleme
Model sürümü hakkında daha fazla bilgi görüntülemek için model listesinde bu sürümün adına tıklayın. Model sürümü sayfası görüntülenir. Bu sayfa, sürümü oluşturan MLflow kaynak çalıştırmasının bağlantısını içerir. MLflow 3'te, ilgili MLflow Kayıtlı Model ile günlüğe kaydedilen tüm parametreleri ve ölçümleri de görüntüleyebilirsiniz.
MLflow 3
MLflow 2.x
Bu sayfada, modelin kökenini aşağıdaki gibi görüntüleyebilirsiniz:
Köken sekmesini seçin. Sol kenar çubuğunda modelle birlikte kaydedilmiş olan bileşenler gösterilir.
Katalog Gezgini'nde

öğesine tıklayın veköken grafiğini görün. Köken grafiği görüntülenir. Köken grafiğini keşfetme hakkında ayrıntılı bilgi için bkz. kökeni yakalama ve keşfetme.
Köken grafiğini kapatmak için sağ üst köşedeki köken grafiği
kapat düğmesine tıklayın.
Modeli yeniden adlandırma
Gerekli İzinler: Kayıtlı modelin sahibi olarak, kayıtlı modeli içeren şema üzerinde CREATE MODEL ayrıcalığı ve modeli içeren şema ve katalog üzerinde USE SCHEMA ve USE CATALOG ayrıcalıkları.
Kayıtlı bir modeli yeniden adlandırmak için MLflow İstemci API'sinin rename_registered_model() yöntemini kullanın. Burada <full-model-name> modelin tam 3 seviyeli adı, <new-model-name> ise katalog veya şema içermeyen model adıdır.
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
Örneğin, aşağıdaki kod modelin hello_world adını olarak hellodeğiştirir.
client=MlflowClient()
client.rename_registered_model("docs.models.hello_world", "hello")
Model sürümünü kopyalayın
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:
Model sürümü sayfasında, kullanıcı arabiriminin sağ üst köşesindeki Bu sürümü kopyala'ya tıklayın.
Açılan listeden bir hedef model seçin ve Kopyalaöğesine tıklayın.
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 İzinler: Kayıtlı modelin sahibi ve modeli içeren şema ile katalogda USE SCHEMA ve USE CATALOG ayrıcalıkları.
Kullanıcı arabirimini veya API'yi kullanarak kayıtlı bir modeli veya kayıtlı bir modeldeki 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.
Katalog Gezgini'nde, model sayfasında veya model sürümü sayfasında, sağ üst köşedeki kebap menüsü
tıklayın.
Model sayfasından:
Model sürümü sayfasından:
seçinsil.
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, validation_status:pending ile dağıtım öncesi doğrulamadan geçen sürümleri ve validation_status:approved ile dağıtım için temizlenen sürümleri etiketleyebilirsiniz.
gerekli İzinler: Kayıtlı modelin sahibi olun veya üzerinde APPLY TAG ayrıcalığına sahip olun, artı modeli içeren şema ve katalogda USE SCHEMA ve USE CATALOG ayrıcalıkları.
Kullanıcı arabirimini kullanarak etiketleri ayarlamayı ve silmeyi öğrenmek için bkz. Unity Kataloğu güvenli hale getirilebilir nesnelere etiket uygulama .
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 bir açıklama (yorumlar) ekleyin.
Gerekli İzinler: Kayıtlı modelin sahibi ve modeli içeren şema ile katalogda USE SCHEMA ve USE CATALOG 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 ile 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.
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:
Model sürümü sayfasında, Açıklama'nın altındaki kalem simgesine tıklayın.
İ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() yöntemini 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'sini 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:
mlflow.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
[pprint(mv) for mv in mlflow.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.pyfunc.load_model gibi mlflow.<flavor>.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 CATALOG,stagingveprodkataloglarında. -
USE SCHEMAstaging.ml_teamveprod.ml_teamşemalarında. -
EXECUTEüzerindestaging.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, dağıtım için diğer adları kullanarak 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 , devve qagibi prodbirden çok ortamda yükseltebilirsiniz. Erişim denetimi her ortamda yapılandırıldığı gibi uygulanır.
Örnek defter
Bu örnek not defteri; model ve model sürümlerini kaydetme, açıklama ekleme, modelleri yükleme ve dağıtma, model diğer adlarını kullanma ve modelleri ve model sürümlerini silme gibi Unity Kataloğu'ndaki modelleri yönetmek için Unity Kataloğu API'lerindeki Modellerin nasıl kullanılacağını gösterir.
MLflow 3
MLflow 3 için Unity Kataloğu örnek not defterindeki modeller
MLflow 2.x
Unity Kataloğu örnek not defterindeki modeller
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 dağıtma veya tanıtma.
- 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_byparametresi search_model_versions veya search_registered_models istemci API'lerinde desteklenmez. - Etiket tabanlı filtreler (
tags.mykey = 'myvalue') veyasearch_model_versionsiçinsearch_registered_modelsdesteklenmez. - Veya için
LIKEILIKEtam eşitlik dışındaki işleçler (örneğin,!=,search_model_versions,search_registered_models) desteklenmez. - Kayıtlı modelleri ada göre arama (örneğin,
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_modelsDelta 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 kullanarak şemadaki modelleri listeleyin.