Bagikan melalui


Berbagi model di seluruh ruang kerja

Penting

Databricks merekomendasikan penggunaan Model di Unity Catalog untuk berbagi model di seluruh ruang kerja. Pendekatan dalam artikel ini tidak digunakan lagi.

Azure Databricks mendukung model berbagi di beberapa ruang kerja. Misalnya, Anda dapat mengembangkan dan mencatat model di ruang kerja pengembangan, lalu mengakses dan membandingkannya dengan model di ruang kerja produksi terpisah. Ini berguna ketika beberapa tim berbagi akses ke model atau ketika organisasi Anda memiliki beberapa ruang kerja untuk menangani berbagai tahap pengembangan. Untuk pengembangan dan penyebaran model lintas ruang kerja, Databricks merekomendasikan pendekatan kode penyebaran, tempat kode pelatihan model disebarkan ke beberapa lingkungan.

Dalam situasi multi-ruang kerja, Anda dapat mengakses model di seluruh ruang kerja Azure Databricks dengan menggunakan registri model jarak jauh. Misalnya, ilmuwan data dapat mengakses registri model produksi dengan akses baca-saja untuk membandingkan model dalam pengembangan mereka dengan model produksi saat ini. Contoh penyiapan multi-ruang kerja ditunjukkan di bawah ini.

Beberapa ruang kerja

Akses ke registri jarak jauh dikontrol oleh token. Setiap pengguna atau skrip yang membutuhkan akses membuat token akses pribadi di registri jarak jauh dan menyalin token tersebut ke manajer rahasia ruang kerja lokal mereka. Setiap permintaan API yang dikirim ke ruang kerja registri jarak jauh harus menyertakan token akses; MLflow menyediakan mekanisme sederhana untuk menentukan rahasia yang akan digunakan saat melakukan operasi registri model.

Catatan

Sebagai praktik terbaik keamanan, saat Anda mengautentikasi dengan alat, sistem, skrip, dan aplikasi otomatis, Databricks merekomendasikan agar Anda menggunakan token akses pribadi milik perwakilan layanan, bukan pengguna ruang kerja. Untuk membuat token untuk perwakilan layanan, lihat Mengelola token untuk perwakilan layanan.

Semua metode API klien dan lancar untuk registri model didukung untuk ruang kerja jarak jauh.

Persyaratan

Menggunakan registri model di seluruh ruang kerja memerlukan klien MLflow Python, rilis 1.11.0 atau lebih tinggi.

Catatan

Alur kerja ini diimplementasikan dari logika di klien MLflow. Pastikan bahwa lingkungan yang menjalankan klien memiliki akses untuk membuat permintaan jaringan terhadap ruang kerja Azure Databricks yang berisi registri model jarak jauh. Pembatasan umum yang diberlakukan pada ruang kerja registri adalah daftar izin IP, yang dapat melarang koneksi dari klien MLflow yang berjalan dalam kluster di ruang kerja lain.

Menyiapkan token API untuk registri jarak jauh

  1. Di ruang kerja registri model, buat token akses.
  2. Di ruang kerja lokal, buat rahasia untuk menyimpan token akses dan informasi ruang kerja jarak jauh:
    1. Membuat cakupan rahasia databricks secrets create-scope <scope>.
    2. Pilih nama unik untuk ruang kerja target, yang ditunjukkan di sini sebagai <prefix>. Kemudian buat tiga rahasia:
      • databricks secrets put-secret <scope> <prefix>-host : Masukkan nama host ruang kerja registri model. Misalnya, https://westus.azuredatabricks.net/ atau https://adb-5555555555555555.19.azuredatabricks.net/.
      • databricks secrets put-secret <scope> <prefix>-token : Masukkan token akses dari ruang kerja registri model.
      • databricks secrets put-secret <scope> <prefix>-workspace-id : Masukkan ID ruang kerja untuk ruang kerja registri model yang dapat ditemukan di URL halaman mana pun.

Catatan

Anda mungkin ingin berbagi cakupan rahasia dengan pengguna lain, karena ada batasan jumlah cakupan rahasia per ruang kerja.

Menentukan registri jarak jauh

Berdasarkan cakupan rahasia dan awalan nama yang Anda buat untuk ruang kerja registri jarak jauh, Anda dapat membuat URI registri dari formulir:

registry_uri = f'databricks://<scope>:<prefix>'

Anda dapat menggunakan URI untuk menentukan registri jarak jauh untuk metode API yang lancar dengan terlebih dahulu memanggil:

mlflow.set_registry_uri(registry_uri)

Atau, Anda dapat menentukannya secara eksplisit ketika Anda membuat instans MlflowClient:

client = MlflowClient(registry_uri=registry_uri)

Alur kerja berikut menunjukkan contoh dari kedua pendekatan tersebut.

Mendaftarkan model di registri jarak jauh

Salah satu cara untuk mendaftarkan model adalah dengan menggunakan API mlflow.register_model:

mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

Contoh untuk metode pendaftaran model lainnya dapat ditemukan di buku catatan di akhir halaman ini.

Catatan

Mendaftarkan model di ruang kerja jarak jauh membuat salinan sementara artefak model di DBFS di ruang kerja jarak jauh. Anda mungkin ingin menghapus salinan ini setelah versi model dalam status READY. File sementara dapat ditemukan di bawah folder /dbfs/databricks/mlflow/tmp-external-source/<run-id>.

Anda juga dapat menentukan tracking_uri ke titik ke layanan Pelacakan MLflow di ruang kerja lain dengan cara yang mirip dengan registry_uri. Ini berarti Anda dapat menjalankan ruang kerja jarak jauh dan mendaftarkan modelnya di ruang kerja jarak jauh saat ini atau lainnya.

Menggunakan model dari registri jarak jauh

Anda dapat memuat dan menggunakan versi model dalam registri jarak jauh dengan metode mlflow.<flavor>.load_model dengan terlebih dahulu mengatur URI registri:

mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

Atau, Anda dapat secara eksplisit menentukan registri jarak jauh di URI models:/:

model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

Metode pembantu lain untuk mengakses file model juga didukung, seperti:

client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

Mengelola model di registri jarak jauh

Anda dapat melakukan tindakan apa pun pada model di registri jarak jauh selama Anda memiliki izin yang diperlukan. Misalnya, jika Anda memiliki izin CAN MANAGE pada model, Anda dapat mentransisikan tahap versi model atau menghapus model menggunakan MlflowClient metode:

client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Contoh buku catatan: Registri model jarak jauh

Buku catatan berikut ini berlaku untuk ruang kerja yang tidak diaktifkan untuk Katalog Unity. Ini menunjukkan cara mencatat model ke server pelacakan MLflow dari ruang kerja saat ini, dan mendaftarkan model ke Registri Model di ruang kerja yang berbeda. Databricks merekomendasikan penggunaan Model di Unity Catalog untuk berbagi model di seluruh ruang kerja.

Buku catatan contoh Registri Model Jarak Jauh

Dapatkan buku catatan