Azure OpenAI Service에서 프로비전된 배포 사용 시작
다음 가이드에서는 Azure OpenAI Service 리소스를 사용하여 프로비전된 배포를 만드는 주요 단계를 안내합니다. 여기에 설명된 개념에 관한 자세한 내용은 다음을 참조하세요.
필수 조건
- Azure 구독 - 체험 구독 만들기
- Azure 기여자 또는 Cognitive Services 기여자 역할
PTU 할당량 사용 가능성을 가져오거나 확인합니다.
프로비전된 처리량 배포는 PTU(프로비전된 처리량 단위)라는 단위로 크기가 조정됩니다. 프로비전된 각 배포 유형에 대한 PTU 할당량은 지역별로 구독에 부여되며 모든 모델 및 버전에서 해당 지역에 배포할 수 있는 총 PTU 수를 제한합니다.
새 배포를 만들려면 원하는 배포 크기를 충당하는 데 사용할 수 있는(사용되지 않는) 할당량이 필요합니다. 예: 구독에서 미국 중남부 지역에 다음이 있는 경우:
- 총 PTU 할당량 = 500PTU
- 배포:
- 100PTU: GPT-4o, 2024-05-13
- 100PTU: GPT-4, 0613
그러면 200PTU의 할당량이 사용된 것으로 간주되며 새 배포를 만드는 데 사용할 수 있는 PTU가 300개 있습니다.
전역, 데이터 영역 및 지역 프로비저닝된 할당량의 기본 크기는 여러 지역의 적격 구독에 할당됩니다. Azure AI Foundry 포털의 할당량 창을 방문하여 원하는 구독 및 지역을 선택하여 지역에서 사용 가능한 할당량을 볼 수 있습니다. 예를 들어 아래 스크린샷은 선택한 구독에 대한 미국 서부의 할당량 한도인 500PTU를 보여줍니다. 사용 가능한 기본 할당량의 값은 더 낮을 수 있습니다.
“사용/제한” 열의 오른쪽에 있는 요청 할당량 링크를 클릭하여 추가 할당량을 요청할 수 있습니다. (위의 스크린샷에는 이 화면이 꺼져 있습니다).
Azure OpenAI 리소스 만들기
프로비전된 배포는 Azure 내에서 Azure OpenAI 리소스 개체를 통해 생성됩니다. 배포를 만들려는 각 지역에 Azure OpenAI 리소스가 있어야 합니다. 필요한 경우 Azure Portal을 사용하여 사용 가능한 할당량이 있는 지역에 리소스를 만듭니다.
참고 항목
Azure OpenAI 리소스는 여러 유형의 Azure OpenAI 배포를 동시에 지원할 수 있습니다. 프로비전된 배포에 새 리소스를 할당할 필요는 없습니다.
프로비전된 배포 만들기 - 용량 사용 가능
할당량을 확인한 후에는 배포를 만들 수 있습니다. 프로비전된 배포를 만들려면 다음 단계를 따릅니다. 설명된 선택 사항은 스크린샷에 표시된 항목을 반영합니다.
- Azure AI Foundry 포털에 로그인합니다.
- 프로비전된 배포에 사용하도록 설정된 구독을 선택하고 할당량이 있는 지역에서 원하는 리소스를 선택합니다.
- 왼쪽 탐색 메뉴의 관리에서 배포를 선택합니다.
- 새 배포 만들기를 선택하고 다음 필드를 구성합니다. 고급 옵션 드롭다운 메뉴를 확장합니다.
- 각 필드에 값을 작성합니다. 예를 들면 다음과 같습니다.
필드 | Description | 예시 |
---|---|---|
모델 선택 | 배포하려는 특정 모델을 선택합니다. | GPT-4 |
모델 버전 | 배포할 모델 버전을 선택합니다. | 0613 |
배포 이름 | 배포 이름은 코드에서 클라이언트 라이브러리 및 REST API를 사용하여 모델을 호출하는 데 사용됩니다. | gpt-4 |
콘텐츠 필터 | 배포에 적용할 필터링 정책을 지정합니다. 콘텐츠 필터링 방법에 대해 자세히 알아봅니다. | 기본값 |
배포 유형 | 이는 처리량과 성능에 영향을 미칩니다. 배포에 대한 배포 대화 상자 드롭다운에서 전역 프로비전된 관리형, DataZone 프로비전 관리 또는 프로비저닝된 관리형 선택 | 프로비전-관리 |
프로비전된 처리량 단위 | 배포에 포함할 처리량을 선택합니다. | 100 |
참고 항목
배포 대화 상자에는 Azure OpenAI Provisioned용 Azure 예약을 구매하여 약정 기간에 상당한 할인을 받을 수 있다는 알림이 포함되어 있습니다.
배포 설정을 입력한 후 가격 책정 확인을 클릭하여 계속합니다. 시간 단위로 비용을 지불하기로 선택한 경우 Azure 예약 없이 기간 할인을 제공하는 배포의 정가를 표시하는 가격 확인 대화 상자가 표시됩니다.
비용을 잘 모르는 경우 배포를 취소하고 프로비전된 배포에 대한 지불 모델 및 기본 비용을 이해한 후 계속 진행합니다. 이 단계에서는 결제 청구서에 대한 예기치 않은 높은 요금을 방지할 수 있습니다. 자신을 교육하는 리소스는 다음과 같습니다.
아래 이미지는 표시되는 가격 책정 확인을 보여 줍니다. 표시된 가격은 예제일 뿐입니다.
프로그래밍 방식으로 배포를 만들려면 다음 Azure CLI 명령을 사용하면 됩니다. 배포 유형을 지정하려면 의도한 sku-name
배포 유형에 GlobalProvisionedManaged
DataZoneProvisionedManaged
ProvisionedManaged
따라 또는 대상을 수정합니다. 원하는 프로비전된 처리량 단위 수로 sku-capacity
를 업데이트합니다.
az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group <myResourceGroupName> \
--deployment-name MyModel \
--model-name GPT-4 \
--model-version 0613 \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged
REST, ARM 템플릿, Bicep 및 Terraform을 사용하여 배포를 만들 수도 있습니다. 할당량 관리 방법 가이드에서 배포 자동화에 대한 섹션을 참조하고 , DataZoneProvisionedManaged
또는 ProvisionedManaged
대신Standard
으로 바꿉 sku.name
GlobalProvisionedManaged
니다.
프로비전된 배포 만들기 – 용량을 사용할 수 없음
용량 사용 가능성의 동적 특성으로 인해 선택한 리소스의 지역에 지정한 모델, 버전 및 수의 PTU 배포를 만들 수 있는 서비스 용량이 없을 수 있습니다.
이 이벤트에서 Azure AI Foundry 포털의 마법사는 사용 가능한 할당량 및 용량이 있는 다른 지역으로 안내하여 원하는 모델의 배포를 만듭니다. 이 경우 배포 대화 상자는 다음과 같습니다.
주의 사항:
- 사용 가능한 할당량에 포함된 PTU 수와 현재 배포할 수 있는 PTU 수를 보여주는 메시지가 표시됩니다.
- 서비스 용량보다 큰 수의 PTU를 선택하면 더 많은 용량을 얻을 수 있는 옵션을 제공하는 메시지와 대체 지역을 선택할 수 있는 단추가 표시됩니다. "다른 지역 보기" 단추를 클릭하면 배포를 만들 수 있는 Azure OpenAI 리소스 목록과 각 지역의 사용 가능한 할당량 및 서비스 용량에 따라 만들 수 있는 최대 크기 배포를 보여주는 대화 상자가 표시됩니다.
리소스를 선택하고 리소스 전환을 클릭하면 선택한 리소스를 사용하여 배포 대화 상자가 다시 표시됩니다. 그러면 새 지역에서 배포를 만들 수 있습니다.
필요에 따라 예약 구매
배포를 만든 후 Azure 예약을 통해 기간 할인을 구매할 수 있습니다. Azure 예약은 며칠 이상 배포를 사용하려는 사용자에게 시간당 요금에 상당한 할인을 제공할 수 있습니다.
구매 모델 및 예약에 대한 자세한 내용은 다음을 참조하세요.
Important
모델 배포에 필요한 용량 가용성은 동적이며 지역과 모델에 따라 자주 변경됩니다. 사용할 수 있는 PTU보다 많은 PTU에 대한 예약을 구매하는 것을 방지하려면 먼저 배포를 만든 다음, 배포한 PTU를 충당할 Azure Reservation을 구매합니다. 이 모범 사례는 예약 할인을 최대한 활용하고 사용할 수 없는 약정 기간 구매를 방지할 수 있도록 합니다.
첫 번째 추론 호출
프로비전된 배포에 대한 유추 코드는 표준 배포 유형과 동일합니다. 다음 코드 조각은 GPT-4 모델에 대한 채팅 완료 호출을 보여 줍니다. 이러한 모델을 프로그래밍 방식으로 처음 사용하는 경우 빠른 시작 가이드부터 시작하는 것이 좋습니다. 라이브러리 내에 다시 시도 논리가 포함되어 있으므로 버전 1.0 이상의 OpenAI 라이브러리를 사용하는 것이 좋습니다.
#Note: The openai-python library support for Azure OpenAI is in preview.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01"
)
response = client.chat.completions.create(
model="gpt-4", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response.choices[0].message.content)
Important
프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.
예상 처리량 이해
엔드포인트에서 달성할 수 있는 처리량은 배포된 PTU 수, 입력 크기, 출력 크기 및 호출 속도에 따라 달라집니다. 동시 호출 수와 처리된 총 토큰 수는 이러한 값에 따라 달라질 수 있습니다. 배포 처리량을 결정하는 권장 방법은 다음과 같습니다.
- 크기 예상을 위해 용량 계산기를 사용합니다. 할당량 페이지 및 프로비저닝된 탭에서 Azure AI Foundry 포털에서 용량 계산기를 찾을 수 있습니다.
- 실제 트래픽 워크로드를 사용하여 부하를 벤치마킹합니다. 벤치마킹에 대한 자세한 내용은 벤치마킹 섹션을 참조하세요.
배포 사용률 측정
지정된 수의 PTU(프로비전된 처리량 단위)를 배포하면 해당 엔드포인트에서 설정된 양의 유추 처리량을 사용할 수 있습니다. 이 처리량의 활용은 모델, 모델 버전 호출 속도, 프롬프트 크기, 생성 크기를 기반으로 하는 복잡한 수식입니다. 이 계산을 간소화하기 위해 Azure Monitor에서 사용률 메트릭을 제공합니다. 사용률이 100% 이상으로 증가한 후 배포에서는 새 호출에 대해 429를 반환합니다. 프로비전된 사용률은 다음과 같이 정의됩니다.
PTU 배포 사용률 =(해당 기간에 소비된 PTU)/(해당 기간에 배포된 PTU)
리소스에 대한 Azure-Monitor 섹션에서 사용률 측정값을 찾을 수 있습니다. https://portal.azure.com에 대한 모니터링 대시보드 로그인에 액세스하려면 Azure OpenAI 리소스로 이동하여 왼쪽 탐색 메뉴에서 메트릭 페이지를 선택합니다. 메트릭 페이지에서 '프로비전된 관리되는 사용률 V2' 메트릭을 선택합니다. 리소스에 배포가 두 개 이상인 경우 '분할 적용' 단추를 클릭하여 각 배포별로 값을 분할해야 합니다.
배포 모니터링에 대한 자세한 내용은 Azure OpenAI Service 모니터링 페이지를 참조하세요.
높은 사용률 처리
프로비전된 배포는 특정 모델을 실행하기 위해 할당된 컴퓨팅 용량을 제공합니다. Azure Monitor의 '프로비전된 관리되는 사용률 V2' 메트릭은 배포의 사용률을 1분 단위로 측정합니다. 프로비전-관리 배포는 수락된 호출이 일관된 호출별 최대 대기 시간으로 처리되도록 최적화되었습니다. 워크로드가 할당된 용량을 초과하면 서비스는 사용률이 100% 아래로 떨어질 때까지 429 HTTP 상태 코드를 반환합니다. 다시 시도 전 시간은 각각 초와 밀리초 단위로 시간을 제공하는 retry-after
및 retry-after-ms
응답 헤더에 제공됩니다. 이 방식은 호출별 대기 시간 대상을 유지하는 동시에 개발자에게 부하가 높은 상황(예: 다시 시도 또는 다른 환경/엔드포인트로 전환)을 처리하는 방법을 제어할 수 있는 권한을 부여합니다.
429 응답을 받으면 어떻게 해야 하나요?
429 응답은 호출 시 할당된 PTU가 완전히 소비되었음을 나타냅니다. 응답에는 다음 호출이 수락되기까지 기다려야 하는 시간을 알려 주는 retry-after-ms
및 retry-after
헤더가 포함되어 있습니다. 429 응답을 처리하기 위해 선택하는 방법은 애플리케이션 요구 사항에 따라 다릅니다. 다음은 몇 가지 고려 사항입니다.
- 호출당 대기 시간이 길어도 괜찮다면 클라이언트 쪽 다시 시도 논리를 구현하여
retry-after-ms
시간을 기다렸다가 다시 시도합니다. 이 방식을 사용하면 배포 시 처리량을 최대화할 수 있습니다. Microsoft에서 제공하는 클라이언트 SDK는 이미 적절한 기본값으로 이를 처리합니다. 사용 사례에 따라 추가 튜닝이 필요할 수도 있습니다. - 트래픽을 다른 모델, 배포 또는 환경으로 리디렉션하는 것이 좋습니다. 이 방식은 429 신호를 받는 즉시 이 작업을 수행할 수 있으므로 대기 시간이 가장 짧은 솔루션입니다. 429 신호는 높은 사용률을 추진할 때 예기치 않은 오류 응답이 아니라 프로비전된 배포에 대한 큐 및 높은 로드를 관리하기 위한 디자인의 일부입니다.
클라이언트 라이브러리 내에서 다시 시도 논리 수정
Azure OpenAI SDK는 기본적으로 클라이언트에서 백그라운드에서 429 응답을 다시 시도합니다(최대 다시 시도까지). 라이브러리는 retry-after
시간을 존중합니다. 사용자 환경에 더 적합하도록 다시 시도 동작을 수정할 수도 있습니다. 다음은 Python 라이브러리의 예입니다.
max_retries
옵션을 사용하여 다시 시도 설정을 구성하거나 사용하지 않도록 설정할 수 있습니다.
from openai import AzureOpenAI
# Configure the default for all requests:
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01",
max_retries=5,# default is 2
)
# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
model="gpt-4", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
벤치마크 실행
인스턴스의 정확한 성능과 처리량은 요청 종류와 정확한 워크로드에 따라 달라집니다. 워크로드의 처리량을 결정하는 가장 좋은 방법은 자체 데이터에 대한 벤치마크를 실행하는 것입니다.
이 작업을 지원하기 위해 벤치마킹 도구는 배포에서 벤치마크를 쉽게 실행할 수 있는 방법을 제공합니다. 이 도구는 사전 구성된 여러 가지 워크로드 형태와 함께 제공되며 주요 성능 메트릭을 출력합니다. GitHub 리포지토리: https://github.com/Azure/azure-openai-benchmark에서 도구 및 구성 설정에 대해 자세히 알아봅니다.
다음 워크플로를 권장합니다.
- 용량 계산기를 사용하여 처리량 PTU를 예상합니다.
- 이 트래픽 형태로 장기간(10분 이상) 벤치마크를 실행하여 안정적인 상태의 결과를 관찰합니다.
- 벤치마크 도구 및 Azure Monitor에서 사용률, 처리된 토큰 및 호출 속도 값을 관찰합니다.
- 클라이언트 구현을 사용하여 고유한 트래픽 형태와 워크로드로 벤치마크를 실행합니다. Azure OpenAI 클라이언트 라이브러리 또는 사용자 지정 논리를 사용하여 다시 시도 논리를 구현해야 합니다.
다음 단계
- 클라우드 애플리케이션 우수사례에 대한 자세한 내용은 클라우드 애플리케이션 우수사례를 참조하세요.
- 프로비전된 배포에 대한 자세한 내용은 프로비전 처리량이란?을 참조하세요.
- 각 SDK 내의 다시 시도 논리에 대한 자세한 내용은 다음을 확인합니다.