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 Manajemen siklus hidup ML menggunakan MLflow.

Persyaratan

  1. Katalog Unity harus diaktifkan di ruang kerja Anda. Lihat Mulai menggunakan Katalog Unity untuk membuat Metastore Katalog Unity, mengaktifkannya di ruang kerja, dan membuat katalog. Jika Katalog Unity tidak diaktifkan, gunakan registri model 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 Pengguna tunggal. Untuk informasi selengkapnya, lihat Mode akses.

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

    • USE SCHEMA hak USE CATALOG istimewa pada skema dan katalog penutupnya.
    • CREATE_MODEL hak istimewa pada skema. Untuk memberikan hak istimewa ini, gunakan UI Catalog Explorer atau perintah SQL GRANT berikut:
    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

Catatan

Ruang kerja Anda harus dilampirkan ke 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 dokumen untuk ditingkatkan.

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

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), model secara otomatis dibuat dan dimuat dari katalog default. Anda tidak perlu melakukan langkah ini.

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 dengan tanda tangan untuk banyak kerangka kerja 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 ml_team skema di prod bawah katalog.

Contoh pelatihan model di bagian ini membuat versi model baru dan mendaftarkannya di prod katalog. prod Menggunakan katalog tidak selalu berarti bahwa versi model melayani lalu lintas produksi. Katalog, skema, dan model terdaftar versi model mencerminkan lingkungannya (prod) dan aturan tata kelola terkait (misalnya, hak istimewa dapat disiapkan sehingga hanya admin yang dapat menghapus dari prod katalog), tetapi bukan status penyebarannya. 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.

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.register_model(
  "runs:/<run_uuid>/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.

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 daftarkan versi model dengan tombol

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

Menyebarkan model menggunakan alias

Alias model memungkinkan Anda menetapkan referensi bernama yang dapat diubah ke versi model terdaftar tertentu. Anda dapat menggunakan alias untuk menunjukkan status penyebaran 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 dengan menggunakan Catalog Explorer. Anda dapat mengelola alias di seluruh model terdaftar di halaman detail model dan mengonfigurasi alias untuk versi model tertentu di halaman detail versi model.

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 menurut alias untuk beban kerja 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 batch. 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)

Model yang melayani titik akhir juga dapat mereferensikan 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 prod katalog di ruang kerja dev, untuk memfasilitasi perbandingan model yang baru dikembangkan dengan garis besar produksi.

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 USE CATALOG hak istimewa dan 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 berbagi (untuk penyedia) dan Mendapatkan akses dalam model Databricks-ke-Databricks (untuk penerima). Sebagai penerima, setelah membuat katalog dari berbagi, Anda mengakses model dalam katalog bersama tersebut dengan cara yang sama seperti model lain di Unity Catalog.

Melacak silsilah data 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 Katalog Unity, informasi silsilah data secara otomatis disimpan dan terlihat di tab Silsilah dari UI versi model di Catalog Explorer.

Kode berikut menunjukkan contoh.

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. Untuk detailnya, lihat Hak istimewa Katalog Unity dan objek yang dapat diamankan. Untuk praktik terbaik tentang mengatur model di seluruh katalog dan skema, lihat Mengatur data Anda.

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

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

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

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

Menghapus 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 Catalog Explorer 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.

Menghapus versi model atau model menggunakan antarmuka pengguna

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

  1. Pada halaman model atau halaman versi model, klik menu Menu kebab 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.

Menghapus 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 menjalani validasi pra-penyebaran dengan validation_status:pending dan versi yang dihapus untuk penyebaran dengan validation_status:approved.

Izin yang diperlukan: Pemilik atau memiliki APPLY_TAG hak istimewa pada model terdaftar, plus 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 versi model dan model terdaftar harus memenuhi batasan di seluruh platform.

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

Menambahkan deskripsi (komentar) ke 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 MLflow Client API update_model_version() :

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 staging katalog dan prod .
  • USE SCHEMA pada staging.ml_team skema dan prod.ml_team .
  • EXECUTE pada staging.ml_team.fraud_detection.

Selain itu, Anda harus menjadi pemilik model prod.ml_team.fraud_detectionterdaftar .

Cuplikan kode berikut menggunakan copy_model_version MLflow 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 staging.ml_team.fraud_detection model terdaftar dan menulis ke prod.ml_team.fraud_detection model terdaftar yang dapat mempromosikan model 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

Contoh ini menggambarkan cara menggunakan Model di Unity Catalog untuk membangun aplikasi pembelajaran mesin.

Model dalam contoh Katalog Unity

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 dalam salah satu dari empat tahap tetap untuk mereferensikannya pada 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 menunjukkan lingkungan versi modelnya, dengan kontrol akses hanya untuk dua dari empat tahap tetap (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 di luar kotak ke model di seluruh ruang kerja di akun yang sama. Tidak memerlukan konfigurasi.
Mengonfigurasi 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 markplace Databricks Tidak tersedia. Muat model dari marketplace Databricks ke metastore Unity Catalog Anda dan akses di seluruh ruang kerja.

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

Batasan

  • Tahapan 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 email dan utas diskusi komentar pada model terdaftar dan versi model tidak didukung di Katalog Unity.
  • Log aktivitas tidak didukung untuk model di Unity Catalog. Untuk melacak aktivitas pada model di Unity Catalog, gunakan log audit.
  • search_registered_models mungkin mengembalikan hasil kedaluarsa untuk model yang dibagikan melalui Berbagi Delta. Untuk memastikan hasil terbaru, gunakan Databricks CLI atau SDK untuk mencantumkan model dalam skema.