다중 테넌트 및 Azure OpenAI 서비스
Azure OpenAI 는 OpenAI의 강력한 언어 모델에 대한 액세스 권한을 제공합니다. 이 문서에서는 다중 테넌트 솔루션에 도움이 되는 Azure OpenAI의 주요 기능을 설명합니다. 권장 리소스를 검토하여 접근 방식을 계획하고 Azure OpenAI를 사용하는 데 도움이 됩니다.
격리 모델
Azure OpenAI 서비스를 사용하는 다중 테넌트 시스템이 있는 경우 테넌트에 필요한 격리 수준을 결정해야 합니다. 다음 요인에 따라 격리 모델을 결정해야 합니다.
- 테넌트는 몇 개나 가질 계획인가요?
- 테넌트에 네트워크 또는 인프라 격리가 필요한 규정 준수 요구 사항이 있나요?
- 테넌트에 자체 데이터에 대해 미세 조정된 모델이 필요합니까?
- 테넌트에 다른 모델 버전 또는 모델 수명 주기가 필요합니까?
다음 표에는 다중 테넌트 시스템에서 Azure OpenAI Service를 사용할 때 사용할 수 있는 배포 방법이 요약되어 있습니다.
고려 사항 | 전용 Azure OpenAI 서비스 | 공유 Azure OpenAI 서비스, 테넌트당 전용 모델 배포 | 공유 Azure OpenAI 서비스, 공유 모델 배포 | 테넌트 제공 Azure OpenAI 서비스 |
---|---|---|---|---|
데이터 격리 | 높음 | 중간 | 낮음 | 높음 |
성능 격리 | 높음 | 높음 | 각 테넌트에 대한 TPM(분당 토큰) 사용량에 따라 중간 수준이 낮습니다. | 높음 |
배포 복잡성 | 테넌트 수에 따라 중간 수준이 낮습니다. | 보통, 배포 이름 및 할당량을 관리해야 합니다. | 낮음 | 해당 없음, 고객이 관리합니다. |
운영 복잡성 | 낮음 | 중간 | 높음 | 공급자의 경우 낮음, 테넌트에 대해 더 높습니다. |
예제 시나리오 | 다른 테넌트로부터 네트워크를 격리해야 하는 단일 테넌트 배포 | 특정 모델 수명 주기 또는 미세 조정 요구 사항이 있는 테넌트. | 공유 애플리케이션 계층을 사용하는 대규모 다중 테넌트 솔루션. | 특정 규정 준수 또는 미세 조정 요구 사항이 있는 테넌트. |
전용 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 인스턴스를 배포합니다. 다중Region 솔루션을 배포하는 경우 각 지역에 Azure OpenAI를 배포하여 다음을 수행해야 합니다.
- 지역 간 트래픽 대기 시간을 방지합니다.
- 데이터 보존 요구 사항을 지원합니다.
- 동일한 지역 배포가 필요한 다른 서비스 내에서 지역별 Azure OpenAI를 사용하도록 설정합니다.
공유 Azure OpenAI 인스턴스가 있는 경우 해당 제한을 고려하고 할당량을 관리하는 것이 중요합니다.
다음 다이어그램에서는 공유 Azure OpenAI 모델을 보여 줍니다.
공유 Azure OpenAI 서비스를 배포할 때 서비스 내의 모델 배포도 공유되는지 또는 특정 고객 전용인지 여부를 결정할 수 있습니다.
테넌트 간에 공유 모델 배포
테넌트 간에 모델 배포를 공유하면 관리할 배포가 적고 추적할 모델 버전이 적기 때문에 운영 부담이 간소화됩니다. 가능한 경우 공유 모델 배포를 사용하도록 계획하고, 제공하는 기능이 필요한 경우에만 전용 모델 배포를 만듭니다.
테넌트당 전용 모델 배포
각 테넌트 또는 공유 모델 배포를 사용하여 충족할 수 없는 특별한 요구 사항이 있는 테넌트에 대한 모델 배포를 만들 수 있습니다. 테넌트에 전용 모델 배포를 사용하는 일반적인 이유는 다음과 같습니다.
할당량 및 비용 관리: 각 모델에서 사용하는 토큰 수를 추적하여 테넌트별 TPM 할당을 용이하게 하므로 각 테넌트의 사용량을 정확하게 할당하고 관리할 수 있습니다. 프로비전된 처리량 단위(PTU)를 사용하는 경우 특정 고객에게PTU를 할당하고 다른 고객에 대해 다른 청구 모델을 사용할 수 있습니다.
콘텐츠 필터링 정책: 경우에 따라 특정 테넌트에 허용되지 않는 단어의 테넌트별 차단 목록과 같은 고유한 콘텐츠 필터링 정책이 필요할 수 있습니다. 모델 배포 범위에서 콘텐츠 필터링 정책을 지정합니다.
모델 유형 및 버전: 서로 다른 테넌트에 대해 다른 모델 또는 모델 버전을 사용해야 할 수 있습니다. 테넌트에는 자체 모델 수명 주기 관리 프로세스가 필요할 수도 있습니다.
테넌트별 미세 조정: 각 테넌트에 대해 고유한 미세 조정된 모델을 만드는 경우 미세 조정된 각 모델에 대해 별도의 모델 배포를 만들어야 합니다.
대부분의 사용 사례에는 미세 조정이 필요하지 않습니다. 일반적으로 Azure OpenAI On Your Data 또는 RAG(검색 보강 세대) 접근 방식을 사용하여 모델을 접지하는 것이 좋습니다.
데이터 상주: 이 방법은 고유한 데이터 상주 요구 사항을 지원합니다. 예를 들어 엄격한 데이터 상주 요구 사항이 있는 테넌트에 지역 모델 배포를 제공하고 엄격한 필요 없이 다른 테넌트에 전역 모델 배포를 사용할 수 있습니다.
각 모델 배포에는 고유한 URL이 있지만 기본 모델은 다른 Azure 고객과 공유된다는 것을 기억해야 합니다. 또한 공유 Azure 인프라를 사용합니다.
Azure OpenAI는 각 모델 배포에 대한 액세스 제어를 적용하지 않으므로 애플리케이션은 어떤 테넌트가 모델 배포에 도달할 수 있는지 제어해야 합니다.
테넌트 제공 Azure OpenAI 리소스
경우에 따라 테넌트는 자체 Azure 구독에서 Azure OpenAI 인스턴스를 만들고 애플리케이션에 액세스 권한을 부여할 수 있습니다. 이 방법은 다음과 같은 경우에 적합할 수 있습니다.
- 테넌트에는 다양한 모델에 대한 액세스, 특정 콘텐츠 필터링 정책 또는 프로비전된 처리량 사용과 같은 Microsoft의 특정 할당량 및 권한이 있습니다.
- 테넌트에는 솔루션에서 사용해야 하는 미세 조정된 모델이 있습니다.
- 처리를 위해 고객 관리형 Azure OpenAI 인스턴스를 통해 데이터를 처리하고 전송하려면 해당 환경의 구성 요소가 필요합니다.
테넌트의 구독에서 Azure OpenAI 인스턴스에 액세스하려면 테넌트가 애플리케이션에 액세스 권한을 제공해야 합니다. 애플리케이션은 Microsoft Entra 인스턴스를 통해 인증해야 합니다. 한 가지 방법은 멀티테넌트 Microsoft Entra 애플리케이션을 게시하는 것입니다. 다음 워크플로에서는 이 방법의 단계를 간략하게 설명합니다.
- 테넌트는 자체 Microsoft Entra 테넌트에 다중 테넌트 Microsoft Entra 애플리케이션을 등록합니다.
- 테넌트는 다중 테넌트 Microsoft Entra 애플리케이션에 해당 Azure OpenAI 리소스에 대한 적절한 수준의 액세스 권한을 부여합니다. 예를 들어 테넌트는 RBAC(역할 기반 액세스 제어)를 사용하여 애플리케이션을 Azure AI 서비스 사용자 역할에 할당할 수 있습니다.
- 테넌트는 만든 Azure OpenAI 리소스의 리소스 ID를 제공합니다.
- 애플리케이션 코드는 사용자 고유의 Microsoft Entra 인스턴스에서 다중 테넌트 Microsoft Entra 애플리케이션과 연결된 서비스 주체를 사용하여 테넌트의 Azure OpenAI 인스턴스에 액세스할 수 있습니다.
또는 각 테넌트에게 서비스를 사용할 서비스 주체를 만들고 자격 증명을 제공하도록 요청할 수 있습니다. 이 방법을 사용하려면 각 테넌트에 대한 자격 증명을 안전하게 저장하고 관리해야 하며 이는 잠재적인 보안 책임입니다.
테넌트가 Azure OpenAI 인스턴스에서 네트워크 액세스 제어를 구성하는 경우 액세스할 수 있는지 확인합니다.
다음 다이어그램에서는 테넌트의 구독에 있는 각 테넌트에 대한 Azure OpenAI에 대한 모델을 보여 줍니다.
다중 테넌시를 지원하는 Azure OpenAI 서비스의 기능
Assistants API
Assistants API는 AI 도우미를 만드는 데 적합한 기능을 Azure OpenAI 서비스에 추가합니다. 여기에는 도구 및 API를 호출하는 기능과 모델이 생성하는 답변을 접지하기 위한 검색 파일이 포함됩니다. 이를 통해 영구 대화 스레드를 서비스에서 관리할 수 있으며 샌드박스가 적용된 환경 내에서 코드를 생성하고 실행할 수 있습니다. 이러한 기능을 지원하려면 Assistants API에서 일부 데이터를 저장해야 합니다.
다중 테넌트 솔루션에서 Assistants API를 사용하는 경우 단일 테넌트 전용 도우미를 만들거나 여러 테넌트 간에 도우미를 공유할 수 있습니다. 특히 공유 도우미에 대해 저장된 모든 데이터에서 테넌트 격리를 고려하는 것이 중요합니다. 예를 들어 대화형 스레드가 각 테넌트에 대해 별도로 저장되도록 해야 합니다.
Assistants API는 호출할 함수 및 포함할 인수에 대한 애플리케이션 지침을 보내는 함수 호출을 지원합니다. 다운스트림 시스템 호출에 테넌트 ID를 포함하는 것과 같이 사용자가 호출하는 모든 함수가 다중 테넌트 인식인지 확인합니다. 애플리케이션 내에서 테넌트 ID를 확인하고 언어 모델을 사용하여 테넌트 ID를 전파하지 마세요.
Azure OpenAI On Your Data
Azure OpenAI On Your Data를 사용하면 큰 언어 모델이 언어 모델에서 응답을 생성하는 과정의 일부로 인덱스 및 데이터베이스와 같은 지식 원본을 직접 쿼리할 수 있습니다.
요청을 수행할 때 쿼리해야 하는 데이터 원본을 지정할 수 있습니다. 다중 테넌트 솔루션에서 데이터 원본이 다중 테넌트를 인식하고 요청에 테넌트 필터를 지정할 수 있는지 확인합니다. 테넌트 ID를 데이터 원본으로 적절하게 전파합니다. 예를 들어 Azure AI Search를 쿼리한다고 가정해 보겠습니다. 단일 인덱스에 여러 테넌트에 대한 데이터가 있는 경우 검색된 결과를 현재 테넌트의 ID로 제한하는 필터를 지정합니다. 또는 각 테넌트에 대한 인덱스가 만들어진 경우 현재 테넌트에 대한 올바른 인덱스 지정이 있는지 확인합니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- 소피아 페레이라 | 소프트웨어 엔지니어, ISV 및 DN Coe
기타 기여자:
- John Downs | 소프트웨어 수석 엔지니어
- 랜던 피어스 | 고객 엔지니어, ISV 및 DN Coe
- 파올로 살바토리 | 주요 고객 엔지니어, ISV 및 DN Coe
- 다니엘 스콧-레인스포드 | 파트너 솔루션 설계자
- 아르센 블라디미르스키 | 주요 고객 엔지니어, ISV 및 DN Coe
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.