Modèles externes dans le Service de modèle Azure Databricks
Important
Les exemples de code de cet article démontrent l’utilisation de l’API CRUD des déploiements de MLflow de la préversion publique.
Cet article décrit les modèles externes dans le Service de modèle Azure Databricks, y compris les fournisseurs de modèles pris en charge et les limitations.
Quels sont les modèles externes ?
Les modèles externes sont des modèles tiers hébergés à l’extérieur de Databricks. Pris en charge par le Service de modèle, les modèles externes vous permettent de rationaliser l’utilisation et la gestion de divers fournisseurs de grands modèles de langage (LLM), tels qu’OpenAI et Anthropic, au sein d’une organisation. Vous pouvez également utiliser le Service de modèle Azure Databricks en tant que fournisseur pour servir des modèles personnalisés, ce qui offre des limites de débit pour ces points finaux. Dans le cadre de ce soutien, le Service de modèle offre une interface de haut niveau qui simplifie l’interaction avec ces services en fournissant un point de terminaison unifié pour traiter les demandes spécifiques liées au LLM.
En outre, la prise en charge des modèles externes par Azure Databricks permet une gestion centralisée des informations d’identification. En stockant les clés d’API dans un seul endroit sécurisé, les entreprises peuvent améliorer leur sécurité en minimisant l’exposition des clés d’API sensibles dans l’ensemble du système. Il permet également d’éviter d’exposer ces clés dans le code ou d’exiger des utilisateurs finaux qu’ils gèrent les clés en toute sécurité.
Consultez Tutoriel : créer des points de terminaison de modèle externe pour interroger des modèles OpenAI pour obtenir des conseils étape par étape sur la création de points de terminaison de modèle externe et l’interrogation des modèles pris en charge servis par ces points de terminaison à l’aide du kit de développement logiciel (SDK) des déploiements MLflow. Consultez les guides suivants pour obtenir des instructions sur l’utilisation de l’interface utilisateur de mise en service et de l’API REST :
Exigences
- Clé API pour le fournisseur de modèles.
- Espace de travail Databricks dans les régions prises en charge des modèles externes.
Fournisseurs de modèle
Les modèles externes dans Model Serving sont conçus pour prendre en charge une variété de fournisseurs de modèles. Un fournisseur représente la source des modèles Machine Learning, comme OpenAI, Anthropic, etc. Chaque fournisseur a ses caractéristiques et configurations spécifiques qui sont encapsulées dans le external_model
champ du modèle externe de configuration du point de terminaison.
Les fournisseurs suivants sont pris en charge :
- openai : pour les modèles proposés par openAI et les intégrations Azure pour Azure OpenAI et Azure OpenAI avec AAD.
- anthropic : pour les modèles proposés par Anthropic.
- cohere : pour les modèles proposés par Cohere.
- amazon-bedrock : pour les modèles proposés par Amazon Bedrock.
- ai21labs : pour les modèles proposés par AI21Labs.
- google-cloud-vertex-ai : pour les modèles proposés par Google Cloud Vertex AI.
- databricks-model-service : pour les points de terminaison du Service de modèle Azure Databricks avec des schémas compatibles. Afficher Configuration du point de terminaison.
Pour demander le support d’un fournisseur non répertorié ici, contactez votre équipe de compte Databricks.
Modèles pris en charge
Le modèle que vous choisissez affecte directement les résultats des réponses que vous obtenez à partir des appels d’API. Par conséquent, choisissez un modèle qui répond à vos besoins en cas d’utilisation. Par exemple, pour générer des réponses conversationnelles, vous pouvez choisir un modèle de conversation. À l’inverse, pour générer des incorporations de texte, vous pouvez choisir un modèle d’incorporation.
Le tableau ci-dessous présente une liste non exhaustive des modèles pris en charge et des types de points de terminaison correspondants. Les associations de modèles énumérées ci-dessous peuvent servir de guide utile lors de la configuration d’un point de terminaison pour tout nouveau type de modèle disponible auprès d’un fournisseur donné. Les clients sont tenus de d’assurer de leur conformité vis-à-vis des licences de modèle applicables.
Remarque
Avec le développement rapide des machines virtuelles locales, il n’existe aucune garantie que cette liste soit à jour à tout moment.
Fournisseur de modèles | llm/v1/completions | llm/v1/chat | llm/v1/embeddings |
---|---|---|---|
OpenAI** | * gpt-3.5-turbo-instruct * babbage-002 * davinci-002 |
* gpt-3.5-turbo * gpt-4 * gpt-3.5-turbo-0125 * gpt-3.5-turbo-1106 * gpt-4-0125-preview * gpt-4-turbo-preview * gpt-4-1106-preview * gpt-4-vision-preview * gpt-4-1106-vision-preview |
* text-embedding-ada-002 * text-embedding-3-large * text-embedding-3-small |
Azure OpenAI** | * text-davinci-003 * gpt-35-turbo-instruct |
* gpt-35-turbo * gpt-35-turbo-16k * gpt-4 * gpt-4-32k |
* text-embedding-ada-002 * text-embedding-3-large * text-embedding-3-small |
Anthropic | * claude-1 * claude-1.3-100k * claude-2 * claude-2.1 * claude-2.0 * claude-instant-1.2 |
* claude-3-opus-20240229 * claude-3-sonnet-20240229 * claude-2.1 * claude-2.0 * claude-instant-1.2 |
|
Cohere** | * command * command-light-nightly * command-light * command-nightly |
* embed-english-v2.0 * embed-multilingual-v2.0 * embed-english-light-v2.0 * embed-english-v3.0 * embed-english-light-v3.0 * embed-multilingual-v3.0 * embed-multilingual-light-v3.0 |
|
Service de modèles Databricks | Point de terminaison de service Databricks | Point de terminaison de service Databricks | Point de terminaison de service Databricks |
Amazon Bedrock | Anthropic : * claude-instant-v1 * claude-v1 * claude-v2 Cohere : * command-text-v14 * command-text-v14:7:4k * command-light-text-v14 * command-light-text-v14:7:4k AI21 Labs : * j2-grande-instruct * j2-jumbo-instruct * j2-mid * j2-mid-v1 * j2-ultra j2-ultra-v1 |
Anthropic : * claude-instant-v1:2:100k * claude-v2 * claude-v2:0:18k * claude-v2:0:100k * claude-v2:1 * claude-v2:1:18k * claude-v2:1:200k * claude-3-sonnet-20240229-v1:0 |
Amazon : * titan-embed-text-v1 * titan-embed-g1-text-02 * titan-embed-text-v1:2:8k |
AI21 Labs† | * j2-mid * j2-light * j2-ultra |
||
Google Cloud Vertex AI | text-bison | * chat-bison * gemini-pro |
textembedding-gecko |
**
Le fournisseur de modèles prend en charge les modèles de saisie semi-automatique et de conversation ajustés. Pour interroger un modèle ajusté, renseignez le champ name
de la configuration external model
avec le nom de votre modèle ajusté.
† Le fournisseur de modèles prend en charge les modèles de saisie semi-automatique personnalisés.
Utiliser des modèles servis sur des points de terminaison du Service de modèle Azure Databricks
points de terminaison du Service de modèle Azure Databricks en tant que fournisseur est pris en charge pour les types de points de terminaison llm/v1/completions
, llm/v1/chat
et llm/v1/embeddings
. Ces points de terminaison doivent accepter les paramètres de requête standard marqués comme nécessaires, tandis que d’autres paramètres peuvent être ignorés selon que le point de terminaison du Service de modèles Databricks les prend en charge ou non.
Consultez POST /serving-endpoints/{name}/invocations dans la référence de l’API pour les paramètres de requête standard.
Ces points de terminaison doivent produire des réponses au format OpenAI suivant.
Pour les tâches d’achèvement :
{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
{
"text": "Hello World!",
"index": 0,
"logprobs": null, # Not Required
"finish_reason": "length" # Not Required
}
],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
Pour les tâches de conversation :
{
"id": "123", # Not Required
"model": "test_chat_model",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?",
},
"finish_reason": "stop"
},
{
"index": 1,
"message": {
"role": "human",
"content": "\n\nWhat is the weather in San Francisco?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
Pour les tâches d’incorporation :
{
"data": [
{
"embedding": [
0.0023064255,
-0.009327292,
.... # (1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
},
{
"embedding": [
0.0023064255,
-0.009327292,
.... #(1536 floats total for ada-002)
-0.0028842222,
],
"index": 0
}
],
"model": "test_embedding_model",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
Configuration du point de terminaison
Pour traiter et interroger des modèles externes, vous devez configurer un service de point de terminaison. Consultez Créer des points de terminaison pour des modèles personnalisés
Pour un point de terminaison de service de modèle externe, vous devez inclure le champ external_model
et ses paramètres dans la section served_entities
de la configuration du point de terminaison.
Le champ external_model
définit le modèle auquel ce point de terminaison transfère les requêtes. Lorsque vous spécifiez un modèle, il est essentiel que le fournisseur prenne en charge le modèle que vous demandez. Par exemple, openai
en tant que fournisseur prend en charge des modèles comme text-embedding-ada-002
, mais d’autres fournisseurs peuvent ne pas le faire. Si le modèle n’est pas pris en charge par le fournisseur, Databricks retourne une erreur HTTP 4xx lors de la tentative d’acheminer les requêtes vers ce modèle.
Le tableau ci-dessous récapitule les paramètres du champ external_model
. Consultez POST /api/2.0/serving-endpoints pour connaître les paramètres de configuration de point de terminaison.
Paramètre | Descriptions |
---|---|
name |
Nom du modèle à utiliser. Par exemple, gpt-3.5-turbo pour le modèle GPT-3.5-Turbo OpenAI. |
provider |
Spécifie le nom du fournisseur pour ce modèle. Cette valeur de chaîne doit correspondre à un fournisseur de modèle externe pris en charge. Par exemple, openai pour les modèles GPT-3.5 OpenAI. |
task |
La tâche correspond au type d’interaction du modèle de langage souhaité. Les tâches prises en charge sont « llm/v1/completions », « llm/v1/chat », « llm/v1/embeddings ». |
<provider>_config |
Contient tous les détails de configuration supplémentaires nécessaires pour le modèle. Cela inclut la spécification de l’URL de base de l’API et de la clé API. Consultez Configurer le fournisseur pour un point de terminaison. |
Voici un exemple de création d’un point de terminaison de modèle externe à l’aide de l’API create_endpoint()
. Dans cet exemple, une requête envoyée au point de terminaison d’achèvement est transférée au modèle claude-2
fourni par anthropic
.
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
client.create_endpoint(
name="anthropic-completions-endpoint",
config={
"served_entities": [
{
"name": "test",
"external_model": {
"name": "claude-2",
"provider": "anthropic",
"task": "llm/v1/completions",
"anthropic_config": {
"anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
}
}
}
]
}
)
Configurer le fournisseur pour un point de terminaison
Lorsque vous créez un point de terminaison, vous devez fournir les configurations requises pour le fournisseur de modèles spécifié. Les sections suivantes résument les paramètres de configuration de point de terminaison disponibles pour chaque fournisseur de modèles.
OpenAI
Paramètre de configuration | Description | Obligatoire | Par défaut |
---|---|---|---|
openai_api_key |
La clé API pour le service OpenAI. | Oui | |
openai_api_type |
Un champ facultatif pour spécifier le type d’API OpenAI à utiliser. | Non | |
openai_api_base |
L’URL de base de l’API OpenAI. | Non | https://api.openai.com/v1 |
openai_api_version |
Un champ facultatif pour spécifier la version d’API OpenAI. | Non | |
openai_organization |
Un champ facultatif pour spécifier l’organisation dans OpenAI. | Non |
Cohere
Paramètre de configuration | Description | Obligatoire | Par défaut |
---|---|---|---|
cohere_api_key |
La clé API pour le service Cohere. | Oui |
Anthropic
Paramètre de configuration | Description | Obligatoire | Par défaut |
---|---|---|---|
anthropic_api_key |
La clé API pour le service Anthropic. | Oui |
Azure OpenAI
Azure OpenAI a des fonctionnalités distinctes par rapport au service OpenAI direct. Pour obtenir une vue d’ensemble, consultez la documentation de comparaison.
Paramètre de configuration | Description | Obligatoire | Par défaut |
---|---|---|---|
openai_api_key |
La clé API pour le service Azure OpenAI. | Oui | |
openai_api_type |
Ajustez ce paramètre pour représenter le protocole de validation d’accès de sécurité préféré. Pour la validation du jeton d’accès, utilisez azure . Pour l’authentification à l’aide d’Azure Active Directory (Azure AD), utilisez azuread . |
Oui | |
openai_api_base |
L’URL de base du service d’API Azure OpenAI fourni par Azure. | Oui | |
openai_api_version |
La version du service Azure OpenAI à utiliser, spécifiée par une date. | Oui | |
openai_deployment_name |
Le nom de la ressource de déploiement pour le service Azure OpenAI. | Oui | |
openai_organization |
Un champ facultatif pour spécifier l’organisation dans OpenAI. | Non |
L’exemple suivant montre comment créer un point de terminaison avec Azure OpenAI :
client.create_endpoint(
name="openai-chat-endpoint",
config={
"served_entities": [{
"external_model": {
"name": "gpt-3.5-turbo",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_type": "azure",
"openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
"openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
"openai_deployment_name": "my-gpt-35-turbo-deployment",
"openai_api_version": "2023-05-15"
}
}
}]
}
)
Google Cloud Vertex AI
Paramètre de configuration | Description | Obligatoire | Default |
---|---|---|---|
private_key |
Il s’agit de la clé privée du compte de service qui a accès au service Google Cloud Vertex AI. Consultez Bonnes pratiques pour gérer les clés de compte de service. | Oui | |
region |
Il s’agit de la région du service Google Cloud Vertex AI. Pour plus d’informations, consultez Régions prises en charge. Certains modèles ne sont disponibles que dans des régions spécifiques. | Oui | |
project_id |
Il s’agit de l’ID de projet Google Cloud auquel le compte de service est associé. | Oui |
Amazon Bedrock
Pour utiliser Amazon Bedrock comme un fournisseur de modèle externe, les clients doivent s’assurer de l’activation de Bedrock dans la région AWS spécifiée, mais également que la paire de clés AWS spécifiée dispose des autorisations appropriées pour interagir avec les services Bedrock. Pour plus d’informations, consultez Gestion des identités et des accès AWS.
Paramètre de configuration | Description | Obligatoire | Par défaut |
---|---|---|---|
aws_region |
La région AWS à utiliser. Bedrock doit être activé là-bas. | Oui | |
aws_access_key_id |
Un ID de clé d’accès AWS avec les autorisations d’interaction avec les services Bedrock. | Oui | |
aws_secret_access_key |
Une clé d’accès secrète AWS associée à l’ID de la clé d’accès, avec des autorisations pour interagir avec les services Bedrock. | Oui | |
bedrock_provider |
Le fournisseur sous-jacent dans Amazon Bedrock. Les valeurs prises en charge (sans respect de la casse) sont les suivantes : Anthropic, Cohere, AI21Labs, Amazon | Oui |
L’exemple suivant montre comment créer un point de terminaison avec Amazon Bedrock.
client.create_endpoint(
name="bedrock-anthropic-completions-endpoint",
config={
"served_entities": [
{
"external_model": {
"name": "claude-v2",
"provider": "amazon-bedrock",
"task": "llm/v1/completions",
"amazon_bedrock_config": {
"aws_region": "<YOUR_AWS_REGION>",
"aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
"aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
"bedrock_provider": "anthropic",
},
}
}
]
},
)
S’il existe des problèmes d’autorisation AWS, Databricks vous recommande de vérifier les informations d’identification directement avec l’API Amazon Bedrock.
Laboratoires AI21
Paramètre de configuration | Description | Obligatoire | Par défaut |
---|---|---|---|
ai21labs_api_key |
Il s’agit de la clé API pour le service AI21 Labs. | Oui |
Interroger un point de terminaison de modèle externe
Une fois que vous avez créé un point de terminaison de modèle externe, celui-ci est prêt à recevoir le trafic des utilisateurs.
Vous pouvez envoyer des demandes de scoring au point de terminaison en utilisant le client OpenAI l’API REST ou le SDK des déploiements MLflow.
- Consultez les paramètres de requête standard pour une requête de scoring dans POST /serving-endpoints/{name}/invocations.
- Modèles de base de requête
L’exemple suivant interroge le modèle de complétions claude-2
hébergé par Anthropic en utilisant le client OpenAI. Pour utiliser le client OpenAI, renseignez le champ model
avec le nom du point de terminaison de service du modèle qui héberge le modèle que vous voulez interroger.
Cet exemple utilise un point de terminaison créé précédemment, anthropic-completions-endpoint
, configuré pour accéder aux modèles externes à partir du fournisseur de modèles Anthropic. Découvrez comment créer des points de terminaison de modèle externe.
Consultez les Modèles pris en charge pour obtenir des modèles supplémentaires que vous pouvez interroger, et leurs fournisseurs.
import os
import openai
from openai import OpenAI
client = OpenAI(
api_key="dapi-your-databricks-token",
base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)
completion = client.completions.create(
model="anthropic-completions-endpoint",
prompt="what is databricks",
temperature=1.0
)
print(completion)
Format de réponse de sortie attendu :
{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
{
"text": "Hello World!",
"index": 0,
"logprobs": null, # Not Required
"finish_reason": "length" # Not Required
}
],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
Paramètres de requête supplémentaires
Vous pouvez transmettre tous les paramètres supplémentaires pris en charge par le fournisseur du point de terminaison dans le cadre de votre requête.
Par exemple :
logit_bias
(pris en charge par OpenAI, Cohere).top_k
(pris en charge par Anthropic, Cohere).frequency_penalty
(pris en charge par OpenAI, Cohere).presence_penalty
(pris en charge par OpenAI, Cohere).stream
(pris en charge par OpenAI, Anthropic, Cohere, Amazon Bedrock pour Anthropic). Disponible uniquement pour les requêtes de conversation et de complétions.
Limites
Selon le modèle externe que vous choisissez, votre configuration peut entraîner le traitement de vos données en dehors de la région d’où elles proviennent.
Consultez Limites et régions de la mise en service de modèles.