Настройка доступа к ресурсам из конечных точек обслуживания модели
В этой статье описывается, как настроить доступ к внешним и частным ресурсам из конечных точек обслуживания модели. Служба моделей поддерживает переменные среды обычного текста и переменные среды на основе секретов с помощью секретов Databricks.
Требования
Для переменных среды на основе секретов
- Создатель конечной точки должен иметь доступ на чтение к секретам Databricks, указанным в конфигурациях.
- Вы должны хранить учетные данные, такие как ключ API или другие токены, как секрет Databricks.
Добавление переменных среды обычного текста
Используйте переменные среды обычного текста, чтобы задать переменные, которые не нужно скрывать. Переменные можно задать в пользовательском интерфейсе обслуживания или REST API при создании или обновлении конечной точки.
В пользовательском интерфейсе обслуживания можно добавить переменную среды в расширенные конфигурации:
Ниже приведен пример создания конечной точки обслуживания с помощью POST /api/2.0/serving-endpoints
REST API и environment_vars
поля для настройки переменной среды.
{
"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"
}
}
]
}
}
функции поиска кадров данных для вывода таблиц
Если на вашей конечной точке включены таблицы вывода данных, вы можете записать ваш автоматический фрейм данных поиска функций в эту таблицу вывода данных с помощью ENABLE_FEATURE_TRACING
. Для этого требуется MLflow 2.14.0 или более поздней версии.
Задайте ENABLE_FEATURE_TRACING
в качестве переменной среды в пользовательском интерфейсе обслуживания или REST API при создании или обновлении конечной точки.
Из пользовательского интерфейса обслуживания:
- В расширенных конфигурацийвыберите ** + Добавить переменные среды**.
- Введите
ENABLE_FEATURE_TRACING
в качестве имени среды. - Введите
true
в поле справа.
Ниже приведен пример создания конечной точки обслуживания с помощью REST API POST /api/2.0/serving-endpoints
и поля environment_vars
для настройки переменной среды ENABLE_FEATURE_TRACING
.
{
"name": "endpoint-name",
"config": {
"served_entities": [
{
"entity_name": "model-name",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": "true",
"environment_vars": {
"ENABLE_FEATURE_TRACING": "true"
}
}
]
}
}
Добавить переменные среды на основе секретов
Вы можете безопасно хранить учетные данные с помощью секретов Databricks и ссылаться на эти секреты в обслуживании модели с помощью переменных среды на основе секретов. Это позволяет получить учетные данные из конечных точек обслуживания модели во время обслуживания.
Например, можно передать учетные данные для вызова OpenAI и других внешних конечных точек модели или получить доступ к внешним хранилищам данных непосредственно через сервис моделей.
Databricks рекомендует использовать эту функцию для развертывания версий моделей OpenAI и LangChain MLflow для обслуживания. Это также применимо к другим моделям SaaS, требующим учетных данных, с пониманием того, что шаблон доступа основан на использовании переменных среды и ключей API и маркеров.
Шаг 1. Создание области секрета
Во время обслуживания модели секреты извлекаются из системы секретов Databricks, используя область и ключ. Они назначаются именам переменных секретной среды, которые можно использовать внутри модели.
Сначала создайте область секрета. См. раздел "Управление областями секретов".
Ниже приведены команды CLI:
databricks secrets create-scope my_secret_scope
Затем вы можете добавить секрет в желаемую область хранения секретов с ключом, как показано ниже:
databricks secrets put-secret my_secret_scope my_secret_key
Затем секретная информация и имя переменной среды можно передать в конфигурацию конечной точки во время создания конечной точки или в качестве обновления конфигурации существующей конечной точки.
Шаг 2. Добавление областей секретов в конфигурацию конечной точки
Вы можете добавить область секрета в переменную среды и передать эту переменную в конечную точку во время создания или обновления конфигурации конечной точки. См. статью "Создание пользовательских конечных точек обслуживания моделей".
В пользовательском интерфейсе обслуживания можно добавить переменную среды в расширенные конфигурации. Переменная среды на основе секретов должна быть предоставлена с помощью следующего синтаксиса: {{secrets/scope/key}}
. В противном случае переменная среды считается переменной среды обычного текста.
Ниже приведен пример создания конечной точки обслуживания с помощью REST API. Во время обновления конфигурации и создания конечных точек службы моделей вы можете предоставить список спецификаций переменной секретной среды для каждой обслуживаемой модели в запросе API с помощью environment_vars
поля.
В следующем примере значение из секрета, созданного в предоставленном коде, присваивается переменной окружения 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}}"
}
}
]
}
}
Вы также можете обновить конечную точку обслуживания, как показано в следующем PUT /api/2.0/serving-endpoints/{name}/config
примере REST API:
{
"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}}"
}
}
]
}
После создания или обновления конечной точки служба модели автоматически извлекает секретный ключ из области секретов Databricks и заполняет переменную среды для использования вашим кодом инференса модели.
Пример записной книжки
В следующей записной книжке приведен пример настройки ключа API OpenAI для сети QA Retrieval QA Chain LangChain, развернутой за конечными точками обслуживания модели с переменными среды на основе секретов.