Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette page explique comment utiliser des déploiements express sur vos endpoints de diffusion de modèles. Les déploiements Express réduisent les temps de déploiement et conservent l’environnement de service du modèle identique à celui de l’environnement d’entraînement du modèle.
Note
Les déploiements Express étaient auparavant appelés déploiements optimisés sans serveur.
Qu’est-ce que les déploiements express ?
Les déploiements Express empaquettent et préparent les artefacts du modèle dans des environnements de notebooks sans serveur lors de l’enregistrement du modèle. Cela accélère le déploiement du point de terminaison et assure la cohérence des environnements d’entraînement et de service.
Dans les déploiements non express, les artefacts de modèle et les environnements sont empaquetés dans des conteneurs au moment du déploiement. L’environnement de service peut donc ne pas correspondre à celui utilisé pendant l’entraînement du modèle.
Déploiements standard ou express
Le tableau suivant compare un déploiement standard et un déploiement express.
| Aspect | Déploiement standard | Déploiement Rapide |
|---|---|---|
| Lorsque l’environnement est créé | Une image conteneur est générée au moment du déploiement. | Les artefacts et l’environnement sont empaquetés lorsque vous inscrivez le modèle. |
| Formation et environnement de service | L’environnement de service peut ne pas correspondre à l’environnement d’entraînement. | L’environnement de service est identique à l’environnement du notebook que vous avez utilisé pour l’enregistrement. |
| Vitesse de déploiement | Lentement. Le déploiement est en attente de la construction d’une image de conteneur. | Plus rapide. Le déploiement saute la création de l’image de conteneur. |
| Vitesse d’inscription | Norme. | La création du package prend de quelques secondes à une minute, selon la taille du modèle et de l’environnement. |
| Journal des événements de déploiement | Affiche les événements de création d’images de conteneurs. | N’affiche pas les événements de création d’images de conteneur. |
Les déploiements express déplacent l’opération d’empaquetage effectuée une seule fois au moment de l’enregistrement du modèle, ce qui ajoute de quelques secondes à une minute à un appel register_model, selon la taille du modèle et de l’environnement. En échange, le déploiement est beaucoup plus rapide : il ignore entièrement la build de l’image conteneur. Cette compilation est également une source courante d’échecs de déploiement (résolution des dépendances, erreurs de génération d’image) ; la sauter permet donc d’éliminer toute une catégorie de problèmes. Le journal des événements de déploiement d’un modèle express ne contient aucun événement de génération de conteneur.
Requirements
Les points de terminaison de déploiement Express ont les mêmes exigences qu’un point de terminaison de service de modèle. Consultez Spécifications.
De plus,:
- Le modèle doit être un modèle personnalisé
- Le modèle doit être journalisé et enregistré dans un Notebook serverless avec la version 3 ou ultérieure
- Le modèle doit être journalisé et enregistré avec
mlflow>=3.12etdatabricks-sdk>=0.102.0 - Le modèle doit être inscrit dans le catalogue Unity. Le calcul de service doit correspondre au calcul à partir duquel le modèle a été inscrit. Vous pouvez effectuer l’enregistrement à partir d’un notebook serverless standard pour un déploiement sur CPU, ou à partir d’un environnement de calcul GPU serverless pour un déploiement sur GPU.
- La taille maximale de l’environnement du modèle est de 200 Go
Note
Pour servir un LLM personnalisé sur le calcul GPU à l’aide de déploiements express, consultez Servir des llms personnalisés avec service de modèle personnalisé.
Déployer un reranker sur GPU
Ce guide pas à pas déploie BAAI/bge-reranker-base, un rerankeur à encodeur croisé qui évalue dans quelle mesure un document répond à une requête. Il configure l’environnement, les journaux et inscrit le modèle avec l’empaquetage rapide, déploie le point de terminaison et le interroge.
Les déploiements GPU échouent souvent en raison de conflits de version de dépendance, par exemple torch , et CUDA. Les déploiements Express résolvent cela de deux manières :
- L’ensemble fixe et publié de bibliothèques préinstallées dans chaque version de l’environnement GPU serverless est présent pendant le service exactement tel qu’il se trouve dans le notebook , la même version d’environnement, les mêmes versions. Ces bibliothèques ne sont pas repackagenées.
- Toutes les dépendances supplémentaires que vous installez dans la session de notebook (par exemple, avec
%pip install) sont empaquetées pendant l’inscription et restaurées pendant le service.
Ensemble, cela signifie qu’un modèle qui s’exécute dans votre bloc-notes continue de fonctionner quand il est servi.
Étape 1 : Configurer un notebook GPU serverless
Créez un notebook sur un calcul GPU sans serveur avec un GPU A10, et sélectionnez l’environnement version 5, environnement d’IA. L’environnement IA inclut PyTorch et les bibliothèques de Machine Learning courantes (torchet transformersd’autres). Pour connaître les versions épinglées exactes, consultez l’environnement GPU serverless version 5 (préversion).
Installez les packages requis pour le déploiement rapide :
# 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
Vous pouvez également déclarer des dépendances via un environnement serverless, mais l’installation dans le notebook est le chemin le plus simple. Développez en vous basant sur les versions figées de l’environnement afin que l’environnement du notebook corresponde à l’environnement de production.
Étant donné que ce modèle est servi sur GPU, vous devez le journaliser et l’inscrire à partir d’un runtime GPU serverless. Si vous vous connectez à partir d’un calcul processeur serverless par accident, le modèle est empaqueté avec les dépendances du processeur et le point de terminaison de service GPU ne parvient pas à démarrer. Ajoutez la vérification suivante pour échouer rapidement si le notebook n’est pas sur un 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
Cette vérification est nécessaire uniquement, car le reranker est servi sur GPU. Un modèle d’UC n’en a pas besoin.
Étape 2 : Journaliser le modèle avec MLflow
Chargez le modèle de reranking comme pipeline text-classification et journalisez-le au format natif mlflow.transformers. Le format natif capture automatiquement les dépendances pip du modèle et s’exécute sur le GPU. Vous n’avez pas besoin de définir pip_requirements, un taskou un point d’entrée.
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
N’inscrivez pas le modèle avec l’argument registered_model_name de log_model. Cet argument n’accepte env_packpas , il inscrit donc un modèle non express. Pour activer le déploiement express, inscrivez-vous à une étape distincte avec register_model (étape 3), qui accepte env_pack.
Étape 3 : Inscrire le modèle dans le catalogue Unity avec l’empaquetage rapide
Inscrivez le modèle dans Le catalogue Unity et définissez le paramètre pour activer le env_pack déploiement express. Cela regroupe les artefacts du modèle et les dépendances que vous avez ajoutées à la session du notebook au moment de l’enregistrement, afin que le service les réutilise par-dessus les bibliothèques préinstallées de la version de l’environnement.
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"),
)
Vous pouvez utiliser la chaîne abrégée env_pack="databricks_model_serving" à la place de EnvPackConfig(name="databricks_model_serving"). Pour les espaces de travail sans accès à Internet ou avec des bibliothèques personnalisées, définissez install_dependencies=False (voir Le env_pack paramètre).
L’inscription nécessite databricks-sdk>=0.102.0. Les versions antérieures peuvent expirer lors du chargement d’artefacts de modèle volumineux.
Étape 4 : Créer un point de terminaison de service
Déployez le modèle inscrit avec le Kit de développement logiciel (SDK) Azure Databricks. Cette étape de déploiement est la même que pour n’importe quel modèle personnalisé. Seule l’étape d’inscription (étape 3) diffère pour express.
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 bloque jusqu’à ce que le point de terminaison soit prêt.
GPU_SMALL est suffisant pour ce système de reclassement. Étant donné que le service réutilise la même version d’environnement et restaure les dépendances que vous avez ajoutées dans le notebook, le modèle servi s’exécute sur les mêmes versions de bibliothèque que celles que vous avez développées, quel que soit le type gpu.
Pendant le déploiement du point de terminaison, ouvrez l’onglet Événements du point de terminaison dans l’interface utilisateur de service. Étant donné qu’il s’agit d’un déploiement rapide, le journal des événements n’affiche pas les événements de création d’images conteneur (un déploiement standard s’affiche Container image creation initiated suivi de Container image creation finished successfully). Une fois le point de terminaison terminé, son état indique Prêt.
Étape 5 : Interroger le point de terminaison
Un encodeur croisé attribue un score à une requête par rapport à un document, envoyez donc les champs text et text_pair. Interrogez par programmation avec le Kit de développement logiciel (SDK) Databricks ou curl.
Kit de développement logiciel (SDK) Databricks
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
Le point de terminaison retourne un score de pertinence pour chaque paire de documents de requête ; des scores plus élevés indiquent une meilleure correspondance. Utilisez ces scores pour reclasser les documents candidats.
Exemple de bloc-notes
Importez le bloc-notes suivant pour exécuter cette procédure pas à pas de bout en bout.
Bloc-notes de démarrage Express reranker
Obtenir un ordinateur portable
Paramètre env_pack
Le guide de démarrage rapide ci-dessus montre un déploiement rapide pour un modèle GPU. Les déploiements Express fonctionnent également pour les modèles de processeur. Dans tous les cas, vous activez le déploiement rapide en passant env_pack à 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 compile et prépare les artefacts du modèle ainsi que les dépendances que vous avez ajoutées à la session du notebook lors de l’enregistrement, c’est pourquoi l’enregistrement prend plus de temps qu’un appel n’utilisant pas env_pack.
EnvPackConfig accepte un install_dependencies paramètre (True par défaut). Quand True, les dépendances du modèle sont installées dans l’environnement actuel pour confirmer que l’environnement est valide.
Note
L’enregistrement peut échouer dans les espaces de travail sans accès à Internet, ou lorsque le modèle dépend de bibliothèques personnalisées, si install_dependencies est True. Dans ces cas, définissez install_dependencies à False.
Vous pouvez remplacer la chaîne EnvPackConfig(...) par "databricks_model_serving" comme forme abrégée. Elle équivaut à EnvPackConfig(name="databricks_model_serving", install_dependencies=True).