Créer des services de modèles de fondation Endpoint
Dans cet article, vous apprendrez comment créer des Endpoint de service de modèle qui déploient et servent des modèles de fondation.
Model Serving prend en charge les modèles suivants :
-
Modèles externes. Ce sont des modèles de base qui sont hébergés en dehors de Databricks. Les Endpoints qui servent des modèles externes peuvent être régis de manière centralisée et les clients peuvent établir des limites de débit et un contrôle d'accès pour ceux-ci. Les exemples incluent des modèles de fondation comme GPT-4 d'OpenAI et Claude d'Anthropic.
-
Modèles de fondation ouverts de pointe mis à disposition par les APIs de modèle de fondation. Ces modèles sont des architectures de modèle de fondation organisées qui prennent en charge l’inférence optimisée. Des modèles de base, comme Meta-Llama-3.3-70B-Instruct et GTE-Large, sont disponibles pour une utilisation immédiate avec la tarification au paiement par jeton . Les charges de travail de production, utilisant des modèles de base ou affinés, peuvent être déployées avec des garanties de performance grâce au throughput provisionné .
Model Serving offre les options suivantes pour la création d'endpoints de déploiement de modèles :
- L'Interface utilisateur de déploiement
- API REST
- SDK de déploiements MLflow
Pour la création d'Endpoint qui servent des modèles de ML traditionnels ou Python, consultez Créer des Endpoint de service de modèle personnalisés.
Exigences
-
Un Databricks Workspace dans une région prise en charge.
-
Pour créer des endpoints à l'aide du SDK MLflow Deployments, vous devez installer le client MLflow Deployment. Pour l'installer, exécutez :
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Créer un Endpoint de déploiement de modèle de fondation
Vous pouvez créer un Endpoint qui sert des variantes affinées de modèles de fondation mis à disposition à l'aide des APIs de modèles de fondation avec un **throughput provisionné**. Voir Créer votre endpoint de throughput provisionné à l'aide de l'API REST.
Pour les modèles de fondation qui sont rendus disponibles via les API de modèle de fondation paiement par jeton , Databricks fournit automatiquement des points de terminaison spécifiques pour accéder aux modèles pris en charge dans votre Workspace Databricks. Pour y accéder, sélectionnez l'onglet tab dans la barre latérale gauche du Workspace. Les APIs de modèle de fondation se trouvent en haut de la vue Liste des Endpoint.
Pour l'interrogation de ces Endpoint, consultez Utiliser des modèles de base.
Créer un endpoint de service de modèle externe
Voici comment créer un Endpoint qui interroge un modèle de fondation rendu disponible à l’aide des modèles externes Databricks.
- Serving UI
- REST API
- MLflow Deployments SDK
-
Dans le champ Nom , fournissez un nom pour votre Endpoint.
-
Dans la section Entités servies
- Cliquez dans le champ Entité pour ouvrir le formulaire Sélectionner l'entité servie .
- Sélectionnez les **modèles de fondation**.
- Dans le champ **Sélectionner un modèle de base**, sélectionnez le fournisseur de modèles que vous souhaitez utiliser parmi ceux répertoriés sous **Fournisseurs de modèles externes**. Le formulaire se met à jour dynamiquement en fonction de votre sélection de fournisseur de modèles.
- Cliquez sur Confirmer .
- Fournissez les détails de configuration pour accéder au fournisseur de modèle sélectionné. Il s'agit généralement du secret qui référence le jeton d'accès personnel que vous souhaitez que l'endpoint utilise pour accéder à ce modèle.
- Sélectionnez la tâche. Les tâches disponibles sont le chat, la complétion et les intégrations.
- Sélectionnez le nom du modèle externe que vous souhaitez utiliser. La liste des modèles se met à jour dynamiquement en fonction de votre sélection de tâches. Consultez les modèles externes disponibles.
-
Cliquez sur Créer. La page Endpoints de service s'affiche avec l' état de l'endpoint de service indiqué comme Non prêt.

Les parameters de l'API REST pour la création d'Endpoints de service qui servent des modèles externes sont en préversion publique.
L'exemple suivant crée un endpoint qui sert la première version du modèle text-embedding-ada-002 fourni par OpenAI.
Voir POST /api/2.0/serving-endpoints pour les parameters de configuration d'endpoint.
{
"name": "openai_endpoint",
"config":
{
"served_entities":
[
{
"name": "openai_embeddings",
"external_model":{
"name": "text-embedding-ada-002",
"provider": "openai",
"task": "llm/v1/embeddings",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
},
"rate_limits": [
{
"calls": 100,
"key": "user",
"renewal_period": "minute"
}
],
"tags": [
{
"key": "team",
"value": "gen-ai"
}
]
}
Voici un exemple de réponse.
{
"name": "openai_endpoint",
"creator": "user@email.com",
"creation_timestamp": 1699617587000,
"last_updated_timestamp": 1699617587000,
"state": {
"ready": "READY"
},
"config": {
"served_entities": [
{
"name": "openai_embeddings",
"external_model": {
"provider": "openai",
"name": "text-embedding-ada-002",
"task": "llm/v1/embeddings",
"openai_config": {
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
},
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1699617587000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "openai_embeddings",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "gen-ai"
}
],
"id": "69962db6b9db47c4a8a222d2ac79d7f8",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
Ce qui suit crée un Endpoint pour les intégrations avec OpenAI text-embedding-ada-002.
Pour les Endpoint de modèle externes, vous devez fournir des clés API pour le fournisseur de modèle que vous souhaitez utiliser. Voir POST /api/2.0/serving-endpoints dans l'API REST pour les détails du schéma de requête et de réponse. Pour un guide étape par étape, consultez le Tutoriel : créer des Endpoint de modèles externes pour query des modèles OpenAI.
Vous pouvez également créer des endpoints pour les tâches de complétion et de chat, comme spécifié par le champ task dans la section external_model de la configuration. Consultez les modèles externes dans Model Serving pour les modèles et fournisseurs pris en charge pour chaque tâche.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="chat",
config={
"served_entities": [
{
"name": "completions",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Mise à jour des Endpoint de mise en service du modèle
Après avoir activé un Endpoint de modèle, vous pouvez définir la configuration de compute comme vous le souhaitez. Cette configuration est particulièrement utile si vous avez besoin de ressources supplémentaires pour votre modèle. La taille du Workload et la configuration du compute jouent un rôle clé dans les ressources allouées pour la diffusion de votre modèle.
Tant que la nouvelle configuration n'est pas prête, l'ancienne configuration continue de servir le trafic de prédiction. Pendant qu'une mise à jour est en cours, une autre mise à jour ne peut pas être effectuée. Dans l'interface utilisateur de Serving, vous pouvez annuler une mise à jour de configuration en cours en sélectionnant Annuler la mise à jour en haut à droite de la page de détails de l'Endpoint. Cette fonctionnalité est uniquement disponible dans l'interface utilisateur de Serving.
Lorsqu'un external_model est présent dans une configuration d'endpoint, la liste des entités servies ne peut avoir qu'un seul objet served_entity. Les Endpoint existants avec un external_model ne peuvent pas être mis à jour pour ne plus avoir de external_model. Si l'endpoint est créé sans external_model, vous ne pouvez pas le mettre à jour pour ajouter un external_model.
- REST API
- MLflow Deployments SDK
Pour mettre à jour votre endpoint, consultez la documentation sur la mise à jour de la configuration de l'API REST pour obtenir des détails sur les schémas de requête et de réponse.
{
"name": "openai_endpoint",
"served_entities":
[
{
"name": "openai_chat",
"external_model":{
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
}
Pour mettre à jour votre endpoint, consultez la documentation sur la mise à jour de la configuration de l'API REST pour obtenir des détails sur les schémas de requête et de réponse.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.update_endpoint_config(
endpoint="chat",
config={
"served_entities": [
{
"name": "chats",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chats",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
rate_limits = client.update_endpoint_rate_limits(
endpoint="chat",
config={
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
},
)
assert rate_limits == {
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
}