Membuat model kustom yang melayani titik akhir
Artikel ini menjelaskan cara membuat model yang melayani titik akhir yang melayani model kustom menggunakan Databricks Model Serving.
Model Serving menyediakan opsi berikut untuk melayani pembuatan titik akhir:
- Antarmuka pengguna Penyajian
- REST API
- SDK Penyebaran MLflow
Untuk membuat titik akhir yang melayani model AI generatif, lihat Membuat model AI generatif yang melayani titik akhir.
Persyaratan
- Ruang kerja Anda harus berada di wilayah yang didukung.
- Jika Anda menggunakan pustaka atau pustaka kustom dari server cermin privat dengan model Anda, lihat Menggunakan pustaka Python kustom dengan Model Melayani sebelum Anda membuat titik akhir model.
- Untuk membuat titik akhir menggunakan SDK Penyebaran MLflow, Anda harus menginstal klien Penyebaran MLflow. Untuk menginstalnya, jalankan:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Kontrol akses
Untuk memahami opsi kontrol akses untuk model yang melayani titik akhir untuk manajemen titik akhir, lihat Mengelola izin pada titik akhir penyajian model Anda.
Anda juga dapat menambahkan variabel lingkungan untuk menyimpan kredensial untuk penyajian model. Lihat Mengonfigurasi akses ke sumber daya dari titik akhir penyajian model
Membuat titik akhir
Melayani UI
Anda dapat membuat titik akhir untuk penyajian model dengan Antarmuka Pengguna penyajian.
Klik Sajikan di bar samping untuk menampilkan antarmuka pengguna Penyajian.
Klik Buat titik akhir penayangan.
Untuk model yang terdaftar di registri atau model model Ruang Kerja di Unity Catalog:
Di bidang Nama berikan nama untuk titik akhir Anda.
Di bagian Entitas yang dilayani
- Klik bidang Entitas untuk membuka formulir Pilih entitas yang dilayani.
- Pilih jenis model yang ingin Anda layani. Formulir diperbarui secara dinamis berdasarkan pilihan Anda.
- Pilih model dan versi model mana yang ingin Anda layani.
- Pilih persentase lalu lintas yang akan dirutekan ke model yang dilayani.
- Pilih komputasi ukuran apa yang akan digunakan. Anda dapat menggunakan komputasi CPU atau GPU untuk beban kerja Anda. Lihat Jenis beban kerja GPU untuk informasi selengkapnya tentang komputasi GPU yang tersedia.
- Di bawah Peluasan Skala Komputasi, pilih ukuran peluasan skala komputasi yang sesuai dengan jumlah permintaan yang dapat diproses model yang dilayani ini secara bersamaan. Angka ini harus kira-kira sama dengan waktu proses model QPS x.
- Ukuran yang tersedia adalah Kecil untuk 0-4 permintaan, permintaan Sedang 8-16, dan Besar untuk 16-64 permintaan.
- Tentukan apakah titik akhir harus diskalakan ke nol saat tidak digunakan.
Klik Buat. Halaman Titik akhir penayangan muncul dengan status Titik akhir penayangan ditampilkan sebagai Belum Siap.
REST API
Anda dapat membuat titik akhir menggunakan REST API. Lihat POST /api/2.0/serving-endpoints untuk parameter konfigurasi titik akhir.
Contoh berikut membuat titik akhir yang melayani versi ads1
pertama model yang terdaftar di registri model. Untuk menentukan model dari Unity Catalog, berikan nama model lengkap termasuk katalog dan skema induk seperti, catalog.schema.example-model
.
POST /api/2.0/serving-endpoints
{
"name": "workspace-model-endpoint",
"config":{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
},
{
"entity_name": "my-ads-model",
"entity_version": "4",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":{
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
},
{
"served_model_name": "my-ads-model-4",
"traffic_percentage": 20
}
]
}
},
"tags": [
{
"key": "team",
"value": "data science"
}
]
}
Berikut ini adalah contoh respons. Status titik config_update
akhir adalah NOT_UPDATING
dan model yang dilayani dalam keadaan READY
.
{
"name": "workspace-model-endpoint",
"creator": "user@email.com",
"creation_timestamp": 1700089637000,
"last_updated_timestamp": 1700089760000,
"state": {
"ready": "READY",
"config_update": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads-entity",
"entity_name": "my-ads-model-3",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true,
"workload_type": "CPU",
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1700089760000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "data science"
}
],
"id": "e3bd3e471d6045d6b75f384279e4b6ab",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
SDK Penyebaran MLflow
Penyebaran MLflow menyediakan API untuk membuat, memperbarui, dan menghapus tugas. API untuk tugas-tugas ini menerima parameter yang sama dengan REST API untuk melayani titik akhir. Lihat POST /api/2.0/serving-endpoints untuk parameter konfigurasi titik akhir.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="workspace-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "3",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model-3",
"traffic_percentage": 100
}
]
}
}
)
Anda juga dapat:
- Konfigurasikan titik akhir Anda untuk melayani beberapa model.
- Konfigurasikan titik akhir Anda untuk pengoptimalan rute.
- Konfigurasikan titik akhir Anda untuk mengakses sumber daya eksternal menggunakan Rahasia Databricks.
- Aktifkan tabel inferensi untuk menangkap permintaan masuk dan respons keluar secara otomatis ke titik akhir penyajian model Anda.
Jenis beban kerja GPU
Penyebaran GPU kompatibel dengan versi paket berikut:
- Pytorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 ke atas
Untuk menyebarkan model Anda menggunakan GPU, sertakan workload_type
bidang dalam konfigurasi titik akhir Anda selama pembuatan titik akhir atau sebagai pembaruan konfigurasi titik akhir menggunakan API. Untuk mengonfigurasi titik akhir Anda untuk beban kerja GPU dengan Antarmuka Pengguna penyajian, pilih jenis GPU yang diinginkan dari menu dropdown Jenis Komputasi.
{
"served_entities": [{
"name": "ads1",
"entity_version": "2",
"workload_type": "GPU_LARGE",
"workload_size": "Small",
"scale_to_zero_enabled": false,
}]
}
Tabel berikut ini meringkas jenis beban kerja GPU yang tersedia yang didukung.
Jenis beban kerja GPU | Instans GPU | Memori GPU |
---|---|---|
GPU_SMALL |
1xT4 | 16GB |
GPU_LARGE |
1xA100 | 80GB |
GPU_LARGE_2 |
2xA100 | 160GB |
Mengubah titik akhir model kustom
Setelah mengaktifkan titik akhir model kustom, Anda dapat memperbarui konfigurasi komputasi sesuai keinginan. Konfigurasi ini sangat membantu jika Anda memerlukan sumber daya tambahan untuk model Anda. Ukuran beban kerja dan konfigurasi komputasi memainkan peran kunci dalam sumber daya apa yang dialokasikan untuk melayani model Anda.
Hingga konfigurasi baru siap, konfigurasi lama terus melayani lalu lintas prediksi. Meskipun ada pembaruan yang sedang berlangsung, pembaruan lain tidak dapat dilakukan. Namun, Anda dapat membatalkan pembaruan yang sedang berlangsung dari Antarmuka Pengguna penayangan.
Melayani UI
Setelah Anda mengaktifkan titik akhir model, pilih Edit titik akhir untuk mengubah konfigurasi komputasi titik akhir Anda.
Anda dapat melakukan tindakan berikut:
- Pilih dari beberapa ukuran beban kerja, dan autoscaling secara otomatis dikonfigurasi dalam ukuran beban kerja.
- Tentukan apakah titik akhir Anda harus menurunkan skala ke nol saat tidak digunakan.
- Ubah persentase lalu lintas untuk merutekan ke model yang dilayani.
Anda dapat membatalkan pembaruan konfigurasi yang sedang berlangsung dengan memilih Batalkan pembaruan di kanan atas halaman detail titik akhir. Fungsionalitas ini hanya tersedia di Antarmuka Pengguna penyajian.
REST API
Berikut ini adalah contoh pembaruan konfigurasi titik akhir menggunakan REST API. Lihat PUT /api/2.0/serving-endpoints/{name}/config.
PUT /api/2.0/serving-endpoints/{name}/config
{
"name": "workspace-model-endpoint",
"config":{
"served_entities": [
{
"name": "ads-entity"
"entity_name": "my-ads-model",
"entity_version": "5",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":{
"routes": [
{
"served_model_name": "my-ads-model-5",
"traffic_percentage": 100
}
]
}
}
}
SDK Penyebaran MLflow
SDK Penyebaran MLflow menggunakan parameter yang sama dengan REST API, lihat PUT /api/2.0/serving-endpoints/{name}/config untuk detail skema permintaan dan respons.
Sampel kode berikut menggunakan model dari registri model Unity Catalog:
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name=f"{endpointname}",
config={
"served_entities": [
{
"entity_name": f"{catalog}.{schema}.{model_name}",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
],
"traffic_config": {
"routes": [
{
"served_model_name": f"{model_name}-1",
"traffic_percentage": 100
}
]
}
}
)
Menilai titik akhir model
Untuk menilai model Anda, kirim permintaan ke model yang melayani titik akhir.
- Lihat Kueri yang melayani titik akhir untuk model kustom.
- Lihat Model fondasi kueri dan model eksternal.
Sumber Daya Tambahan:
- Mengelola model yang melayani titik akhir.
- Kueri yang melayani titik akhir untuk model kustom.
- Model fondasi kueri dan model eksternal.
- Model eksternal dalam Mosaic AI Model Serving.
- Tabel inferensi untuk model pemantauan dan penelusuran kesalahan.
- Jika Anda lebih suka menggunakan Python, Anda dapat menggunakan Databricks real-time melayani Python SDK.
Contoh buku catatan
Notebook berikut menyertakan berbagai model terdaftar Databricks yang dapat Anda gunakan untuk memulai dan menjalankan model yang melayani titik akhir.
Contoh model dapat diimpor ke ruang kerja dengan mengikuti petunjuk dalam Mengimpor buku catatan. Setelah Anda memilih dan membuat model dari salah satu contoh, daftarkan di MLflow Model Registry, lalu ikuti langkah-langkah alur kerja UI untuk penyajian model.