Bagikan melalui


Mengelola siklus hidup model di Unity Catalog

Penting

Artikel ini menjelaskan cara menggunakan Model di Unity Catalog sebagai bagian dari alur kerja pembelajaran mesin Anda untuk mengelola siklus hidup penuh model ML. Databricks menyediakan versi MLflow Model Registry yang dihosting di Unity Catalog. Model di Unity Catalog memperluas manfaat Unity Catalog ke model ML, termasuk kontrol akses terpusat, audit, silsilah data, dan penemuan model di seluruh ruang kerja. Model di Unity Catalog kompatibel dengan klien MLflow Python sumber terbuka.

Untuk gambaran umum konsep Model Registry, lihat MLflow untuk siklus hidup model ML.

MLflow 3 membuat peningkatan signifikan pada MLflow Model Registry di Unity Catalog, memungkinkan model Anda untuk langsung mengambil data seperti parameter dan metrik dan membuatnya tersedia di semua ruang kerja dan eksperimen. URI registri default di MLflow 3 adalah databricks-uc, yang berarti Registri Model MLflow di Unity Catalog akan digunakan. Untuk detail selengkapnya, lihat Mulai menggunakan MLflow 3 dan Peningkatan Registry Model dengan MLflow 3.

Persyaratan

  1. Katalog Unity harus diaktifkan di ruang kerja Anda. Lihat Mulai menggunakan Unity Catalog untuk membuat Unity Catalog Metastore, mengaktifkannya pada ruang kerja, dan membuat katalog. Jika Katalog Unity tidak diaktifkan, gunakan registri model di ruang kerja.

  2. Anda harus menggunakan sumber daya komputasi yang memiliki akses ke Unity Catalog. Untuk beban kerja ML, ini berarti bahwa mode akses untuk komputasi harus didedikasikan (sebelumnya disebut pengguna tunggal). Untuk informasi selengkapnya, lihat Mode akses. Dengan Databricks Runtime 15.4 LTS ML ke atas, Anda juga dapat menggunakan mode akses grup khusus .

  3. Untuk membuat model terdaftar baru, Anda memerlukan hak istimewa berikut:

    • USE SCHEMA dan USE CATALOG privilege pada skema dan katalog yang mencakupnya.
    • CREATE MODEL atau CREATE FUNCTION hak istimewa pada skema. Untuk memberikan hak istimewa, gunakan UI Catalog Explorer atau perintah SQLGRANT:
    GRANT CREATE MODEL ON SCHEMA <schema-name> TO <principal>
    

Catatan

Ruang kerja Anda harus terhubung dengan metastore Unity Catalog yang mendukung pewarisan hak istimewa. Ini berlaku untuk semua metastores yang dibuat setelah 25 Agustus 2022. Jika berjalan di metastore yang lebih lama, ikuti panduan untuk melakukan upgrade.

Menginstal dan mengonfigurasi klien MLflow untuk Unity Catalog

Bagian ini mencakup instruksi untuk menginstal dan mengonfigurasi klien MLflow untuk Unity Catalog.

Menginstal klien MLflow Python

Dukungan untuk model di Unity Catalog disertakan dalam Databricks Runtime 13.2 ML dan seterusnya (Databricks Runtime 15.0 ML dan seterusnya di Azure Tiongkok).

Anda juga dapat menggunakan model di Unity Catalog di Databricks Runtime 11.3 LTS ke atas dengan menginstal versi terbaru klien MLflow Python di notebook Anda, menggunakan kode berikut.

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

Mengonfigurasi klien MLflow untuk mengakses model di Unity Catalog

Jika katalog default ruang kerja Anda berada di Unity Catalog (bukan hive_metastore), dan Anda menjalankan kluster menggunakan Databricks Runtime 13.3 LTS atau lebih tinggi (Databricks Runtime 15.0 atau lebih tinggi di wilayah Azure Tiongkok) atau menggunakan MLflow 3, model secara otomatis dibuat dan dimuat dari katalog default.

Untuk ruang kerja lainnya, klien MLflow Python membuat model di registri model ruang kerja Databricks. Untuk meningkatkan ke model di Unity Catalog, gunakan kode berikut di notebook Anda untuk mengonfigurasi klien MLflow:

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

Untuk sejumlah kecil ruang kerja di mana katalog default dikonfigurasi ke katalog di Katalog Unity sebelum Januari 2024 dan registri model ruang kerja digunakan sebelum Januari 2024, Anda harus mengatur katalog default secara manual ke Katalog Unity menggunakan perintah yang ditunjukkan di atas.

Melatih dan mendaftarkan model yang kompatibel dengan Katalog Unity

Izin yang diperlukan: Untuk membuat model terdaftar baru, Anda memerlukan CREATE MODEL hak istimewa dan USE SCHEMA pada skema penutup, dan USE CATALOG hak istimewa pada katalog penutup. Untuk membuat versi model baru di bawah model terdaftar, Anda harus menjadi pemilik model terdaftar dan memiliki USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model.

Versi model ML dalam UC harus memiliki tanda tangan model. Jika Anda belum mencatat model MLflow dengan tanda tangan dalam beban kerja pelatihan model, Anda dapat:

  • Gunakan autologging Databricks, yang secara otomatis mencatat model beserta tanda tangan untuk banyak framework ML populer. Lihat kerangka kerja yang didukung di dokumen MLflow.
  • Dengan MLflow 2.5.0 ke atas, Anda dapat menentukan contoh input dalam panggilan Anda mlflow.<flavor>.log_model , dan tanda tangan model secara otomatis disimpulkan. Untuk informasi lebih lanjut, lihat dokumentasi MLflow.

Kemudian, teruskan nama tiga tingkat model ke API MLflow, dalam bentuk <catalog>.<schema>.<model>.

Contoh di bagian ini membuat dan mengakses model dalam skema ml_team dalam katalog prod.

Contoh pelatihan model di bagian ini membuat versi model baru dan mendaftarkannya di prod katalog. Menggunakan katalog prod tidak selalu berarti bahwa versi model digunakan untuk lalu lintas produksi. Katalog, skema, dan model terdaftar versi model mencerminkan lingkungannya (prod) dan aturan tata kelola terkait (misalnya, hak istimewa dapat diatur sehingga hanya admin yang dapat menghapus dari katalog prod), namun bukan status penerapannya. Untuk mengelola status penyebaran, gunakan alias model.

Mendaftarkan model ke Unity Catalog menggunakan autologging

Untuk mendaftarkan model, gunakan metode MLflow Client API register_model() . Lihat 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")

Mendaftarkan model menggunakan API

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

Mendaftarkan model ke Unity Catalog dengan tanda tangan yang disimpulkan secara otomatis

Dukungan untuk tanda tangan yang disimpulkan secara otomatis tersedia di MLflow versi 2.5.0 ke atas, dan didukung di Databricks Runtime 11.3 LTS ML ke atas. Untuk menggunakan tanda tangan yang disimpulkan secara otomatis, gunakan kode berikut untuk menginstal klien MLflow Python terbaru di buku catatan Anda:

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

Kode berikut menunjukkan contoh tanda tangan yang disimpulkan secara otomatis.

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,
        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,
        registered_model_name="prod.ml_team.iris_model",
    )

Mendaftarkan model menggunakan UI

Ikuti langkah-langkah ini:

  1. Dari halaman eksekusi eksperimen, klik Daftarkan model di sudut kanan atas UI.

  2. Dalam dialog, pilih Katalog Unity, dan pilih model tujuan dari daftar drop-down.

    Daftarkan dialog versi model dengan menu dropdown

  3. Klik Daftar.

    Dialog pendaftaran versi model dengan tombol

Mendaftarkan model dapat memakan waktu. Untuk memantau kemajuan, navigasikan ke model tujuan di Unity Catalog dan refresh secara berkala.

Menggunakan alias model

Alias model memungkinkan Anda menetapkan referensi bernama yang dapat diubah ke versi model terdaftar tertentu. Anda dapat menggunakan alias untuk menandai status penerapan dari sebuah versi model. Misalnya, Anda dapat mengalokasikan alias "Champion" ke versi model yang saat ini dalam produksi dan menargetkan alias ini dalam beban kerja yang menggunakan model produksi. Anda kemudian dapat memperbarui model produksi dengan menetapkan ulang alias "Juara" ke versi model yang berbeda.

Mengatur dan menghapus alias pada model

Izin yang diperlukan: Pemilik model terdaftar, plus USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model.

Anda dapat mengatur, memperbarui, dan menghapus alias untuk model di Unity Catalog menggunakan Catalog Explorer. Lihat Menampilkan dan mengelola model di UI.

Untuk mengatur, memperbarui, dan menghapus alias menggunakan MLflow Client API, lihat contoh di bawah ini:

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

Untuk detail selengkapnya tentang API klien alias, lihat dokumentasi MLflow API.

Memuat versi model menggunakan alias untuk tugas inferensi

Izin yang diperlukan: EXECUTE hak istimewa pada model terdaftar, plus USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model.

Beban kerja inferensi batch dapat mereferensikan versi model berdasarkan alias. Cuplikan di bawah ini memuat dan menerapkan versi model "Champion" untuk inferensi kelompok. Jika versi "Champion" diperbarui untuk mereferensikan versi model baru, beban kerja inferensi batch secara otomatis mengambilnya pada eksekusi berikutnya. Ini memungkinkan Anda untuk memisahkan penyebaran model dari beban kerja inferensi batch Anda.

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)

Endpoint penyajian model juga dapat mengacu pada versi model berdasarkan alias. Anda dapat menulis alur kerja penyebaran untuk mendapatkan versi model berdasarkan alias dan memperbarui model yang melayani titik akhir untuk melayani versi tersebut, menggunakan model yang melayani REST API. Contohnya:

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(...)

Memuat versi model menurut nomor versi untuk beban kerja inferensi

Anda juga dapat memuat versi model berdasarkan nomor versi:

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)

Berbagi model di seluruh ruang kerja

Berbagi model dengan pengguna di wilayah yang sama

Selama Anda memiliki hak istimewa yang sesuai, Anda dapat mengakses model di Unity Catalog dari ruang kerja apa pun yang dilampirkan ke metastore yang berisi model. Misalnya, Anda dapat mengakses model dari katalog prod di ruang kerja pengembangan, untuk memfasilitasi perbandingan model yang baru dikembangkan dengan model produksi dasar.

Untuk berkolaborasi dengan pengguna lain (berbagi hak istimewa tulis) pada model terdaftar yang Anda buat, Anda harus memberikan kepemilikan model ke grup yang berisi diri Anda sendiri dan pengguna yang ingin Anda gunakan untuk berkolaborasi. Kolaborator juga harus memiliki hak istimewa USE CATALOG dan hak istimewa USE SCHEMA pada katalog dan skema yang berisi model. Lihat Hak istimewa Katalog Unity dan objek yang dapat diamankan untuk detailnya.

Berbagi model dengan pengguna di wilayah atau akun lain

Untuk berbagi model dengan pengguna di wilayah atau akun lain, gunakan alur berbagi Delta Sharing Databricks-to-Databricks. Lihat Menambahkan model ke dalam berbagi (untuk penyedia) dan Mendapatkan akses dalam model Databricks-ke-Databricks (untuk penerima). Sebagai penerima, setelah membuat katalog dari sebuah sharing, Anda mengakses model dalam katalog bersama tersebut sama seperti model lainnya di Unity Catalog.

Melacak asal-usul data dari model di Unity Catalog

Catatan

Dukungan untuk silsilah tabel ke model di Unity Catalog tersedia di MLflow 2.11.0 ke atas.

Saat Melatih model pada tabel di Unity Catalog, Anda dapat melacak silsilah model ke himpunan data hulu tempat model dilatih dan dievaluasi. Untuk melakukan ini, gunakan mlflow.log_input. Ini menyimpan informasi tabel input dengan eksekusi MLflow yang menghasilkan model. Silsilah data juga secara otomatis diambil untuk model yang dicatat menggunakan API penyimpanan fitur. Lihat Tata kelola fitur dan silsilah data.

Saat Anda mendaftarkan model ke Unity Catalog, informasi silsilah data disimpan secara otomatis dan terlihat di tab Silsilah data pada halaman versi model di Catalog Explorer. Lihat Menampilkan informasi versi model dan silsilah model.

Kode berikut menunjukkan contoh.

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,
        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,
        registered_model_name="prod.ml_team.iris_classifier",
    )

Mengontrol akses ke model

Di Unity Catalog, model terdaftar adalah subjenis objek FUNCTION yang dapat diamankan. Untuk memberikan akses ke model yang terdaftar di Unity Catalog, Anda menggunakan GRANT ON FUNCTION. Anda juga dapat menggunakan Catalog Explorer untuk mengatur kepemilikan dan izin model. Untuk detailnya, lihat Mengelola hak istimewa di Katalog Unity dan model objek Katalog Unity.

Anda dapat mengonfigurasi izin model secara terprogram menggunakan Grants REST API. Saat Anda mengonfigurasi izin model, atur securable_type ke "FUNCTION" dalam permintaan REST API. Misalnya, gunakan PATCH /api/2.1/unity-catalog/permissions/function/{full_name} untuk memperbarui izin model terdaftar.

Menampilkan dan mengelola model di UI

Izin yang diperlukan: Untuk melihat model terdaftar dan versi modelnya di UI, Anda memerlukan EXECUTE hak istimewa pada model terdaftar, plus USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model

Anda dapat melihat dan mengelola model terdaftar dan versi model di Unity Catalog menggunakan Catalog Explorer.

Lihat informasi model

Untuk melihat model di Catalog Explorer:

  1. Klik ikon Data.Katalog di bilah samping.

  2. Pilih sumber daya komputasi dari daftar drop-down di kanan atas.

  3. Di pohon Catalog Explorer di sebelah kiri, buka katalog dan pilih skema.

  4. Jika skema berisi model apa pun, model tersebut muncul di struktur pohon di bawah Models, seperti yang ditunjukkan.

    Bagian pohon penjelajah katalog yang menunjukkan model.

  5. Klik model untuk melihat informasi selengkapnya. Halaman detail model memperlihatkan daftar versi model dengan informasi tambahan.

    halaman detail model

Menetapkan alias model

Untuk mengatur alias model menggunakan UI:

  1. Pada halaman detail model, arahkan mouse ke atas baris untuk versi model yang ingin Anda tambahkan aliasnya. Tombol Tambahkan alias muncul.
  2. Klik Tambahkan alias.
  3. Masukkan alias atau pilih alias dari menu drop-down. Anda dapat menambahkan beberapa alias dalam dialog.
  4. Klik Simpan nama samaran.

Cara menambahkan alias ke versi model dari halaman detail model.

Untuk menghapus alias:

  1. Arahkan mouse ke atas baris untuk versi model dan klik ikon pensil di samping alias.
  2. Dalam dialog, klik di X samping alias yang ingin Anda hapus.
  3. Klik Simpan nama samaran.

Cara menghapus alias dari versi model di halaman detail model.

Menampilkan informasi versi model dan silsilah model

Untuk melihat informasi selengkapnya tentang versi model, klik namanya dalam daftar model. Halaman versi model telah muncul. Halaman ini menyertakan tautan ke eksekusi sumber MLflow yang membuat versi. Di MLflow 3, Anda juga dapat melihat semua parameter dan metrik yang dicatat dengan Model Log MLflow yang sesuai.

MLflow 3

halaman versi model

MLflow 2.x

halaman versi model

Dari halaman ini, Anda dapat melihat silsilah model sebagai berikut:

  1. Pilih tab Silsilah. Bilah sisi kiri menunjukkan komponen yang dilogging dengan model.

    Tab garis keturunan pada halaman model di Catalog Explorer

  2. Klik Lihat grafik garis keturunan. Grafik silsilah muncul. Untuk detail tentang menjelajahi grafik silsilah data, lihat Mengambil dan menjelajahi silsilah data.

    layar silsilah

  3. Untuk menutup grafik silsilah data, klik tombol tutup untuk grafik silsilah di sudut kanan atas.

Mengganti nama model

Izin yang diperlukan: Pemilik model terdaftar, CREATE MODEL hak istimewa pada skema yang berisi model terdaftar, dan USE SCHEMA hak USE CATALOG istimewa pada skema dan katalog yang berisi model.

Untuk mengganti nama model terdaftar, gunakan metode MLflow Client API rename_registered_model() , di mana <full-model-name> adalah nama lengkap model 3 tingkat dan <new-model-name> merupakan nama model tanpa katalog atau skema.

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

Misalnya, kode berikut mengubah nama model hello_world menjadi hello.

client=MlflowClient()
client.rename_registered_model("docs.models.hello_world", "hello")

Menyalin versi model

Anda dapat menyalin versi model dari satu model ke model lain di Unity Catalog.

Menyalin versi model menggunakan UI

Ikuti langkah-langkah ini:

  1. Dari halaman versi model, klik Salin versi ini di sudut kanan atas UI.

  2. Pilih model tujuan dari daftar drop-down dan klik Salin.

    Dialog salin versi model

Menyalin model dapat memakan waktu. Untuk memantau kemajuan, navigasikan ke model tujuan di Unity Catalog dan refresh secara berkala.

Menyalin versi model menggunakan API

Untuk menyalin versi model, gunakan API Python copy_model_version() MLflow:

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

Hapus model atau versi model

Izin yang diperlukan: Pemilik model terdaftar, plus USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model.

Anda dapat menghapus model terdaftar atau versi model dalam model terdaftar menggunakan UI atau API.

Peringatan

Anda tidak dapat membatalkan tindakan ini. Saat Anda menghapus model, semua artefak model yang disimpan oleh Unity Catalog dan semua metadata yang terkait dengan model terdaftar akan dihapus.

Hapus versi model atau model menggunakan antarmuka pengguna

Untuk menghapus model atau versi model di Unity Catalog, ikuti langkah-langkah berikut.

  1. Pada Catalog Explorer, pada halaman model atau halaman versi model, klik ikon menu Kebab. di sudut kanan atas.

    Dari halaman model:

    menu kebab halaman model dengan hapus

    Dari halaman versi model:

    menu kebab halaman versi model dengan hapus

  2. Pilih Hapus.

  3. Dialog konfirmasi akan ditampilkan. Klik Hapus untuk mengonfirmasi.

Hapus versi model atau model menggunakan API

Untuk menghapus versi model, gunakan metode MLflow Client API delete_model_version() :

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

Untuk menghapus model, gunakan metode MLflow Client API delete_registered_model() :

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

Menggunakan tag pada model

Tag adalah pasangan kunci-nilai yang Anda kaitkan dengan model terdaftar dan versi model, memungkinkan Anda memberi label dan mengategorikannya berdasarkan fungsi atau status. Misalnya, Anda dapat menerapkan tag dengan kunci "task" dan nilai "question-answering" (ditampilkan di UI sebagai task:question-answering) ke model terdaftar yang ditujukan untuk tugas jawaban atas pertanyaan. Pada tingkat versi model, Anda dapat menandai versi yang sedang menjalani validasi pra-penyebaran dengan validation_status:pending dan versi yang telah disetujui untuk penyebaran dengan validation_status:approved.

Izin yang diperlukan: Pemilik atau memiliki APPLY TAG hak istimewa pada model terdaftar, serta USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model.

Lihat Menambahkan dan memperbarui tag menggunakan Catalog Explorer tentang cara mengatur dan menghapus tag menggunakan UI.

Untuk mengatur dan menghapus tag menggunakan MLflow Client API, lihat contoh di bawah ini:

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

Tag model terdaftar dan versi model harus memenuhi batasan di seluruh platform.

Untuk detail selengkapnya tentang API klien tag, lihat dokumentasi MLflow API.

Tambahkan deskripsi (komentar) pada model atau versi model.

Izin yang diperlukan: Pemilik model terdaftar, plus USE SCHEMA dan USE CATALOG hak istimewa pada skema dan katalog yang berisi model.

Anda dapat menyertakan deskripsi teks untuk model atau versi model apa pun di Unity Catalog. Misalnya, Anda dapat memberikan gambaran umum tentang masalah atau informasi tentang metodologi dan algoritma yang digunakan.

Untuk model, Anda juga memiliki opsi untuk menggunakan komentar yang dihasilkan AI. Lihat Menambahkan komentar yang dihasilkan AI ke objek Katalog Unity.

Menambahkan deskripsi ke model menggunakan UI

Untuk menambahkan deskripsi untuk model, Anda dapat menggunakan komentar yang dihasilkan AI, atau Anda dapat memasukkan komentar Anda sendiri. Anda dapat mengedit komentar yang dihasilkan AI seperlunya.

  • Untuk menambahkan komentar yang dihasilkan secara otomatis, klik tombol hasilkan AI.
  • Untuk menambahkan komentar Anda sendiri, klik Tambahkan. Masukkan komentar Anda dalam dialog, dan klik Simpan.

tombol deskripsi model uc

Menambahkan deskripsi ke versi model menggunakan UI

Untuk menambahkan deskripsi ke versi model di Unity Catalog, ikuti langkah-langkah berikut:

  1. Pada halaman versi model, klik ikon pensil di bawah Deskripsi.

    ikon pensil untuk menambahkan komentar ke versi model

  2. Masukkan komentar Anda dalam dialog, dan klik Simpan.

Menambahkan deskripsi ke model atau versi model menggunakan API

Untuk memperbarui deskripsi model terdaftar, gunakan metode MLflow Client API update_registered_model() :

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

Untuk memperbarui deskripsi versi model, gunakan metode update_model_version() API Klien MLflow:

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

Mencantumkan dan mencari model

Untuk mendapatkan daftar model terdaftar di Unity Catalog, gunakan API Python search_registered_models() MLflow:

client=MlflowClient()
client.search_registered_models()

Untuk mencari nama model tertentu dan mendapatkan informasi tentang versi model tersebut, gunakan search_model_versions():

from pprint import pprint

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

Catatan

Tidak semua bidang dan operator API pencarian didukung untuk model di Unity Catalog. Lihat Batasan untuk detailnya.

Mengunduh file model (kasus penggunaan tingkat lanjut)

Dalam kebanyakan kasus, untuk memuat model, Anda harus menggunakan API MLflow seperti mlflow.pyfunc.load_model atau mlflow.<flavor>.load_model (misalnya, mlflow.transformers.load_model untuk model HuggingFace).

Dalam beberapa kasus, Anda mungkin perlu mengunduh file model untuk men-debug perilaku model atau masalah pemuatan model. Anda dapat mengunduh file model menggunakan mlflow.artifacts.download_artifacts, sebagai berikut:

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)

Mempromosikan model di seluruh lingkungan

Databricks merekomendasikan agar Anda menyebarkan alur ML sebagai kode. Ini menghilangkan kebutuhan untuk mempromosikan model di seluruh lingkungan, karena semua model produksi dapat diproduksi melalui alur kerja pelatihan otomatis di lingkungan produksi.

Namun, dalam beberapa kasus, mungkin terlalu mahal untuk melatih kembali model di seluruh lingkungan. Sebagai gantinya, Anda dapat menyalin versi model di seluruh model terdaftar di Unity Catalog untuk mempromosikannya di seluruh lingkungan.

Anda memerlukan hak istimewa berikut untuk menjalankan kode contoh di bawah ini:

  • USE CATALOG pada katalog staging dan prod.
  • USE SCHEMA pada skema staging.ml_team dan skema prod.ml_team.
  • EXECUTE pada staging.ml_team.fraud_detection.

Selain itu, Anda harus menjadi pemilik model prod.ml_team.fraud_detection terdaftar.

Cuplikan kode berikut menggunakan copy_model_versionMLflow Client API, tersedia di MLflow versi 2.8.0 ke atas.

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)

Setelah versi model berada di lingkungan produksi, Anda dapat melakukan validasi pra-penyebaran yang diperlukan. Kemudian, Anda dapat menandai versi model untuk penyebaran menggunakan alias.

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

Dalam contoh di atas, hanya pengguna yang dapat membaca dari model terdaftar staging.ml_team.fraud_detection dan menulis ke model terdaftar prod.ml_team.fraud_detection yang dapat mempromosikan model tahap penahapan ke lingkungan produksi. Pengguna yang sama juga dapat menggunakan alias untuk mengelola versi model mana yang disebarkan dalam lingkungan produksi. Anda tidak perlu mengonfigurasi aturan atau kebijakan lain untuk mengatur promosi dan penyebaran model.

Anda dapat menyesuaikan alur ini untuk mempromosikan versi model di beberapa lingkungan yang cocok dengan penyiapan Anda, seperti dev, qa, dan prod. Kontrol akses diberlakukan seperti yang dikonfigurasi di setiap lingkungan.

Contoh buku catatan

Contoh notebook ini menggambarkan cara menggunakan Model di UNITY Catalog API untuk mengelola model di Unity Catalog, termasuk mendaftarkan model dan versi model, menambahkan deskripsi, memuat dan menyebarkan model, menggunakan alias model, dan menghapus model dan versi model.

MLflow 3

Model di buku catatan contoh Katalog Unity untuk MLflow 3

Dapatkan buku catatan

MLflow 2.x

Model-model dalam contoh buku catatan Katalog Unity

Dapatkan buku catatan

Memigrasikan alur kerja dan model ke Unity Catalog

Databricks merekomendasikan penggunaan Model di Unity Catalog untuk meningkatkan tata kelola, berbagi yang mudah di seluruh ruang kerja dan lingkungan, dan alur kerja MLOps yang lebih fleksibel. Tabel membandingkan kemampuan Registri Model Ruang Kerja dan Katalog Unity.

Kemampuan Registri Model Ruang Kerja (warisan) Model di Unity Catalog (disarankan)
Mereferensikan versi model dengan alias bernama Tahap Registri Model: Memindahkan versi model ke salah satu dari empat tahap tertentu agar dapat direferensikan berdasarkan tahap tersebut. Tidak dapat mengganti nama atau menambahkan tahapan. Alias Registri Model: Buat hingga 10 referensi bernama kustom dan dapat ditetapkan kembali ke versi model untuk setiap model terdaftar.
Membuat lingkungan yang dikontrol akses untuk model Tahapan Registri Model: Gunakan tahapan dalam satu model terdaftar untuk menandakan lingkungan dari versi-versi modelnya, dengan kontrol akses hanya untuk dua dari empat tahap tetap yang telah ditentukan (Staging dan Production). Model Terdaftar: Buat model terdaftar untuk setiap lingkungan dalam alur kerja MLOps Anda, menggunakan namespace tiga tingkat dan izin Katalog Unity untuk mengekspresikan tata kelola.
Mempromosikan model di seluruh lingkungan (menyebarkan model) transition_model_version_stage() Gunakan MLflow Client API untuk memindahkan versi model ke tahap yang berbeda, yang berpotensi merusak alur kerja yang mereferensikan tahap sebelumnya. copy_model_version() Gunakan MLflow Client API untuk menyalin versi model dari satu model terdaftar ke model lain.
Mengakses dan berbagi model di seluruh ruang kerja Ekspor dan impor model secara manual di seluruh ruang kerja, atau konfigurasikan koneksi ke registri model jarak jauh menggunakan token akses pribadi dan cakupan rahasia ruang kerja. Akses langsung ke model di seluruh ruang kerja dalam akun yang sama. Tidak memerlukan konfigurasi.
Mengatur izin Atur izin di tingkat ruang kerja. Atur izin di tingkat akun, yang menerapkan tata kelola yang konsisten di seluruh ruang kerja.
Mengakses model di marketplace Databricks Tidak tersedia. Memuat model-model dari marketplace Databricks ke metastore Unity Catalog Anda dan mengaksesnya di seluruh ruang kerja.

Artikel yang ditautkan di bawah ini menjelaskan cara memigrasikan alur kerja (pelatihan model dan tugas inferensi batch) serta model dari Registri Model Ruang Kerja ke Katalog Unity.

Batasan

  • Tahap tidak didukung untuk model di Unity Catalog. Databricks merekomendasikan penggunaan namespace tiga tingkat di Unity Catalog untuk mengekspresikan lingkungan tempat model berada, dan menggunakan alias untuk mempromosikan model untuk penyebaran. Lihat Mempromosikan model di seluruh lingkungan untuk detailnya.
  • Webhook tidak didukung untuk model di Unity Catalog. Lihat alternatif yang disarankan dalam panduan peningkatan.
  • Beberapa bidang dan operator API pencarian tidak didukung untuk model di Unity Catalog. Ini dapat dimitigasi dengan memanggil API pencarian menggunakan filter yang didukung dan memindai hasilnya. Berikut ini adalah beberapa contoh:
    • Parameter order_by tidak didukung di API klien search_model_versions atau search_registered_models .
    • Filter berbasis tag (tags.mykey = 'myvalue') tidak didukung untuk search_model_versions atau search_registered_models.
    • Operator selain kesetaraan yang tepat (misalnya, , LIKE, ILIKE!=) tidak didukung untuk search_model_versions atau search_registered_models.
    • Mencari model terdaftar berdasarkan nama (misalnya, MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") tidak didukung. Untuk mengambil model terdaftar tertentu berdasarkan nama, gunakan get_registered_model.
  • Pemberitahuan melalui email dan utas diskusi komentar terkait model yang terdaftar serta versi model tidak didukung dalam Unity Catalog.
  • Log aktivitas tidak tersedia untuk model di Unity Catalog. Untuk melacak aktivitas pada model di Unity Catalog, gunakan audit log.
  • search_registered_models dapat mengembalikan hasil usang untuk model yang dibagikan melalui Berbagi Delta. Untuk memastikan hasil terbaru, gunakan Databricks CLI atau SDK untuk mencantumkan model dalam skema.