Uç noktalara hizmet veren model için hızlı dağıtımlar

Bu sayfa, model sunumu uç noktalarınızda hızlı dağıtımların nasıl kullanılacağını açıklar. Hızlı dağıtımlar dağıtım sürelerini düşürür ve model sunum ortamını model eğitim ortamıyla aynı tutar.

Note

Hızlı dağıtımlar daha önce sunucusuz iyileştirilmiş dağıtımlar olarak adlandırılıyordu.

Hızlı dağıtımlar nedir?

Express dağıtımları, model kaydı sırasında sunucusuz notebook ortamlarında model yapıtlarını paketler ve aşamalandırır. Bu, uç nokta dağıtımını hızlandırır ve eğitim ile hizmet ortamlarının tutarlı kalmasını sağlar.

Hızlı olmayan dağıtımlarda, model yapıtları ve ortamları dağıtım zamanında kapsayıcılar halinde paketlenir, bu nedenle sunum ortamı model eğitimi sırasında kullanılan ortamla eşleşmeyebilir.

Standart ve hızlı dağıtımlar

Aşağıdaki tabloda standart dağıtım ile hızlı dağıtım karşılaştırılmakta.

Aspect Standart dağıtım Hızlı dağıtım
Ortam oluşturulduğunda Kapsayıcı görüntüsü dağıtım zamanında oluşturulur. Yapıtlar ve ortam, modeli kaydettiğinizde paketlenir.
Eğitim ve hizmet ortamı Sunum ortamı eğitim ortamıyla eşleşmeyebilir. Sunum ortamı, kaydettiğiniz not defteri ortamıyla aynıdır.
Dağıtım hızı Yavaş. Dağıtım, kapsayıcı imajının oluşturulmasını bekler. Daha hızlı. Dağıtım işlemi, kapsayıcı görüntüsünün oluşturulması adımını atlar.
Kayıt hızı Standart. Modele ve ortam boyutuna bağlı olarak paketleme için saniyeleri bir dakikaya ekler.
Dağıtım olay günlüğü Konteyner imajı oluşturma olaylarını gösterir. Kapsayıcı görüntüsü oluşturma olaylarını göstermez.

Ekspres dağıtımlar, tek seferlik paketleme işlemini model kaydı aşamasına taşır; bu da model ve ortam boyutuna bağlı olarak bir register_model çağrısına birkaç saniyeden bir dakikaya kadar ek süre ekler. Buna karşılık, dağıtım süreci önemli ölçüde daha hızlıdır: kapsayıcı imajı oluşturma adımını tamamen atlar. Bu derleme aynı zamanda dağıtım hatalarının yaygın nedenlerinden biridir (bağımlılık çözümleme sorunları, imaj derleme hataları), bu nedenle bunu atlamak bütün bir sorun sınıfını ortadan kaldırır. Ekspres modelin dağıtım olay günlüğü, kapsayıcı oluşturma olayları içermez.

Requirements

Hızlı dağıtım uç noktaları, uç noktaya hizmet veren bir modelle aynı gereksinimlere sahiptir. Bkz . Gereksinimler.

Ayrıca:

  • Model özel bir model olmalıdır
  • Model, 3 veya sonraki bir sürüm kullanılarak sunucusuz not defterine kaydedilip kaydedilmelidir
  • Model, mlflow>=3.12 ve databricks-sdk>=0.102.0 ile günlüğe kaydedilmeli ve kayıt altına alınmalıdır.
  • Modelin Unity Kataloğu'na kaydedilmesi gerekir. Sunum için kullanılan hesaplama kaynağı, modelin kaydedildiği hesaplama kaynağıyla eşleşmelidir. CPU'da hizmet vermek için normal bir sunucusuz not defterinden veya GPU'da hizmet vermek için sunucusuz GPU işlemlerinden kaydolabilirsiniz.
  • Modelin maksimum ortam boyutu 200 GB'tır

Note

GPU işlem gücü üzerinde ekspres dağıtımları kullanarak özel bir LLM sunmak için bkz. Özel Model Sunumu ile özel LLM'leri sunma.

GPU üzerinde reranker dağıtın

Bu kılavuz, bir belgenin bir sorguyu ne kadar iyi yanıtladığını puanlayan çapraz kodlayıcı yeniden sıralayıcı BAAI/bge-reranker-base'ı dağıtıma alır. Ortamı ayarlar, modeli hızlı paketleme ile günlüğe kaydeder, uç noktayı dağıtır ve sorgular.

GPU dağıtımları genellikle bağımlılık sürümü çakışmaları (örneğin, torch ve CUDA) nedeniyle başarısız olur. Hızlı dağıtımlar bunu iki yolla çözer:

  • Her sunucusuz GPU ortamı sürümüne önceden yüklenmiş sabit, yayımlanmış kitaplık kümesi, sunum sırasında not defterindekiyle tam olarak aynı şekilde mevcuttur — aynı ortam sürümü, aynı sürümler. Bu kitaplıklar yeniden paketlenmez.
  • Not defteri oturumuna yüklediğiniz tüm ek bağımlılıklar (örneğin, ile %pip install) kayıt sırasında paketlenir ve sunum sırasında geri yüklenir.

Bu birlikte, not defterinizde çalışan bir modelin hizmet sunulduğunda çalışmaya devam ettiğini gösterir.

1. Adım: Sunucusuz bir GPU not defteri ayarlayın

A10 GPU ile sunucusuz GPU işlemlerinde bir not defteri oluşturun ve ortam sürüm 5, yapay zeka ortamını seçin. Yapay zeka ortamı PyTorch ve yaygın makine öğrenmesi kitaplıklarını (torch, transformersve diğerlerini) içerir. Tam olarak sabitlenen sürümler için bkz. Sunucusuz GPU ortamının 5. sürümü (Önizleme).

Hızlı dağıtım gerektiren paketleri yükleyin:

# 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

Bağımlılıkları sunucusuz bir ortam aracılığıyla da bildirebilirsiniz, ancak not defterine yüklemek en basit yoldur. Not defteri ortamının servis ortamıyla eşleşmesi için, ortamın sabitlenmiş sürümlerini kullanarak geliştirme yapın.

Bu model GPU üzerinde sunulduğu için, onu sunucusuz bir GPU çalışma zamanı ortamından günlüğe alıp kaydetmeniz gerekir. Sunucusuz CPU işlemden yanlışlıkla oturum açarsanız model CPU bağımlılıklarıyla paketlenmiştir ve GPU sunum uç noktası başlatılamaz. Not defteri GPU çalışma zamanında değilse hızlı başarısız olmak için aşağıdaki denetimi ekleyin:

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

Bu kontrol yalnızca yeniden sıralayıcı GPU üzerinde çalıştığı için gereklidir. CPU modelinin buna ihtiyacı yoktur.

2. Adım: Modeli MLflow ile kaydedin

Reranker’ı bir text-classification işlem hattı olarak yükleyin ve yerel mlflow.transformers formatını kullanarak günlüğe kaydedin. Yerel sürüm, modelin pip bağımlılıklarını otomatik olarak tespit eder ve GPU’da çalışır. pip_requirements, bir task veya giriş noktası ayarlamanız gerekmez.

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

Modeli, registered_model_name öğesinin log_model argümanıyla kaydetmeyin. Bu argüman env_pack kabul etmez, bu nedenle express olmayan bir model kaydeder. Hızlı dağıtımı etkinleştirmek için, register_model kabul eden env_pack ile ayrı bir adımda kaydolun (3. Adım).

3. Adım: Hızlı paketleme ile modeli Unity Kataloğu'na kaydetme

Modeli Unity Kataloğu'na kaydedin ve hızlı dağıtımı etkinleştirmek için parametresini ayarlayın env_pack . Bu işlem, kayıt sırasında model artefaktlarını ve not defteri oturumuna eklediğiniz bağımlılıkları paketler; böylece sunum, bunları ortam sürümünde önceden yüklenmiş kitaplıkların üzerine ek olarak yeniden kullanır.

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

env_pack="databricks_model_serving" yerine EnvPackConfig(name="databricks_model_serving") dize kısaltmasını kullanabilirsiniz. İnternet erişimi olmayan veya özel kitaplıklara sahip çalışma alanları için install_dependencies=False ayarını yapın (bkz. env_pack parametresi).

Kayıt için databricks-sdk>=0.102.0gerekir. Önceki sürümlerde büyük model artefaktları yüklenirken zaman aşımına uğranabilir.

4. Adım: Sunum uç noktası oluşturma

Kayıtlı modeli Azure Databricks SDK'sı ile dağıtın. Bu dağıtım adımı herhangi bir özel modelle aynıdır; yalnızca kayıt adımı (3. Adım) express için farklılık gösterir.

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 uç nokta hazır olana kadar engeller. GPU_SMALL bu yeniden sıralayıcı için yeterlidir. Hizmet sunma işlemi aynı ortam sürümünü yeniden kullanacağından ve not defterine eklediğiniz bağımlılıkları geri yüklediğinden, sunulan model GPU türünden bağımsız olarak geliştirdiğiniz aynı kitaplık sürümlerine karşı çalışır.

Uç nokta dağıtılırken, Hizmet Sunma kullanıcı arabiriminde uç noktanın Olaylar sekmesini açın. Bu bir ekspres dağıtım olduğundan, olay günlüğü kapsayıcı görüntüsü oluşturma olaylarını göstermez (standart bir dağıtımda önce Container image creation initiated, ardından Container image creation finished successfully gösterilir). Uç nokta tamamlandığında durumu Hazır olarak gösterilir.

5. Adım: Uç noktayı sorgulama

Çapraz kodlayıcı, bir sorguyu bir belgeye göre puanladığından text ve text_pair alanlarını gönderin. Databricks SDK veya curl ile program aracılığıyla sorgulama.

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

Uç nokta, her sorgu-belge çifti için bir ilgi puanı döndürür; daha yüksek puanlar daha iyi bir eşleşme olduğunu gösterir. Aday belgeleri yeniden sıralamak için bu puanları kullanın.

Örnek defter

Bu kılavuzu uçtan uca çalıştırmak için aşağıdaki not defterini içeri aktarın.

Express reranker başlangıç not defteri

Dizüstü bilgisayar al

env_pack parametresi

Yukarıdaki hızlı başlangıç, bir GPU modeli için basitleştirilmiş dağıtımı gösterir. Hızlı dağıtımlar CPU modellerinde de çalışır. Her durumda, env_pack öğesini register_model öğesine geçirerek hızlı dağıtımı etkinleştirirsiniz:

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, kayıt sırasında not defteri oturumuna eklediğiniz model artefaktlarını ve bağımlılıkları paketler ve hazırlar; bu nedenle kayıt işlemi, env_pack olmadan yapılan bir çağrıya göre daha uzun sürer.

EnvPackConfig bir install_dependencies parametre kabul eder (True varsayılan olarak). True olduğunda, modelin bağımlılıkları, ortamın geçerli olduğunu doğrulamak için geçerli ortama yüklenir.

Note

Kayıt, internet erişimi olmayan çalışma alanlarında veya model özel kitaplıklara bağımlı olduğunda, install_dependenciesTrue ise başarısız olabilir. Bu gibi durumlarda install_dependencies'yı False olarak ayarlayın.

"databricks_model_serving" yerine EnvPackConfig(...) dizesini kısaltma olarak kullanabilirsiniz. ile eşdeğerdir EnvPackConfig(name="databricks_model_serving", install_dependencies=True).