애플리케이션에 엔터프라이즈급 부하 분산을 추가하여 Azure OpenAI 서비스 토큰 및 모델 할당량 제한을 초과하여 채팅 앱을 확장하는 방법을 알아봅니다. 이 방법은 Azure API Management를 사용하여 세 개의 Azure OpenAI 리소스 간에 트래픽을 지능적으로 전달합니다.
이 문서에서는 두 개의 별도 샘플을 배포해야 합니다.
- 채팅 앱:
- 부하 분산 장치 샘플이 배포된 후에 채팅 앱을 배포하십시오.
- 채팅 앱을 이미 한 번 배포한 경우 부하 분산 장치에 대한 사용자 지정 엔드포인트를 지원하도록 환경 변수를 변경하고 다시 배포합니다.
- Azure API Management를 사용하는 부하 분산 장치.
메모
이 문서에서는 문서의 예제 및 지침에 대한 기준으로 하나 이상의
Azure API Management를 사용하여 Azure OpenAI 부하 분산을 위한 아키텍처
Azure OpenAI 리소스에는 특정 토큰 및 모델 할당량 제한이 있으므로 단일 Azure OpenAI 리소스를 사용하는 채팅 앱은 이러한 제한으로 인해 대화에 실패하는 경향이 있습니다.
Azure OpenAI 리소스가 강조 표시된 채팅 앱 아키텍처를 보여 주는
이러한 제한에 도달하지 않고 채팅 앱을 사용하려면 API Management에서 부하 분산 솔루션을 사용합니다. 이 솔루션은 API Management의 단일 엔드포인트를 채팅 앱 서버에 원활하게 노출합니다.
세 개의 Azure OpenAI 리소스 앞에서 Azure API Management를 사용한 채팅 앱 아키텍처를 보여 주는
API Management 리소스는 API 계층으로서 Azure OpenAI 리소스 집합 앞에 있습니다. API 계층은 정상 상태와 제한 상태의 두 가지 시나리오에 적용됩니다. 토큰 및 모델 할당량을 사용할 수 있는
세 개의 Azure OpenAI 엔드포인트 그룹이 있는 일반적인 시나리오를 보여 주는
할당량 제한으로 인해 리소스가 제한되지
클라이언트가 다시 시도할 때까지 기다려야 하는 시간을 초 단위로 나타내는 응답 헤더와 함께 429 오류 응답 코드가 있는 제약 시나리오를 보여주는
.
필수 구성 요소
Azure 구독. 하나를 무료로 만드세요.
개발 컨테이너 두 샘플 모두에 사용할 수 있으며 이 문서를 완료하는 데 필요한 모든 종속성이 있습니다. GitHub Codespaces(브라우저)에서 또는 Visual Studio Code를 사용하여 로컬로 개발 컨테이너를 실행할 수 있습니다.
- GitHub Codespaces를 사용하려면 GitHub 계정만 필요합니다.
Azure API Management 로컬 로드 밸런서 샘플 앱 열다
중요하다
모든 GitHub 계정은 두 개의 핵심 인스턴스를 사용하여 매월 최대 60시간 동안 GitHub Codespaces를 사용할 수 있습니다. 자세한 내용은 GitHub Codespaces 월별 포함된 스토리지 및 코어 시간참조하세요.
Azure API Management의 로드 밸런서를 배포하세요
Azure에 부하 분산 장치를 배포하려면 Azure Developer CLI(
AZD)에 로그인합니다.azd auth login로그인 지침 작성을 완료하세요.
부하 분산 장치 앱을 배포합니다.
azd up배포에 대한 구독 및 지역을 선택합니다. 채팅 앱과 동일한 구독 및 지역이 될 필요는 없습니다.
계속하기 전에 배포가 완료되기를 기다립니다. 이 프로세스는 최대 30분이 걸릴 수 있습니다.
부하 분산 장치 엔드포인트 가져오기
다음 Bash 명령을 실행하여 배포의 환경 변수를 확인합니다. 이 정보는 나중에 필요합니다.
azd env get-values | grep APIM_GATEWAY_URL
부하 분산 장치 엔드포인트를 사용하여 채팅 앱 다시 배포
이러한 예제는 채팅 앱 샘플을 사용하여 완료됩니다.
다음 선택 항목 중 하나를 사용하여 채팅 앱 샘플의 개발 컨테이너를 엽니다.
언어 GitHub Codespaces (GitHub 코드스페이스) 비주얼 스튜디오 코드 닷넷 열기
JavaScript 열기
파이썬 열기
Azure Developer CLI(
AZD)에 로그인합니다.azd auth login로그인 지침 작성을 완료하세요.
AZD같은 이름으로chat-app환경을 만듭니다.azd env new <name>Azure OpenAI 요청에 대한 사용자 지정 URL을 사용하도록 채팅 앱의 백 엔드에 지시하는 다음 환경 변수를 추가합니다.
azd env set OPENAI_HOST azure_custom이 환경 변수를 추가하여 채팅 앱의 백 엔드에 Azure OpenAI 요청에 대한 사용자 지정 URL을 알릴 수 있습니다.
azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>채팅 앱 배포:
azd up
TPM 할당량 구성
기본적으로 부하 분산 장치의 각 Azure OpenAI 인스턴스는 TPM(분당 30,000개 토큰)의 용량으로 배포됩니다. 할당량이 부족할 염려 없이 여러 사용자에게 확장할 수 있다는 확신을 가지고 채팅 앱을 사용할 수 있습니다. 다음과 같은 경우 이 값을 변경합니다.
- 배포 용량 오류가 발생하면, 값을 낮추십시오.
- 더 높은 용량이 필요합니다. 값을 올리세요.
다음 명령을 사용하여 값을 변경합니다.
azd env set OPENAI_CAPACITY 50부하 분산 장치를 다시 배포합니다.
azd up
리소스 정리
채팅 앱 및 부하 분산 장치를 완료하면 리소스를 정리합니다. 이 문서에서 만든 Azure 리소스는 Azure 구독에 청구됩니다. 나중에 이러한 리소스가 필요하지 않은 경우 더 많은 요금이 발생하지 않도록 해당 리소스를 삭제합니다.
채팅 앱 리소스 정리
채팅 앱 문서로 돌아가서 해당 리소스를 정리합니다.
부하 분산 장치 리소스 정리
Azure 리소스를 삭제하고 소스 코드를 제거합니다.
azd down --purge --force
스위치는 다음을 제공합니다.
-
purge: 삭제된 리소스는 즉시 제거됩니다. 분당 Azure OpenAI 토큰을 다시 사용할 수 있습니다. -
force: 삭제는 사용자 동의 없이 자동으로 수행됩니다.
리소스 정리
GitHub Codespaces 환경을 삭제하면 계정에 대해 받을 수 있는 무료 코어별 시간 할당량을 최대화할 수 있습니다.
중요하다
GitHub 계정의 자격에 관한 더 많은 정보를 보려면 GitHub Codespaces에 매달 포함된 스토리지 및 코어 시간을 참조하세요.
GitHub Codespaces 대시보드에 로그인하세요.
GitHub 리포지토리
azure-samples/openai-apim-lb에서 제공된 현재 실행 중인 코드스페이스를 찾아보세요.
GitHub Codespaces 항목에 대한 상황에 맞는 메뉴를 열고 삭제을 선택합니다.
도움 받기
Azure API Management 부하 분산 장치를 배포하는 데 문제가 있는 경우 리포지토리의 문제 웹 페이지에 문제를 추가합니다.
샘플 코드
이 문서에 사용된 샘플은 다음과 같습니다.
- RAG를 사용한 Python 채팅 앱
- Azure API Management 사용하여 Azure Load Balancer
관련 콘텐츠
- Azure API Management의 진단 데이터를 Azure Monitor
에서 봅니다. - Azure Load Testing을 사용하여 채팅 앱의 로드 테스트를 수행합니다.