Настройка доступа к ресурсам из конечных точек обслуживания модели
В этой статье описывается, как настроить доступ к внешним и частным ресурсам из конечных точек обслуживания модели. Служба моделей поддерживает переменные среды обычного текста и переменные среды на основе секретов с помощью секретов Databricks.
Требования
Для переменных среды на основе секретов
- Создатель конечной точки должен иметь доступ READ к секретам 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"
}
}]
}
}
Добавление переменных среды на основе секретов
Вы можете безопасно хранить учетные данные с помощью секретов 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, развернутой за конечными точками обслуживания модели с переменными среды на основе секретов.