Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Halaman ini menjelaskan cara menggunakan penyebaran ekspres pada model Anda yang melayani titik akhir. Penyebaran ekspres menurunkan waktu penyebaran dan menjaga model tetap melayani lingkungan yang sama dengan lingkungan pelatihan model.
Note
Penyebaran ekspres sebelumnya disebut penyebaran yang dioptimalkan tanpa server.
Apa itu penyebaran ekspres?
Paket penyebaran ekspres dan artefak model tahap di lingkungan notebook tanpa server selama pendaftaran model. Ini mempercepat penyebaran titik akhir dan menjaga pelatihan dan melayani lingkungan tetap konsisten.
Dalam penyebaran non-ekspres, artefak dan lingkungan model dipaketkan ke dalam kontainer pada waktu penyebaran, sehingga lingkungan penyajian mungkin tidak cocok dengan yang digunakan selama pelatihan model.
Penyebaran standar vs ekspres
Tabel berikut membandingkan penyebaran standar dan penyebaran ekspres.
| Aspek | Penyebaran standar | Penerapan cepat |
|---|---|---|
| Saat lingkungan dibangun | Image kontainer dibuat pada saat deployment. | Artefak dan lingkungan dibungkus saat Anda mendaftarkan model. |
| Lingkungan pelatihan dan penyajian | Lingkungan penyajian mungkin tidak cocok dengan lingkungan pelatihan. | Lingkungan penyajian identik dengan lingkungan notebook tempat Anda mendaftar. |
| Kecepatan penyebaran | Lambat. Deploy menunggu proses build image kontainer selesai. | Lebih Cepat Penerapan melewati proses pembuatan image kontainer. |
| Kecepatan pendaftaran | Standar. | Memerlukan tambahan beberapa detik hingga satu menit untuk pengemasan, bergantung pada model dan ukuran lingkungan. |
| Log peristiwa penerapan | Menampilkan peristiwa pembuatan gambar kontainer. | Tidak menampilkan peristiwa pembuatan gambar kontainer. |
Penyebaran ekspres memindahkan pekerjaan pengemasan satu kali ke tahap pendaftaran model, yang menambah waktu beberapa detik hingga satu menit pada panggilan register_model, bergantung pada model dan ukuran lingkungan. Sebagai imbalannya, deployment jauh lebih cepat: proses pembuatan image kontainer dilewati sepenuhnya. Proses build tersebut juga merupakan sumber umum kegagalan deployment (penyelesaian dependensi, kesalahan saat membangun image), sehingga melewatinya menghilangkan satu kelompok masalah secara keseluruhan. Log peristiwa penyebaran untuk model ekspres tidak berisi peristiwa build kontainer.
Requirements
Titik akhir penyebaran ekspres memiliki persyaratan yang sama dengan model yang melayani titik akhir. Lihat Persyaratan.
Sebagai tambahan:
- Model harus berupa model kustom
- Model harus dicatat dan didaftarkan di Notebook Tanpa Server menggunakan versi 3 atau yang lebih baru
- Model harus dicatat dan didaftarkan dengan
mlflow>=3.12dandatabricks-sdk>=0.102.0 - Model harus terdaftar di Katalog Unity. Komputasi penyajian harus sesuai dengan komputasi tempat model didaftarkan. Anda dapat mendaftar dari notebook tanpa server reguler untuk dilayani di CPU, atau dari komputasi GPU tanpa server untuk dilayani di GPU.
- Ukuran lingkungan maksimum model adalah 200GB
Note
Untuk melayani LLM kustom pada komputasi GPU menggunakan penyebaran ekspres, lihat Melayani LLM kustom dengan Layanan Model Kustom.
Menjalankan reranker di GPU
Panduan ini menerapkan BAAI/bge-reranker-base, pemeringkat ulang enkoder silang yang menilai seberapa baik sebuah dokumen menjawab kueri. Ini menyiapkan lingkungan, mencatat log dan mendaftarkan model dengan packaging Express, menerapkan endpoint, dan membuat kueri ke endpoint tersebut.
Penyebaran GPU sering gagal karena konflik versi dependensi, misalnya, torch dan CUDA. Penyebaran ekspres menyelesaikan ini dengan dua cara:
- Kumpulan pustaka tetap yang dipublikasikan dan telah diprainstal pada setiap versi lingkungan GPU nirserver tersedia saat serving persis seperti di notebook — versi lingkungan yang sama, versi pustaka yang sama. Pustaka ini tidak dikemas ulang.
- Setiap dependensi tambahan yang Anda instal di sesi notebook (misalnya, dengan
%pip install) akan dikemas saat didaftarkan dan dipulihkan saat penyajian.
Dengan demikian, model yang berjalan di notebook Anda tetap berfungsi saat di-deploy.
Langkah 1: Menyiapkan buku catatan GPU tanpa server
Buat buku catatan di komputasi GPU tanpa server dengan GPU A10, dan pilih lingkungan versi 5, lingkungan AI. Lingkungan AI mencakup PyTorch dan pustaka pembelajaran mesin umum (torch, , transformersdan lainnya). Untuk versi yang disematkan secara tepat, lihat Lingkungan GPU Tanpa Server versi 5 (Pratinjau).
Instal paket yang diperlukan untuk deployment Express:
# Express deployment requires recent MLflow and Databricks SDK versions.
%pip install "mlflow>=3.12" "databricks-sdk>=0.102.0"
# Install the libraries your model needs. transformers is preinstalled in the
# v5 AI environment; install it explicitly because this model depends on it.
%pip install transformers
%restart_python
Anda juga dapat mendeklarasikan dependensi melalui lingkungan tanpa server, tetapi menginstal di notebook adalah jalur paling sederhana. Lakukan pengembangan menggunakan versi lingkungan yang telah ditetapkan agar lingkungan notebook sesuai dengan lingkungan penyajian.
Karena model ini disajikan pada GPU, Anda harus mencatat dan mendaftarkannya dari runtime GPU tanpa server. Jika Anda log dari komputasi CPU tanpa server secara tidak sengaja, model dikemas dengan dependensi CPU dan titik akhir penyajian GPU gagal dimulai. Tambahkan pemeriksaan berikut agar segera gagal jika notebook tidak berjalan pada runtime GPU:
import os
# This model is intended to be served on GPU, so we must log and register from a Serverless GPU runtime.
if not os.environ.get("DATABRICKS_ACCELERATOR"):
raise RuntimeError(
"This model MUST be logged+registered from a serverless GPU runtime, otherwise the correct dependencies will not be packaged for serving."
)
Note
Pemeriksaan ini hanya diperlukan karena reranker dijalankan di GPU. Model CPU tidak membutuhkannya.
Langkah 2: Catat model dengan MLflow
Muatkan reranker sebagai pipeline text-classification dan catat log-nya dengan flavor native mlflow.transformers. Varian native secara otomatis mencatat dependensi pip dari model dan berjalan di GPU. Anda tidak perlu mengatur pip_requirements, task, atau entry point.
import mlflow
from transformers import pipeline
# BAAI/bge-reranker-base is a cross-encoder reranker: it scores how well a document answers a query.
pipe = pipeline("text-classification", model="BAAI/bge-reranker-base")
model_info = mlflow.transformers.log_model(
transformers_model=pipe,
name="bge_reranker",
input_example={
"text": "What is Databricks?",
"text_pair": "Databricks is a data and AI company.",
},
)
Important
Jangan mendaftarkan model dengan argumen registered_model_name dari log_model. Argumen tersebut tidak menerima env_pack, sehingga mendaftarkan model non-ekspres. Untuk mengaktifkan deployment ekspres, lakukan pendaftaran dalam langkah terpisah dengan register_model (Langkah 3), yang menerima env_pack.
Langkah 3: Daftarkan model ke Unity Catalog dengan kemasan ekspres
Daftarkan model ke Unity Catalog dan atur env_pack parameter untuk mengaktifkan penyebaran ekspres. Ini mengemas artefak model dan dependensi yang Anda tambahkan ke sesi notebook selama proses pendaftaran, sehingga proses serving dapat menggunakannya kembali di atas pustaka bawaan yang sudah terpasang dari versi lingkungan tersebut.
import mlflow
from mlflow.utils.env_pack import EnvPackConfig
mlflow.set_registry_uri("databricks-uc")
model_version = mlflow.register_model(
model_uri=model_info.model_uri,
name="main.default.bge_reranker",
env_pack=EnvPackConfig(name="databricks_model_serving"),
)
Anda dapat menggunakan string shorthand env_pack="databricks_model_serving" sebagai pengganti EnvPackConfig(name="databricks_model_serving"). Untuk ruang kerja tanpa akses internet atau dengan pustaka kustom, atur install_dependencies=False (lihat Parameterenv_pack).
Pendaftaran memerlukan databricks-sdk>=0.102.0. Versi sebelumnya dapat kehabisan waktu saat mengunggah artefak model besar.
Langkah 4: Membuat titik akhir penyajian
Sebarkan model terdaftar dengan SDK Azure Databricks. Langkah penyebaran ini sama dengan untuk model kustom apa pun — hanya langkah pendaftaran (Langkah 3) yang berbeda untuk ekspres.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import (
EndpointCoreConfigInput,
ServedEntityInput,
ServingModelWorkloadType,
)
ENDPOINT_NAME = "bge-reranker-endpoint"
w = WorkspaceClient()
w.serving_endpoints.create_and_wait(
name=ENDPOINT_NAME,
config=EndpointCoreConfigInput(
name=ENDPOINT_NAME,
served_entities=[
ServedEntityInput(
name="bge-reranker",
entity_name=model_version.name,
entity_version=model_version.version,
workload_type=ServingModelWorkloadType.GPU_SMALL,
workload_size="Small",
scale_to_zero_enabled=False,
)
],
),
)
create_and_wait memblokir hingga titik akhir siap.
GPU_SMALL cukup untuk reranker ini. Karena penyajian model menggunakan kembali versi lingkungan yang sama dan memulihkan dependensi yang Anda tambahkan di notebook, model yang disajikan berjalan menggunakan versi pustaka yang sama seperti saat Anda mengembangkannya, terlepas dari jenis GPU.
Saat endpoint sedang di-deploy, buka tab Event milik endpoint tersebut di UI Serving. Karena ini adalah penyebaran ekspres, log peristiwa tidak menampilkan peristiwa pembuatan gambar kontainer (penyebaran standar menunjukkan Container image creation initiated diikuti oleh Container image creation finished successfully). Ketika titik akhir selesai, statusnya menunjukkan Siap.
Langkah 5: Mengkueri titik akhir
Cross-encoder memberi skor pada kueri terhadap dokumen, jadi kirim field text dan text_pair. Kueri secara terprogram dengan Databricks SDK atau curl.
Databricks SDK
w.serving_endpoints.query(
name=ENDPOINT_NAME,
dataframe_records=[
{"text": "What is Databricks?", "text_pair": "Databricks is a data and AI company."},
],
)
curl
curl -X POST \
-u "token:$DATABRICKS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"dataframe_records":[{"text":"What is Databricks?","text_pair":"Databricks is a data and AI company."}]}' \
https://<workspace-url>/serving-endpoints/bge-reranker-endpoint/invocations
Titik akhir mengembalikan skor relevansi untuk setiap pasangan kueri-dokumen; skor yang lebih tinggi menunjukkan kecocokan yang lebih baik. Gunakan skor ini untuk melakukan rerank dokumen kandidat.
Contoh buku catatan
Import notebook berikut untuk menjalankan panduan ini dari awal hingga akhir.
Notebook pemula reranker Express
Parameter env_pack
Panduan memulai cepat di atas menunjukkan penerapan cepat untuk model GPU. Penyebaran ekspres juga berfungsi untuk model CPU. Dalam setiap kasus, Anda mengaktifkan penyebaran ekspres dengan meneruskan env_pack ke register_model:
import mlflow
from mlflow.utils.env_pack import EnvPackConfig
mlflow.register_model(
model_info.model_uri,
model_name,
env_pack=EnvPackConfig(name="databricks_model_serving"),
)
env_pack mengemas dan menyiapkan artefak model serta dependensi yang Anda tambahkan ke sesi notebook saat pendaftaran, itulah sebabnya proses pendaftaran memerlukan waktu lebih lama daripada pemanggilan tanpa env_pack.
EnvPackConfig menerima parameter install_dependencies (True secara bawaan). Saat True, dependensi model diinstal di lingkungan saat ini untuk memastikan lingkungan tersebut valid.
Note
Registrasi dapat gagal pada ruang kerja tanpa akses internet, atau saat model bergantung pada pustaka kustom, jika install_dependencies adalah True. Dalam kasus ini, atur install_dependencies ke False.
Anda dapat mengganti string "databricks_model_serving"EnvPackConfig(...) sebagai singkatan. Ini setara dengan EnvPackConfig(name="databricks_model_serving", install_dependencies=True).