Azure OpenAI Service에 대한 Azure 잘 설계된 프레임워크 관점
Azure OpenAI 서비스는 LLM(OpenAI 대규모 언어 모델)에 대한 REST API 액세스를 제공하여 Azure 네트워킹 및 보안 기능을 추가합니다. 이 문서에서는 워크로드 아키텍처의 일부로 Azure OpenAI를 사용할 때 정보에 입각한 결정을 내리는 데 도움이 되는 아키텍처 권장 사항을 제공합니다. 이 지침은 Azure Well-Architected Framework 핵심 요소를 기반으로 합니다.
Important
이 가이드를 사용하는 방법
각 섹션에는 기술 범위로 지역화된 디자인 전략과 함께 중요한 아키텍처 영역을 제공하는 디자인 검사 목록이 있습니다.
또한 이러한 전략을 구체화하는 데 도움이 될 수 있는 기술 기능에 대한 권장 사항도 포함되어 있습니다. 권장 사항은 Azure OpenAI 및 해당 종속성에 사용할 수 있는 모든 구성의 전체 목록을 나타내지 않습니다. 대신 디자인 관점에 매핑된 주요 권장 사항을 나열합니다. 권장 사항을 사용하여 개념 증명을 빌드하거나 기존 환경을 최적화합니다.
주요 권장 사항을 보여 주는 기본 아키텍처: 초기 계획 OpenAI 엔드 투 엔드 채팅 참조 아키텍처입니다.
기술 범위
이 검토는 Azure OpenAI에만 중점을 둡니다.
안정성
안정성 핵심 요소의 목적은 충분한 복원력과 오류로부터 신속하게 복구할 수 있는 기능을 구축하여 지속적인 기능을 제공하는 것입니다.
안정성 디자인 원칙은 개별 구성 요소, 시스템 흐름 및 시스템 전체에 적용되는 고급 디자인 전략을 제공합니다.
디자인 검사 목록
안정성에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다. 비즈니스 요구 사항과 관련성을 확인합니다. 필요에 따라 더 많은 접근 방식을 포함하도록 전략을 확장합니다.
복원력: 사용 사례에 따라 종량제 또는 프로비전된 처리량의 적절한 배포 옵션을 선택합니다. 예약된 용량은 복원력을 증가하므로 프로덕션 솔루션에 대해 프로비전된 처리량을 선택합니다. 종량제 접근 방식은 개발/테스트 환경에 이상적입니다.
중복성: Azure OpenAI 배포 앞에 적절한 게이트웨이를 추가합니다. 게이트웨이에는 제한과 같은 일시적인 오류를 견딜 수 있는 기능과 여러 Azure OpenAI 인스턴스로 라우팅할 수 있는 기능이 있어야 합니다. 지역 중복성을 구축하기 위해 다른 지역의 인스턴스로 라우팅하는 것이 좋습니다.
복원력: 프로비전된 처리량을 사용하는 경우 오버플로를 처리하기 위해 종량제 인스턴스도 배포하는 것이 좋습니다. 프로비전된 처리량 모델이 제한되면 게이트웨이를 통해 종량제 인스턴스에 대한 호출을 라우팅할 수 있습니다.
복원력: 용량 사용량을 모니터링하여 처리량 제한을 초과하지 않는지 확인합니다. 용량 사용량을 정기적으로 검토하여 보다 정확한 예측을 달성하고 용량 제약 조건으로 인한 서비스 중단을 방지합니다.
복원력: 큰 데이터 파일을 사용하여 미세 조정하기 위한 지침을 따르고 Azure Blob 저장소에서 데이터를 가져옵니다. 요청이 원자성이며 다시 시도하거나 다시 시작하지 못하기 때문에 다중 파트 양식을 통해 업로드할 때 큰 파일(100MB 이상)이 불안정해질 수 있습니다.
복구: 미세 조정된 모델 및 Azure OpenAI에 업로드된 학습 데이터에 대한 복구 계획을 포함하는 복구 전략을 정의합니다. Azure OpenAI에는 자동 장애 조치(failover)가 없으므로 전체 서비스 및 학습 데이터가 포함된 스토리지와 같은 모든 종속성을 포괄하는 전략을 설계해야 합니다.
권장 사항
추천 | 장점 |
---|---|
종량제에 대한 속도 제한 모니터링: 종량제 방식을 사용하는 경우 모델 배포에 대한 속도 제한을 관리하고 TPM(분당 토큰) 및 분당 요청(RPM)의 사용을 모니터링합니다. | 이 중요한 처리량 정보는 배포에 대한 수요를 충족하기 위해 할당량에서 충분한 TPM을 할당하는 데 필요한 정보를 제공합니다. 충분한 할당량을 할당하면 배포된 모델에 대한 호출이 제한되지 않습니다. |
프로비전된 처리량에 대한 프로비전 관리 사용률 모니터링: 프로비전된 처리량 지불 모델을 사용하는 경우 프로비전 관리 사용률을 모니터링합니다. | 프로비전 관리 사용률을 모니터링하여 배포된 모델에 대한 호출의 제한을 방지하기 위해 100%를 초과하지 않도록 하는 것이 중요합니다. |
동적 할당량 기능 사용: 워크로드 예산에서 지원하는 경우 모델 배포에서 동적 할당량을 사용하도록 설정하여 과잉 프로비전을 수행합니다. | 동적 할당량을 사용하면 Azure 관점에서 사용 가능한 용량이 있는 한 배포에서 일반적으로 할당량보다 더 많은 용량을 사용할 수 있습니다. 추가 할당량 용량은 원치 않는 제한을 방지할 수 있습니다. |
콘텐츠 필터 조정: 콘텐츠 필터를 조정하여 지나치게 공격적인 필터에서 가양성이 최소화됩니다. | 콘텐츠 필터는 불투명 위험 분석을 기반으로 프롬프트 또는 완료를 차단합니다. 워크로드에 대해 예상되는 사용량을 허용하도록 콘텐츠 필터가 조정되었는지 확인합니다. |
보안
보안 핵심 요소의 목적은 워크로드에 대해 기밀성, 무결성 및 가용성을 보증하는 데 있습니다.
보안 디자인 원칙은 Azure OpenAI를 중심으로 기술 디자인에 접근 방식을 적용하여 이러한 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공할 수 있습니다.
디자인 검사 목록
보안에 대한 디자인 검토 체크리스트를 기반으로 디자인 전략을 시작하고 취약성 및 컨트롤을 식별하여 보안 태세를 개선합니다. 그런 다음 Azure OpenAI에 대한 Azure 보안 기준을 검토합니다. 마지막으로, 필요에 따라 더 많은 접근 방식을 포함하도록 전략을 확장합니다.
기밀성 보호: Azure OpenAI에 학습 데이터를 업로드하는 경우 데이터 암호화에 고객 관리형 키를 사용하고, 키 순환 전략을 구현하고, 학습, 유효성 검사 및 학습 결과 데이터를 삭제합니다. 학습 데이터에 외부 데이터 저장소를 사용하는 경우 해당 저장소에 대한 보안 모범 사례를 따릅니다. 예를 들어 Azure Blob Storage의 경우 암호화에 고객 관리형 키를 사용하고 키 순환 전략을 구현합니다. 관리 ID 기반 액세스를 사용하고, 프라이빗 엔드포인트를 사용하여 네트워크 경계를 구현하고, 액세스 로그를 사용하도록 설정합니다.
기밀성 보호: Azure OpenAI 리소스에서 액세스할 수 있는 아웃바운드 URL을 제한하여 데이터 반출을 방지합니다.
무결성 보호: 최소 권한 원칙을 사용하고 키 대신 개별 ID를 사용하여 시스템에 대한 사용자 액세스를 인증하고 권한을 부여하는 액세스 제어를 구현합니다.
무결성 보호: 탈옥 위험 감지를 구현하여 프롬프트 삽입 공격으로부터 언어 모델 배포를 보호합니다.
가용성 보호: 보안 컨트롤을 사용하여 모델 사용 할당량이 소진될 수 있는 공격을 방지합니다. 네트워크에서 서비스를 격리하도록 컨트롤을 구성할 수 있습니다. 인터넷에서 서비스에 액세스할 수 있어야 하는 경우 게이트웨이를 사용하여 라우팅 또는 제한을 사용하여 의심되는 남용을 차단하는 것이 좋습니다.
권장 사항
추천 | 장점 |
---|---|
보안 키: 아키텍처에 Azure OpenAI 키 기반 인증이 필요한 경우 애플리케이션 코드가 아닌 Azure Key Vault에 해당 키를 저장합니다. | 비밀을 Key Vault에 저장하여 코드에서 분리하면 비밀이 유출될 가능성이 줄어듭니다. 또한 분리는 비밀의 중앙 관리를 용이하게 하여 키 순환과 같은 책임을 완화합니다. |
액세스 제한: 워크로드에 필요한 경우가 아니면 Azure OpenAI에 대한 공용 액세스를 사용하지 않도록 설정합니다. Azure 가상 네트워크의 소비자로부터 연결하는 경우 프라이빗 엔드포인트를 만듭니다. | Azure OpenAI에 대한 액세스를 제어하면 권한이 없는 사용자의 공격을 방지할 수 있습니다. 프라이빗 엔드포인트를 사용하면 네트워크 트래픽이 애플리케이션과 플랫폼 간에 비공개로 유지됩니다. |
Microsoft Entra ID: 인증에 Microsoft Entra ID를 사용하고 RBAC(역할 기반 액세스 제어)를 사용하여 Azure OpenAI에 대한 액세스 권한을 부여합니다. Azure AI 서비스에서 로컬 인증을 사용하지 않도록 설정하고 disableLocalAuth 를 true 로 설정합니다. 완료 또는 이미지 생성을 수행하는 ID에 Cognitive Services OpenAI 사용자 역할을 부여합니다. 모델 자동화 파이프라인 및 임시 데이터 과학 액세스 권한에 Cognitive Services OpenAI 기여자 같은 역할을 부여합니다. |
Microsoft Entra ID를 사용하면 ID 관리 구성 요소가 중앙 집중화되고 API 키를 사용할 필요가 없어집니다. Microsoft Entra ID와 함께 RBAC를 사용하면 사용자 또는 그룹이 작업을 수행하는 데 필요한 권한을 정확하게 갖출 수 있습니다. 이러한 종류의 세분화된 액세스 제어는 Azure OpenAI API 키를 사용할 수 없습니다. |
고객 관리형 키 사용: Azure OpenAI에 업로드된 미세 조정된 모델 및 학습 데이터에 대해 고객 관리형 키를 사용합니다. | 고객 관리형 키를 사용하면 훨씬 더 유연하게 액세스 제어를 만들고, 순환하고, 사용하지 않도록 설정하고, 철회할 수 있습니다. |
탈옥 공격으로부터 보호: Azure AI 콘텐츠 보안 스튜디오를 사용하여 탈옥 위험을 감지합니다. | Azure OpenAI 배포의 안전 메커니즘을 우회하려는 프롬프트를 식별하고 차단하려는 탈옥 시도를 감지합니다. |
비용 최적화
비용 최적화는 비즈니스 요구 사항을 충족하면서 지출 패턴을 감지하고, 중요한 영역에 대한 투자의 우선 순위를 지정하고, 조직의 예산을 충족하도록 다른 영역에서 최적화하는 데 중점을 둡니다.
비용 최적화 디자인 원칙을 읽고 이러한 목표를 달성하기 위한 접근 방식과 Azure OpenAI와 관련된 기술 디자인 선택에 필요한 장단분에 대해 알아봅니다.
디자인 검사 목록
투자 비용 최적화를 위한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다. 워크로드가 할당된 예산에 맞게 조정되도록 디자인을 미세 조정합니다. 디자인은 적절한 Azure 기능을 사용하고, 투자를 모니터링하고, 시간이 지남에 따라 최적화할 기회를 찾아야 합니다.
비용 관리: 프롬프트 크기를 고려하여 비용 모델을 개발합니다. 프롬프트 입력 및 응답 크기와 텍스트가 토큰으로 변환되는 방식을 이해하면 실행 가능한 비용 모델을 만드는 데 도움이 됩니다.
사용량 최적화: 토큰 사용량을 예측할 수 있도록 Azure OpenAI에 대한 종량제 가격 책정부터 시작합니다.
속도 최적화: 일정 기간 동안 토큰 사용량이 충분히 높고 예측 가능한 경우 더 나은 비용 최적화를 위해 프로비전된 처리량 가격 책정 모델을 사용합니다.
사용량 최적화: 모델을 선택할 때 모델 가격 책정 및 기능을 고려합니다. 텍스트 생성 또는 완료 작업과 같이 덜 복잡한 작업을 위한 저렴한 모델로 시작합니다. 언어 번역 또는 콘텐츠 이해와 같은 더 복잡한 작업을 위해 고급 모델을 사용하는 것이 좋습니다. 텍스트 포함, 이미지 생성 또는 전사 시나리오와 같은 사용 사례에 적합한 모델을 선택할 때 다른 모델 기능 및 최대 토큰 사용 제한을 고려합니다. 요구 사항에 가장 적합한 모델을 신중하게 선택하면 원하는 애플리케이션 성능을 달성하면서 비용을 최적화할 수 있습니다.
사용 최적화: 생성할 완료 횟수를 나타내는 API 호출과
n
같은max_tokens
토큰 제한 제약 조건을 사용합니다.사용 최적화: Azure OpenAI 가격 중단점(예: 이미지 생성과 같은 미세 조정 및 모델 중단점)을 최대화합니다. 미세 조정은 시간당 요금이 부과되므로 시간당 사용 가능한 만큼 시간을 사용하여 다음 청구 기간으로 미끄러지지 않도록 하면서 미세 조정 결과를 개선합니다. 마찬가지로 100개의 이미지를 생성하는 비용은 이미지 1개에 대한 비용과 동일합니다. 가격 중단점을 최대화하여 이점을 얻을 수 있습니다.
사용 최적화: 지속적인 호스팅 요금이 발생하지 않도록 더 이상 사용되지 않는 미세 조정된 모델을 제거합니다.
사용량 조정: 프롬프트 입력 및 응답 길이를 최적화합니다. 더 긴 프롬프트는 더 많은 토큰을 사용하여 비용을 높입니다. 그러나 충분한 컨텍스트가 누락된 프롬프트는 모델이 좋은 결과를 생성하는 데 도움이 되지 않습니다. 모델이 유용한 응답을 생성하기에 충분한 컨텍스트를 제공하는 간결한 프롬프트를 만듭니다. 또한 응답 길이 제한을 최적화해야 합니다.
비용 효율성: 호출당 오버헤드를 최소화하기 위해 가능한 경우 일괄 처리 요청으로 전체 비용을 줄일 수 있습니다. 일괄 처리 크기를 최적화해야 합니다.
비용 효율성: 모델에는 미세 조정 비용이 다르기 때문에 솔루션에 미세 조정이 필요한 경우 이러한 비용을 고려합니다.
모니터링 및 최적화: 모델 사용량을 모니터링하는 비용 추적 시스템을 설정합니다. 이 정보를 사용하여 모델 선택 사항 및 프롬프트 크기를 알릴 수 있습니다.
권장 사항
추천 | 장점 |
---|---|
제한을 설정하는 클라이언트 코드 디자인: 사용자 지정 클라이언트는 모델당 토큰 수(max_tokens ) 또는 생성n ()에 대한 완료 횟수에 대한 최대 제한과 같은 Azure OpenAI 완료 API의 제한 기능을 사용해야 합니다. 제한을 설정하면 서버가 클라이언트 요구 이상으로 생성되지 않습니다. |
API 기능을 사용하여 사용량을 제한할 경우 서비스 사용량이 클라이언트 요구 사항에 맞게 조정됩니다. 이렇게 하면 모델이 필요한 것보다 더 많은 토큰을 사용하는 지나치게 긴 응답을 생성하지 않도록 하여 비용을 절감할 수 있습니다. |
종량제 사용량 모니터링: 종량제 방식을 사용하는 경우 TPM 및 RPM의 사용량을 모니터링합니다. 이 정보를 사용하여 사용할 모델과 같은 아키텍처 디자인 결정을 알리고 프롬프트 크기를 최적화합니다. | TPM 및 RPM을 지속적으로 모니터링하면 관련 메트릭을 제공하여 Azure OpenAI 모델의 비용을 최적화할 수 있습니다. 이 모니터링을 모델 기능 및 모델 가격 책정과 결합하여 모델 사용을 최적화할 수 있습니다. 이 모니터링을 사용하여 프롬프트 크기를 최적화할 수도 있습니다. |
프로비전된 처리량 사용량 모니터링: 프로비전된 처리량을 사용하는 경우 프로비전 관리 사용률을 모니터링하여 구매한 프로비전된 처리량을 활용하지 않도록 합니다. | 프로비저닝 관리 사용률을 지속적으로 모니터링하면 프로비전된 처리량을 과소 사용하는지 이해해야 하는 정보를 얻을 수 있습니다. |
비용 관리: OpenAI 에서 비용 관리 기능을 사용하여 비용을 모니터링하고, 예산을 설정하여 비용을 관리하고, 관련자에게 위험 또는 변칙을 알리는 경고를 만듭니다. | 비용 모니터링, 예산 설정 및 경고 설정은 적절한 책임 프로세스를 통해 거버넌스를 제공합니다. |
운영 우수성
운영 우수성은 주로 개발 관행, 관찰성 및 릴리스 관리를 위한 절차에 중점을 둡니다.
운영 우수성 디자인 원칙은 워크로드의 운영 요구 사항에 대한 이러한 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.
디자인 검사 목록
운영 우수성에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다. 이 검사 목록은 Azure OpenAI와 관련된 관찰성, 테스트 및 배포에 대한 프로세스를 정의합니다.
Azure DevOps 문화권: 개발, 테스트 및 프로덕션과 같은 다양한 환경에서 Azure OpenAI 인스턴스를 배포합니다. 개발 주기 내내 지속적인 학습 및 실험을 지원할 수 있는 환경이 있는지 확인합니다.
관찰 가능성: 적절한 메트릭을 모니터링, 집계 및 시각화합니다.
관찰 가능성: Azure OpenAI 진단이 요구 사항에 충분하지 않은 경우 Azure OpenAI 앞에 Azure API Management와 같은 게이트웨이를 사용하여 들어오는 프롬프트와 허용되는 경우 나가는 응답을 모두 기록하는 것이 좋습니다. 이 정보는 들어오는 프롬프트에 대한 모델의 효과를 이해하는 데 도움이 될 수 있습니다.
자신 있는 배포: IaC(Infrastructure as Code)를 사용하여 모델 미세 조정에 필요한 Azure OpenAI, 모델 배포 및 기타 인프라를 배포합니다.
안심하고 배포: LLMOps(대규모 언어 모델 작업) 사례를 따라 배포, 미세 조정 및 프롬프트 엔지니어링을 포함하여 Azure OpenAI LLM의 관리를 운영합니다.
효율성 자동화: 키 기반 인증을 사용하는 경우 자동화된 키 회전 전략을 구현합니다.
권장 사항
추천 | 장점 |
---|---|
Azure Diagnostics 사용 및 구성: Azure OpenAI Service에 대한 진단을 사용하도록 설정하고 구성합니다. | 진단은 메트릭 및 로그를 수집하고 분석하여 Azure OpenAI의 가용성, 성능 및 작업을 모니터링하는 데 도움이 됩니다. |
성능 효율성
성능 효율성은 용량을 관리하여 부하 가 증가하는 경우에도 사용자 환경을 유지하는 것입니다. 이 전략에는 리소스 크기 조정, 잠재적인 병목 현상 식별 및 최적화, 최고 성능 최적화가 포함됩니다.
성능 효율성 디자인 원칙은 예상된 사용량에 대해 이러한 용량 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.
디자인 검사 목록
Azure OpenAI 워크로드에 대한 주요 성능 지표를 기반으로 기준을 정의하기 위한 성능 효율성 에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다.
용량: 소비자의 탄력성 수요를 예측합니다. 비동기 및 일괄 처리될 수 있는 동기 응답 및 낮은 우선 순위 트래픽이 필요한 우선 순위가 높은 트래픽을 식별합니다.
용량: 소비자의 예상 수요에 따라 토큰 소비 요구 사항을 벤치마크합니다. 프로비전된 처리량 단위(PTU) 배포를 사용하는 경우 처리량의 유효성을 검사하는 데 도움이 되도록 Azure OpenAI 벤치마킹 도구를 사용하는 것이 좋습니다.
용량: 프로덕션 워크로드에 프로비전된 처리량을 사용합니다. 프로비전된 처리량은 지정된 모델 버전에 대한 전용 메모리 및 컴퓨팅, 예약된 용량 및 일관된 최대 대기 시간을 제공합니다. 종량제 제품은 사용량이 많은 지역에서 대기 시간 증가 및 제한과 같은 시끄러운 이웃 문제를 겪을 수 있습니다. 또한 종량제 접근 방식은 보장된 용량을 제공하지 않습니다.
용량: Azure OpenAI 배포 앞에 적절한 게이트웨이를 추가합니다. 게이트웨이가 동일하거나 다른 지역의 여러 인스턴스로 라우팅할 수 있는지 확인합니다.
용량: 예측된 사용량을 처리하기 위해PTU를 할당하고 TPM 배포를 통해 이러한PTU를 보완하여 해당 제한을 초과하는 탄력성을 처리합니다. 이 방법은 기본 처리량과 탄력적 처리량을 결합하여 효율성을 높입니다. 다른 고려 사항과 마찬가지로 이 방법을 사용하려면 PTU 제한에 도달할 때 요청을 TPM 배포로 라우팅하는 사용자 지정 게이트웨이 구현이 필요합니다.
용량: 우선 순위가 높은 요청을 동기적으로 보냅니다. 낮은 우선 순위 요청을 큐에 대기하고 수요가 낮은 경우 일괄 처리로 보냅니다.
용량: 속도와 출력 복잡성 간의 절충을 고려하여 성능 요구 사항에 맞는 모델을 선택합니다. 모델 성능은 선택한 모델 유형에 따라 크게 달라질 수 있습니다. 속도를 위해 설계된 모델은 빠른 응답 시간을 제공하므로 빠른 상호 작용이 필요한 애플리케이션에 도움이 될 수 있습니다. 반대로, 더 정교한 모델은 응답 시간이 늘어나면 더 높은 품질의 출력을 제공할 수 있습니다.
성능 달성: 챗봇 또는 대화형 인터페이스와 같은 애플리케이션의 경우 스트리밍을 구현하는 것이 좋습니다. 스트리밍은 사용자에게 증분 방식으로 응답을 전달하여 Azure OpenAI 애플리케이션의 인식된 성능을 향상시키고 사용자 환경을 개선할 수 있습니다.
성능 달성: 미세 조정을 커밋하기 전에 미세 조정 을 사용하는 시기를 결정합니다. 모델을 조정하는 데 필요한 정보가 너무 길거나 복잡하여 프롬프트에 맞지 않는 경우와 같이 미세 조정에 적합한 사용 사례가 있지만 프롬프트 엔지니어링 및 RAG(검색 보강 세대) 접근 방식이 작동하지 않거나 더 비싸지 않은지 확인합니다.
성능 달성: 소비자 그룹당 전용 모델 배포를 사용하여 소비자 그룹 간의 시끄러운 인접을 방지하는 데 도움이 되는 모델별 사용 격리를 제공하는 것이 좋습니다.
권장 사항
Azure OpenAI의 성능 효율성에 권장되는 구성은 없습니다.
Azure Policy
Azure는 Azure OpenAI 및 해당 종속성과 관련된 광범위한 기본 제공 정책 집합을 제공합니다. 이전 권장 사항 중 일부는 Azure Policy를 통해 감사할 수 있습니다. 다음 정책 정의를 고려합니다.
이러한 Azure Policy 정의는 Azure OpenAI에 대한 Azure Advisor 보안 모범 사례 권장 사항이기도 합니다.
다음 단계
다음 문서를 이 문서에서 강조 표시된 권장 사항을 보여 주는 리소스로 간주합니다.
- 이 참조 아키텍처를 워크로드 에 이 문서의 지침인 초기 OpenAI 엔드 투 엔드 채팅 참조 아키텍처를 적용하는 방법의 예로 사용합니다.
- Azure Machine Learning 제품 설명서를 사용하여 구현 전문 지식을 구축합니다.