Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Cet article montre comment déployer des API Foundation Model au débit approvisionné. Azure Databricks recommande le débit provisionné pour les charges de travail de production et fournit une inférence optimisée pour les modèles de base avec des garanties de performances.
Qu’est-ce que le débit approvisionné ?
Lorsque vous créez un modèle de débit provisionné servant le point de terminaison sur Azure Databricks, vous allouez une capacité d’inférence dédiée pour garantir un débit cohérent pour le modèle de base que vous souhaitez servir. Les points de terminaison de service de modèle qui servent les modèles de base peuvent être provisionnés en blocs d’unités de modèle. Le nombre d’unités de modèle que vous allouez vous permet d’acheter exactement le débit nécessaire pour prendre en charge de manière fiable votre application GenAI de production.
- Consultez les modèles de base pris en charge sur Mosaïque AI Model Service pour obtenir la liste des architectures de modèle prises en charge pour les points de terminaison de débit approvisionnés.
Spécifications
Consultez les exigences. Pour déployer des modèles de base affinés, consultez Déployer des modèles d’ajustement.
[Recommandé] Déployer des modèles de base à partir du catalogue Unity
Important
Cette fonctionnalité est disponible en préversion publique.
Databricks recommande d’utiliser les modèles de base préinstallés dans le catalogue Unity. Vous trouverez ces modèles sous le catalogue system dans le schéma ai (system.ai).
Pour déployer un modèle de base :
- Accédez à
system.aidans l’Explorateur de catalogues. - Cliquez sur le nom du modèle à déployer.
- Sur la page du modèle, cliquez sur le bouton Servir ce modèle.
- La page Créer un point de terminaison de service s’affiche. Consultez pour créer votre point de terminaison de débit provisionné à l’aide de l’interface utilisateur.
Remarque
Pour déployer un modèle Meta Llama à partir de system.ai dans Unity Catalog, vous devez choisir la version applicable Instruct. Les versions de base des modèles Meta Llama ne sont pas prises en charge pour le déploiement à partir du system.ai Unity Catalog. Consultez les modèles Foundation hébergés sur les variantes de modèle Meta Llama prises en charge par Databricks.
Déployer des modèles de base à partir de la place de marché Databricks
Vous pouvez également installer des modèles de base dans le catalogue Unity à partir de Databricks Marketplace.
Vous pouvez rechercher une famille de modèles et à partir de la page modèle, vous pouvez sélectionner Obtenir l’accès et fournir des informations d’identification de connexion pour installer le modèle dans le catalogue Unity.
Une fois le modèle installé sur Unity Catalog, vous pouvez créer un point de terminaison pour le service du modèle à l’aide de l'UI de service.
Déployer des modèles de base d’ajustement
Si vous ne pouvez pas utiliser les modèles dans le schéma system.ai ou installer des modèles à partir de la Place de marché Databricks, vous pouvez déployer un modèle de base affiné en le connectant au catalogue Unity. Cette section et les sections suivantes montrent comment configurer votre code pour enregistrer un modèle MLflow dans le catalogue Unity et créer votre point de terminaison de débit approvisionné à l’aide de l’interface utilisateur ou de l’API REST.
Consultez les modèles fondamentaux hébergés sur Databricks pour les modèles Meta Llama 3.1, 3.2 et 3.3 ajustés et leur disponibilité régionale.
Spécifications
- Le déploiement de modèles de base d’ajustement n’est pris en charge que par MLflow 2.11 ou version ultérieure. Databricks Runtime 15.0 ML et versions ultérieures préinstalle la version MLflow compatible.
- Databricks recommande d’utiliser des modèles dans Le catalogue Unity pour accélérer le chargement et le téléchargement de modèles volumineux.
Définir le catalogue, le schéma et le nom du modèle
Pour déployer un modèle de base affiné, définissez le catalogue de catalogues Unity cible, le schéma et le nom du modèle de votre choix.
mlflow.set_registry_uri('databricks-uc')
CATALOG = "catalog"
SCHEMA = "schema"
MODEL_NAME = "model_name"
registered_model_name = f"{CATALOG}.{SCHEMA}.{MODEL_NAME}"
Enregistrer votre modèle
Pour activer le débit approvisionné pour votre point de terminaison de modèle, vous devez enregistrer votre modèle à l’aide de la version transformers MLflow et spécifier l’argument task avec l’interface de type de modèle appropriée à partir des options suivantes :
"llm/v1/completions""llm/v1/chat""llm/v1/embeddings"
Ces arguments spécifient la signature d’API utilisée pour le point de terminaison de mise en service du modèle. Reportez-vous à la documentation MLflow pour plus d’informations sur ces tâches et les schémas d’entrée/sortie correspondants.
Voici un exemple de journalisation d'un modèle de langage de complétion de texte à l'aide de MLflow :
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.3-70B-Instruct", torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.3-70B-Instruct")
with mlflow.start_run():
components = {
"model": model,
"tokenizer": tokenizer,
}
mlflow.transformers.log_model(
transformers_model=components,
artifact_path="model",
# Specify the llm/v1/xxx task that is compatible with the model being logged
task="llm/v1/completions",
# Specify an input example that conforms to the input schema for the task.
input_example={"prompt": np.array(["Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\nWhat is Apache Spark?\n\n### Response:\n"])},
# By passing the model name, MLflow automatically registers the Transformers model to Unity Catalog with the given catalog/schema/model_name.
registered_model_name=registered_model_name
# Optionally, you can set save_pretrained to False to avoid unnecessary copy of model weight and gain more efficiency.
save_pretrained=False
)
Remarque
Si vous utilisez MLflow antérieure à la version 2.12, vous devez spécifier la tâche dans le paramètre metadata de la même fonction mlflow.transformer.log_model() à la place.
metadata = {"task": "llm/v1/completions"}metadata = {"task": "llm/v1/chat"}metadata = {"task": "llm/v1/embeddings"}
Le débit provisionné prend également en charge les modèles d’incorporation GTE de base et de grande taille. Voici un exemple d’enregistrement du modèle Alibaba-NLP/gte-large-en-v1.5 afin qu’il puisse être servi avec un débit approvisionné :
model = AutoModel.from_pretrained("Alibaba-NLP/gte-large-en-v1.5")
tokenizer = AutoTokenizer.from_pretrained("Alibaba-NLP/gte-large-en-v1.5")
with mlflow.start_run():
components = {
"model": model,
"tokenizer": tokenizer,
}
mlflow.transformers.log_model(
transformers_model=components,
artifact_path="model",
task="llm/v1/embeddings",
registered_model_name=registered_model_name,
# model_type is required for logging a fine-tuned BGE models.
metadata={
"model_type": "gte-large"
}
)
Une fois votre modèle connecté dans le catalogue Unity, poursuivez Créer votre point de terminaison de débit approvisionné à l’aide de l’interface utilisateur pour créer un point de terminaison de service de modèle avec un débit provisionné.
Créer votre point de terminaison avec débit approvisionné en utilisant l’interface utilisateur
Une fois le modèle enregistré dans Unity Catalog, créez un point de terminaison de service avec débit approvisionné en procédant comme suit :
- Accédez à l’interface utilisateur de service dans votre espace de travail.
- Sélectionnez Créer un point de terminaison de service.
- Dans le champ Entité, sélectionnez votre modèle dans le catalogue Unity. Pour les modèles éligibles, l’interface utilisateur de l’entité servie affiche l’écran Débit provisionné.
- Dans la liste déroulante jusqu’à, vous pouvez configurer le nombre maximal de jetons par seconde pour votre point de terminaison.
- Les points de terminaison de débit provisionné évoluent automatiquement, vous pouvez donc sélectionner Modifier pour afficher le nombre minimum de jetons par seconde auquel votre point de terminaison peut être réduit.
Créer votre point de terminaison de débit alloué à l’aide de l’API REST
Pour déployer votre modèle en mode de débit approvisionné en utilisant l’API REST, vous devez spécifier des champs min_provisioned_throughput et max_provisioned_throughput dans votre requête. Si vous préférez Python, vous pouvez également créer un point de terminaison à l’aide du kit de développement logiciel (SDK) de déploiement MLflow.
Pour identifier la plage appropriée de débit provisionné pour votre modèle, consultez Obtenir le débit approvisionné par incréments.
import requests
import json
# Set the name of the MLflow endpoint
endpoint_name = "prov-throughput-endpoint"
# Name of the registered MLflow model
model_name = "ml.llm-catalog.foundation-model"
# Get the latest version of the MLflow model
model_version = 3
# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"
headers = {"Context-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}
optimizable_info = requests.get(
url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
headers=headers)
.json()
if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
raise ValueError("Model is not eligible for provisioned throughput")
chunk_size = optimizable_info['throughput_chunk_size']
# Minimum desired provisioned throughput
min_provisioned_throughput = 2 * chunk_size
# Maximum desired provisioned throughput
max_provisioned_throughput = 3 * chunk_size
# Send the POST request to create the serving endpoint
data = {
"name": endpoint_name,
"config": {
"served_entities": [
{
"entity_name": model_name,
"entity_version": model_version,
"min_provisioned_throughput": min_provisioned_throughput,
"max_provisioned_throughput": max_provisioned_throughput,
}
]
},
}
response = requests.post(
url=f"{API_ROOT}/api/2.0/serving-endpoints", json=data, headers=headers
)
print(json.dumps(response.json(), indent=4))
Probabilité d’enregistrement des tâches de fin de conversation
Pour les tâches d’achèvement de conversation, vous pouvez utiliser le paramètre logprobs pour fournir la probabilité logarithmique d’un jeton échantillonné dans le cadre du processus de génération d'un grand modèle de langage. Vous pouvez utiliser logprobs pour divers scénarios, notamment la classification, l’évaluation de l’incertitude du modèle et l’exécution des indicateurs d’évaluation. Voir Chat Completions API pour les détails des paramètres.
Obtenir le débit approvisionné par incréments
Le débit approvisionné est disponible par incréments de jetons par seconde, les incréments spécifiques variant selon le modèle. Pour identifier la plage appropriée à vos besoins, Databricks recommande d’utiliser l’API d’informations d’optimisation du modèle au sein de la plateforme.
GET api/2.0/serving-endpoints/get-model-optimization-info/{registered_model_name}/{version}
Voici un exemple de réponse de l’API :
{
"optimizable": true,
"model_type": "llama",
"throughput_chunk_size": 1580
}
Exemples de cahiers
Les carnets de notes suivants montrent des exemples de création d’une API de modèle de fondation à débit approvisionné :
Mise en service de débit approvisionné pour un notebook de modèle GTE
Mise en service de débit provisionné pour un notebook de modèle BGE
Le notebook suivant montre comment télécharger et inscrire le modèle Llama dispersé par DeepSeek R1 dans Unity Catalog, afin de pouvoir le déployer à l’aide d’un point de terminaison de débit approvisionné des API Foundation Model.
Débit approvisionné pour le notebook de modèle Llama dispersé par DeepSeek R1
Limites
- Le modèle de déploiement peut échouer en raison de problèmes de capacité du GPU, ce qui entraîne un dépassement du délai d’expiration lors de la création ou de la mise à jour du point de terminaison. Contactez l’équipe de votre compte Databricks afin d’obtenir de l’aide pour la résolution du problème.
- La mise à l’échelle automatique pour les API de modèles fondamentaux est plus lente que l'exécution de modèles sur CPU. Databricks recommande le surapprovisionnement pour éviter les expirations des délais d’attente de requête.
- GTE v1.5 (anglais) ne génère pas d’incorporations normalisées.