Configurer l’accès aux ressources à partir de points de terminaison de mise en service de modèles
Cet article décrit comment configurer l’accès à des ressources externes et privées à partir des points de terminaison de service de modèles. Service de modèle prend en charge les variables d’environnement en texte brut et les variables d’environnement basées sur des secrets en utilisant des secrets Databricks.
Spécifications
Pour les variables d’environnement basées sur des secrets :
- Le créateur du point de terminaison doit disposer d’un accès en LECTURE aux secrets Databricks référencés dans les configurations.
- Vous devez stocker les informations d’identification telles que votre clé API ou d’autres jetons en tant que secret Databricks.
Ajouter des variables d’environnement en texte brut
Utilisez des variables d’environnement en texte brut pour définir des variables qui n’ont pas besoin d’être masquées. Vous pouvez définir des variables dans l’interface utilisateur de Service ou en utilisant l’API REST quand vous créez ou que vous mettez à jour un point de terminaison.
Dans l’interface utilisateur Service, vous pouvez ajouter une variable d’environnement dans Configurations avancées :
Voici un exemple de création d’un point de terminaison de service utilisant l’API REST POST /api/2.0/serving-endpoints
et le champ environment_vars
pour configurer votre variable d’environnement.
{
"name": "endpoint-name",
"config":{
"served_entities": [{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars":{
"TEXT_ENV_VAR_NAME": "plain-text-env-value"
}
}]
}
}
Ajouter des variables d’environnement basées sur des secrets
Vous pouvez stocker de façon sécurisée des informations d’identification en utilisant des secrets Databricks et référencer ces secrets dans le service de modèle en utilisant des variables d’environnement basées sur des secrets. Ceci permet de récupérer les informations d’identification auprès des points de terminaison de service de modèle au moment du service.
Par exemple, vous pouvez transmettre des informations d'identification pour appeler OpenAI et d'autres points de terminaison de modèle externes ou accéder à des emplacements de stockage de données externes directement à partir du service de modèle.
Databricks recommande cette fonctionnalité pour déployer les versions de modèle OpenAI et LangChain MLflow pour le service. Il s'applique également à d'autres modèles SaaS nécessitant des informations d'identification, étant entendu que le modèle d'accès est basé sur l'utilisation de variables d'environnement et de clés et jetons API.
Étape 1 : Créer une étendue de secrets
Pendant la diffusion du modèle, les secrets sont récupérés des secrets Databricks par la portée secrète et la clé secrète. Ceux-ci sont attribués aux noms de variables d'environnement secrètes qui peuvent être utilisées dans le modèle.
Tout d’abord, créez une étendue de secrets. Consultez Gérer les étendues de secret.
Voici les commandes CLI :
databricks secrets create-scope my_secret_scope
Vous pouvez ensuite ajouter votre secret à la portée et à la clé du secret souhaité, comme indiqué ci-dessous :
databricks secrets put-secret my_secret_scope my_secret_key
Les informations secrètes et le nom de la variable d'environnement peuvent ensuite être transmises à la configuration de votre point de terminaison lors de la création du point de terminaison ou sous forme de mise à jour de la configuration d'un point de terminaison existant.
Étape 2 : Ajouter des étendues de secrets à la configuration du point de terminaison
Vous pouvez ajouter l’étendue de secrets à une variable d’environnement, puis passer cette variable à votre point de terminaison lors de la création ou des mises à jour de la configuration du point de terminaison. Consultez Créer un modèle personnalisé servant des points de terminaison.
Dans l’interface utilisateur Service, vous pouvez ajouter une variable d’environnement dans Configurations avancées. La variable d’environnement basée sur des secrets doit être fournie en utilisant la syntaxe suivante : {{secrets/scope/key}}
. Sinon, la variable d’environnement est considérée comme une variable d’environnement en texte brut.
Voici un exemple de création d’un point de terminaison de service en utilisant l’API REST. Lors de la création du point de terminaison de diffusion du modèle et des mises à jour de la configuration, vous pouvez fournir une liste de spécifications de variables d'environnement secrètes pour chaque modèle servi dans le champ d'utilisation de la requête d'API environment_vars
.
L'exemple suivant attribue la valeur du secret créé dans le code fourni à la variable d'environnement OPENAI_API_KEY
.
{
"name": "endpoint-name",
"config":{
"served_entities": [{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars":{
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}]
}
}
Vous pouvez également mettre à jour un point de terminaison de service, comme dans l’PUT /api/2.0/serving-endpoints/{name}/config
exemple d’API REST suivant :
{
"served_entities": [{
"entity_name": "model-name",
"entity_version": "2",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars":{
"OPENAI_API_KEY": "{{secrets/my_secret_scope/my_secret_key}}"
}
}]
}
Une fois le point de terminaison créé ou mis à jour, la diffusion de modèles récupère automatiquement la clé secrète de la portée des secrets Databricks et remplit la variable d'environnement que votre code d'inférence de modèle doit utiliser.
Exemple de Notebook
Consultez le notebook suivant pour obtenir un exemple de configuration d'une clé API OpenAI pour une chaîne d'assurance qualité de récupération LangChain déployée derrière le modèle servant des points de terminaison avec des variables d'environnement basées sur des secrets.