Настройка доступа к ресурсам из конечных точек обслуживания модели

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

Настройка доступа к ресурсам из записной книжки службы моделей конечных точек

Получить записную книжку