Configurar o acesso aos recursos dos pontos de extremidade do serviço de modelo
Esse artigo descreve como configurar o acesso a recursos externos e privados a partir de pontos finais de serviço de modelo. O Model Serving oferece suporte a variáveis de ambiente de texto simples e variáveis de ambiente baseadas em segredos usando Databricks segredos.
Requisitos
Para variáveis de ambiente baseadas em segredos,
- O criador do ponto final deve ter acesso READ aos segredos do Databricks referenciados nas configurações.
- Você deve armazenar credenciais como sua chave de API ou outros tokens como um segredo do Databricks.
Adicionar variáveis de ambiente de texto simples
Use variáveis de ambiente de texto simples para definir variáveis que não precisam ser ocultadas. Você pode definir variáveis na IU de exibição ou na API REST ao criar ou atualizar um ponto de extremidade.
Na IU do Serving, você pode adicionar uma variável de ambiente em Configurações avançadas:
Confira a seguir um exemplo de criação de um ponto de extremidade de serviço usando a API REST POST /api/2.0/serving-endpoints
e o campo environment_vars
para configurar sua variável de ambiente.
{
"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"
}
}]
}
}
Adicione variáveis de ambiente baseadas em segredos
Você pode armazenar credenciais com segurança usando segredos do Databricks e fazer referência a esses segredos no serviço de modelo usando variáveis de ambiente baseadas em segredos. Isso permite que as credenciais sejam obtidas dos endpoints de atendimento do modelo no momento do atendimento.
Por exemplo, você pode passar credenciais para chamar OpenAI e outros pontos de extremidade de modelo externos ou acessar locais de armazenamento de dados externos diretamente do serviço de modelo.
O Databricks recomenda esse recurso para implantar tipos de modelo MLflow OpenAI e LangChain ao serviço. Isso também é aplicável a outros modelos de SaaS que exigem credenciais com a compreensão de que o padrão de acesso se baseia no uso de variáveis de ambiente, tokens e chaves de API.
Etapa 1: crie um escopo secreto
Durante o serviço de modelo, os segredos são recuperados a partir dos segredos do Databricks pela chave e pelo escopo do segredo. Eles são atribuídos aos nomes de variáveis de ambiente secreto que podem ser usados dentro do modelo.
Primeiro, crie um escopo secreto. Consulte Gerenciar escopos secretos.
Veja a seguir os comandos da CLI:
databricks secrets create-scope my_secret_scope
Em seguida, você pode adicionar seu segredo a uma chave e um escopo de segredo desejados, conforme mostrado abaixo:
databricks secrets put-secret my_secret_scope my_secret_key
As informações de segredo e o nome da variável de ambiente podem ser passados para a configuração do ponto de extremidade durante a criação do ponto de extremidade ou como uma atualização para a configuração de um ponto de extremidade existente.
Etapa 2: adicionar escopos secretos à configuração do ponto de extremidade
Você pode adicionar o escopo secreto a uma variável de ambiente e passar essa variável para seu ponto de extremidade durante a criação do ponto de extremidade ou atualizações de configuração. Consulte Criar pontos de extremidade do serviço de modelo personalizado.
Na IU do Serving, você pode adicionar uma variável de ambiente em Configurações avançadas. A variável de ambiente baseada em segredos deve ser fornecida usando a seguinte sintaxe: {{secrets/scope/key}}
. Caso contrário, a variável de ambiente será considerada uma variável de ambiente de texto simples.
Veja a seguir um exemplo de criação de um ponto de extremidade de serviço usando a API REST. Durante as atualizações de configuração e criação do ponto de extremidade do serviço de modelo, você pode fornecer uma lista de especificações de variáveis de ambiente de segredo para cada modelo de serviço dentro da solicitação de API usando o campo environment_vars
.
O exemplo a seguir atribui o valor do segredo criado no código fornecido à variável de ambiente 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}}"
}
}]
}
}
Também é possível atualizar um ponto de extremidade de serviço, como no seguinte exemplo de API REST PUT /api/2.0/serving-endpoints/{name}/config
:
{
"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}}"
}
}]
}
Depois que o ponto de extremidade é criado ou atualizado, o serviço de modelo busca automaticamente a chave secreta do escopo de segredos do Databricks e preenche a variável de ambiente para o código de inferência do modelo a ser usado.
Exemplo de notebook
Consulte o notebook a seguir para obter um exemplo de como configurar uma chave de API do OpenAI, para uma cadeia de garantia de qualidade de recuperação LangChain, implantada atrás do modelo que atende pontos de extremidade com variáveis de ambiente baseadas em segredo.