Поделиться через


Многотенантность и Служба Azure OpenAI

Azure OpenAI предоставляет доступ к мощным языковым моделям OpenAI . В этой статье описываются ключевые функции Azure OpenAI, которые полезны для мультитенантных решений. Ознакомьтесь с рекомендуемыми ресурсами, чтобы спланировать подход и использовать Azure OpenAI.

Модели изоляции

Если у вас есть мультитенантная система, использующая службу Azure OpenAI, необходимо решить уровень изоляции, который требуется вашим клиентам. Вы должны определить модель изоляции на основе следующих факторов:

  • Сколько клиентов планируется иметь?
  • Имеют ли клиенты требования к соответствию требованиям, которые требуют изоляции сети или инфраструктуры?
  • Требуются ли клиенты модели, которые настраиваются на собственных данных?
  • Требуются ли клиенты разные версии модели или жизненные циклы моделей?

В следующей таблице приведены подходы к развертыванию, которые можно использовать при использовании Службы Azure OpenAI в мультитенантной системе:

Фактор Выделенная служба Azure OpenAI Общая служба Azure OpenAI, развертывание выделенной модели для каждого клиента Общая служба Azure OpenAI, развертывание общей модели Предоставленная клиентом служба Azure OpenAI
Изоляция данных Высокий Средний Низкий Высокий
Изоляция производительности Высокая Высокая Низкая среда в зависимости от использования маркера в минуту (TPM) для каждого клиента. Высокая
Сложность развертывания Низкий уровень в зависимости от количества клиентов. Средний, необходимо управлять именами и квотами развертывания. Низкая Неприменимо, управляемое клиентом.
Операционная сложность Низкая Средняя Высокая Низкий для поставщика, более высокий для клиента.
Пример сценария Развертывания одного клиента, требующие сетевой изоляции от других клиентов. Клиенты с определенным жизненным циклом модели или требованиями к тонкой настройке. Крупные мультитенантные решения с общим уровнем приложений. Клиенты с определенными требованиями к соответствию или тонкой настройке.

Выделенная служба Azure OpenAI

Если вы являетесь поставщиком услуг, рассмотрите возможность развертывания экземпляра Azure OpenAI для каждого клиента в подписке Azure. Этот подход обеспечивает изоляцию данных для каждого клиента. Для этого требуется развернуть и управлять увеличением числа ресурсов Azure OpenAI по мере увеличения числа клиентов.

Используйте этот подход, если у вас есть отдельные развертывания приложений для каждого клиента или если вам нужно обойти ограничения, например квота или запрос в минуту. Дополнительные сведения см. в статье о квотах и ограничениях Azure OpenAI.

На следующей схеме показана модель Azure OpenAI для каждого клиента в подписке поставщика.

Схема, показывающая модель Azure OpenAI для каждого клиента в подписке поставщика.

Общая служба Azure OpenAI

Вы можете предоставить общий доступ к экземпляру Azure OpenAI между несколькими клиентами. Ресурс Azure OpenAI развертывается в подписке Azure (поставщика услуг). Вы несете ответственность за управление им. Это решение является самым простым для реализации, но обеспечивает наименьшую изоляцию данных и изоляцию производительности.

Совместное использование ресурса Azure OpenAI не обеспечивает сегментацию безопасности для каждого развертывания модели. Клиент может использовать модель, которую они не могут использовать. По этой причине избегайте совместного использования экземпляра Azure OpenAI при использовании точно настроенных моделей, так как вы можете предоставлять конфиденциальную информацию и разрешать несанкционированный доступ к данным или ресурсам для конкретного клиента.

Совместное использование экземпляра Azure OpenAI между несколькими клиентами также может привести к проблеме шумного соседа . Это может привести к более высокой задержке для некоторых клиентов. Кроме того, необходимо сделать код приложения многотенантным. Например, если вы хотите взимать плату за затраты на потребление общего экземпляра Azure OpenAI, реализуйте логику для отслеживания общего количества токенов для каждого клиента в приложении.

Вы также можете развернуть несколько общих экземпляров Azure OpenAI. Например, если следовать шаблону меток развертывания, разверните общий экземпляр Azure OpenAI в каждой метке. При развертывании многорегионного решения необходимо развернуть Azure OpenAI в каждом регионе:

  • Избегайте задержки трафика между регионами.
  • Поддержка требований к месту расположения данных.
  • Включите использование регионального Azure OpenAI в других службах, требующих развертывания в одном регионе.

Если у вас есть общий экземпляр Azure OpenAI, важно учитывать его ограничения и управлять квотой.

На следующей схеме показана общая модель Azure OpenAI.

Схема, на которой показана общая модель Azure OpenAI.

При развертывании общей службы Azure OpenAI можно решить, являются ли развертывания модели в службе общими или выделены ли они определенным клиентам.

Развертывание общей модели между клиентами

Совместное использование развертывания модели между клиентами упрощает операционное бремя, так как для управления и отслеживания версий модели меньше развертываний. Планируйте использовать развертывание общей модели, если вы можете, и создайте только выделенные развертывания моделей, если вам нужны возможности, которые они предлагают.

Развертывание выделенной модели для каждого клиента

Вы можете создать развертывание модели для каждого клиента или для клиентов с особыми требованиями, которые не могут быть выполнены с помощью развертывания общей модели. Ниже приведены распространенные причины использования выделенных развертываний моделей для клиента:

  • Управление квотами и затратами. Это упрощает выделение доверенного платформенного модуля для конкретного клиента путем отслеживания количества маркеров, которые используются каждой модели, что позволяет точно распределять затраты и управлять использованием каждого клиента. Если вы используете подготовленные единицы пропускной способности (PTUS), вы можете назначить PTUS определенным клиентам и использовать другие модели выставления счетов для других клиентов.

  • Политики фильтрации содержимого. Иногда определенному клиенту может потребоваться уникальная политика фильтрации содержимого, например список блок-списков запрещенных слов для конкретного клиента. Вы указываете политику фильтрации содержимого в области развертывания модели.

  • Типы и версии моделей: может потребоваться использовать разные модели или версии модели для разных клиентов. Клиенту также может потребоваться собственный процесс управления жизненным циклом модели.

  • Точную настройку для конкретного клиента: при создании отдельных точно настроенных моделей для каждого клиента необходимо создать отдельное развертывание модели для каждой точно настроенной модели.

    Помните, что для большинства вариантов использования не требуется точная настройка. Как правило, лучше приземлять модель с помощью Azure OpenAI On Your Data или другого подхода к расширенному поколению (RAG).

  • Размещение данных. Этот подход поддерживает различные требования к месту расположения данных. Например, можно предоставить развертывание региональной модели для клиента с строгими потребностями расположения данных и использовать глобальное развертывание модели для других клиентов без строгих потребностей.

Каждое развертывание модели имеет собственный отдельный URL-адрес, но важно помнить, что базовые модели совместно используются другими клиентами Azure. Они также используют общую инфраструктуру Azure.

Azure OpenAI не применяет управление доступом для каждого развертывания модели, поэтому приложение должно контролировать, какой клиент может достичь развертывания модели.

Ресурс Azure OpenAI, предоставленный клиентом

В некоторых ситуациях клиенты могут создать экземпляр Azure OpenAI в своих подписках Azure и предоставить приложению доступ к нему. Этот подход может быть подходящим в следующих ситуациях:

  • Клиенты имеют определенные квоты и разрешения от Корпорации Майкрософт, такие как доступ к разным моделям, определенным политикам фильтрации содержимого или использованию подготовленной пропускной способности.
  • Клиент имеет точно настроенную модель, которая должна использоваться в решении.
  • Для обработки и отправки данных через экземпляр Azure OpenAI, управляемый клиентом, требуется компонент в своей среде.

Чтобы получить доступ к экземпляру Azure OpenAI в подписке клиента, клиент должен предоставить приложению доступ. Приложение должно пройти проверку подлинности через свой экземпляр Microsoft Entra. Одним из способов является публикация мультитенантного приложения Microsoft Entra. Следующий рабочий процесс описывает шаги этого подхода:

  1. Клиент регистрирует мультитенантное приложение Microsoft Entra в собственном клиенте Microsoft Entra.
  2. Клиент предоставляет мультитенантное приложение Microsoft Entra соответствующим уровнем доступа к ресурсу Azure OpenAI. Например, клиент может назначить приложению роль пользователя служб искусственного интеллекта Azure с помощью управления доступом на основе ролей (RBAC).
  3. Клиент предоставляет идентификатор ресурса создаваемого ресурса Azure OpenAI.
  4. Код приложения может использовать субъект-службу, связанный с мультитенантным приложением Microsoft Entra в собственном экземпляре Microsoft Entra для доступа к экземпляру Azure OpenAI клиента.

Кроме того, вы можете попросить каждого клиента создать субъект-службу для использования службы и предоставить вам свои учетные данные. Этот подход требует безопасного хранения учетных данных для каждого клиента и управления ими, что является потенциальной ответственностью за безопасность.

Если клиенты настраивают элементы управления доступом к сети в экземпляре Azure OpenAI, убедитесь, что к ним можно получить доступ.

На следующей схеме показана модель Azure OpenAI для каждого клиента в подписке клиента.

Схема, показывающая модель Azure OpenAI для каждого клиента в подписке клиента.

Функции Службы Azure OpenAI, поддерживающие мультитенантность

API помощников

API Помощников добавляет функциональные возможности в службу Azure OpenAI, которая подходит для создания помощников по искусственному интеллекту. Он включает возможность вызова средств и API, а также поиска файлов для создания ответов, создаваемых моделью. Он позволяет управлять постоянными потоками общения службой, а также создавать и выполнять код в изолированной среде. Для поддержки этих возможностей API Помощников должен хранить некоторые данные.

При использовании API Помощников в мультитенантном решении можно создать помощников, выделенных для одного клиента, или предоставить общий доступ к помощнику среди нескольких клиентов. Важно учитывать изоляцию клиента во всех сохраненных данных, особенно для общих помощников. Например, следует убедиться, что диалоговые потоки хранятся отдельно для каждого клиента.

API Помощников поддерживает вызов функции, который отправляет инструкции приложения по функциям для вызова и аргументов. Убедитесь, что все вызовы функций, которые вы вызываете, являются мультитенантными, например путем включения идентификатора клиента в вызов нижестоящей системы. Проверьте идентификатор клиента в приложении и не полагается на языковую модель для распространения идентификатора клиента.

Azure OpenAI в данных

Azure OpenAI On Your Data позволяет большой языковой модели напрямую запрашивать источники знаний, такие как индексы и базы данных, как часть создания ответа из языковой модели.

При выполнении запроса можно указать источники данных, которые должны запрашиваться. В мультитенантном решении убедитесь, что источники данных являются мультитенантными и можно указать фильтры клиентов в запросах. Распространение идентификатора клиента в источник данных соответствующим образом. Например, предположим, что вы запрашиваете поиск по искусственному интеллекту Azure. Если у вас есть данные для нескольких клиентов в одном индексе, укажите фильтр, чтобы ограничить полученные результаты идентификатором текущего клиента. Или, если вы создали индекс для каждого клиента, убедитесь, что указан правильный индекс для текущего клиента.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Автор субъекта:

Другие участники:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.