Azure AI Fundamentals

Azure AI Fundamentals 시험 노트개념 정리16 MIN

모델 고르기와 배포 옵션·구성 파라미터

Foundry 모델 카탈로그에서 무엇을 고를지, 어떤 배포 유형과 지역에 올릴지, temperature·top_p·max tokens를 어떻게 둘지까지 모델 한 개를 실제로 쓰기까지의 결정을 순서대로 정리합니다.

앞 두 노트가 「무슨 갈래의 일인가」와 「지켜야 할 것은 무엇인가」를 다뤘다면, 이 노트는 그 사이에 있는 결정을 다룹니다. 모델을 하나 골라 실제로 부를 수 있게 만들기까지 정해야 하는 것이 넷입니다 — 어느 모델을, 어떤 배포 유형으로, 어느 지역에 얼마만큼, 어떤 파라미터로 쓸 것인가. 문항은 이 넷을 요구사항 문장에 심어 두고 보기 넷 중 하나를 고르게 합니다.

모델 카탈로그와 모델의 갈래

모델 카탈로그(model catalog)는 Foundry에서 쓸 수 있는 모델을 한자리에 모아 둔 목록입니다. Microsoft가 만든 것, OpenAI 모델, 그리고 다른 곳에서 만든 오픈 웨이트 모델이 함께 들어 있고, 모델마다 무엇을 입력으로 받는지·얼마나 긴 맥락을 보는지·어느 지역에 배포할 수 있는지가 적혀 있습니다.

시험이 갈라 보게 하는 갈래는 넷입니다.

갈래 하는 일 골라야 하는 신호
대화·완성 모델 프롬프트를 받아 문장을 만든다 답변 생성, 요약, 초안 작성
추론 모델 답하기 전 더 오래 생각해 다단계 문제를 푼다 복잡한 논리, 수학, 계획 세우기
임베딩 모델 텍스트를 벡터로 바꾼다 의미 검색, 유사 문서 찾기, 분류
멀티모달 모델 텍스트와 함께 이미지·오디오를 입력으로 받는다 사진을 보고 답하기, 도면 읽기

가장 자주 나오는 오답이 임베딩 모델에게 답변을 시키는 보기입니다. 임베딩 모델의 출력은 문장이 아니라 숫자 벡터라서 대화에 쓸 수 없고, 반대로 대화 모델로는 벡터 인덱스를 만들 수 없습니다. 「의미가 비슷한 것을 찾는다」가 보이면 임베딩입니다.

SLM(소형 언어 모델)은 파라미터 수를 줄여 지연과 비용을 낮춘 모델이고 Microsoft의 Phi 계열이 여기 속합니다. 오픈 웨이트 모델은 가중치가 공개되어 내려받아 직접 돌릴 수 있는 모델을 말합니다 — 「모델을 우리 인프라 안에서 돌려야 한다」·「가중치를 직접 보유해야 한다」가 요구사항이면 이쪽입니다.

모달리티·비용·지연 사이의 맞바꿈

모델 선택 문항은 결국 세 축의 맞바꿈입니다.

  • 모달리티 — 입력에 이미지나 오디오가 있으면 그것을 받는 모델만 후보가 됩니다. 이 축은 협상 대상이 아니라 후보를 먼저 잘라 내는 축입니다.
  • 비용 — 토큰 단가는 대체로 큰 모델일수록 높고, 같은 모델이라도 출력 토큰이 입력 토큰보다 비쌉니다. 요청량이 많고 작업이 단순하면 작은 모델이 유리합니다.
  • 지연 — 큰 모델일수록, 추론 모델일수록 첫 응답까지 오래 걸립니다. 실시간 대화나 자동 완성처럼 사람이 기다리는 자리에서는 이 축이 먼저입니다.

실무에서 자주 쓰는 방법이 라우팅입니다. 쉬운 요청은 작은 모델로 보내고, 어렵거나 확신이 낮은 것만 큰 모델로 올려 평균 비용과 지연을 함께 낮춥니다.

배포 유형과 지역

카탈로그에서 모델을 골랐다고 곧바로 부를 수 있는 것이 아닙니다. 배포(deployment)를 만들어야 하고, 배포에는 이름이 붙습니다. 코드에서 넘기는 것은 모델의 공식 이름이 아니라 이 배포 이름입니다 — 같은 모델을 파라미터가 다른 배포 둘로 올려 두고 골라 부를 수 있는 이유가 이것입니다.

배포 유형 처리되는 곳 어울리는 자리
Standard 배포를 만든 그 지역 데이터가 특정 지역을 벗어나면 안 될 때
Global Standard Microsoft가 전역에서 여유 있는 곳으로 보낸다 지역 제약이 없고 처리량과 가용성이 우선일 때
Provisioned 미리 확보한 전용 처리 용량 트래픽이 꾸준하고 지연이 일정해야 할 때

앞의 둘은 쓴 만큼 토큰으로 계산하는 종량제이고, Provisioned는 용량을 미리 사 두는 방식이라 트래픽이 들쭉날쭉하면 낭비가 큽니다. 급하지 않은 대량 작업을 모아 처리해 단가를 낮추는 일괄 처리 방식도 따로 있습니다.

지역은 두 가지를 정합니다. 어느 모델을 쓸 수 있는가(모델마다 배포 가능한 지역이 다릅니다)와 데이터가 어디서 처리되는가입니다. 「고객 데이터가 국내를 벗어나면 안 된다」가 요구사항이면 Global Standard가 아니라 해당 지역의 Standard 배포입니다.

할당량은 TPM(tokens per minute), 즉 분당 토큰 수로 매겨집니다. 구독과 지역과 모델별로 상한이 있고, 그 안에서 배포마다 나눠 줍니다. 한도를 넘기면 요청이 거절되는데, 이때 받는 것이 HTTP 429이고 대응은 잠시 기다렸다 다시 보내는 것입니다.

from openai import AzureOpenAI

client = AzureOpenAI(
    azure_endpoint="https://<리소스이름>.openai.azure.com/",  # 리소스에 붙는 주소
    api_key="<키>",                                            # 또는 관리 ID로 인증
    api_version="2024-10-21",
)

response = client.chat.completions.create(
    model="gpt-4o-support",        # 모델 이름이 아니라 배포 이름
    messages=[
        {"role": "system", "content": "너는 사내 규정을 안내하는 도우미다."},
        {"role": "user", "content": "연차는 며칠부터 쓸 수 있나요?"},
    ],
    temperature=0.2,
    max_tokens=300,
)
print(response.choices[0].message.content)

부르는 데 필요한 것이 엔드포인트와 키 둘입니다. 엔드포인트는 리소스에 붙는 주소이고 키는 그 리소스를 부를 자격입니다. 키는 유출되면 그대로 요금이 되므로 코드에 적지 않고 환경 변수나 Key Vault에 두며, 더 나은 방법은 키를 아예 쓰지 않고 Azure의 관리 ID로 권한을 주는 것입니다.

요청마다 정하는 파라미터

배포가 정하는 것이 「무엇을 얼마나 쓸 수 있는가」라면, 파라미터는 요청 하나하나의 성격을 정합니다.

파라미터 무엇을 바꾸는가 올리면
temperature 다음 토큰을 고를 때의 무작위성 표현이 다양해지고 예측하기 어려워진다
top_p 후보를 확률 상위 몇 %로 자를지 후보 폭이 넓어진다
max tokens 출력의 최대 길이 답이 길어질 수 있고 비용도 늘어난다
frequency penalty 이미 많이 쓴 토큰에 주는 벌점 같은 단어의 반복이 줄어든다
presence penalty 한 번이라도 나온 토큰에 주는 벌점 새로운 화제로 옮겨 간다

세 가지를 기억하면 이 표의 문항은 대부분 풀립니다. 첫째, 분류·추출처럼 답이 하나로 정해진 일에는 temperature를 낮춥니다. 광고 문구처럼 다양한 표현이 필요한 일에만 올립니다. 둘째, temperature와 top_p는 둘 다 무작위성을 다루므로 한쪽만 조절하는 것이 권장됩니다. 셋째, max tokens는 출력만 자릅니다 — 입력이 긴 것을 해결해 주지 않고, 값이 작으면 답이 문장 중간에서 잘려 나옵니다.

여기에 요청마다가 아니라 배포에 붙는 설정이 하나 더 있습니다. 콘텐츠 필터는 증오·성적·폭력·자해 네 범주에 대해 입력과 출력을 검사해 걸러 내며, 범주마다 어느 심각도부터 막을지 수준을 정합니다. 기본값이 적용된 상태로 배포되고, 정상적인 요청까지 막힌다면 수준을 조정하는 것이지 검사 자체를 없애는 것이 아닙니다.

연습 문제

  1. 배포 하나에 200,000 TPM이 할당되어 있고 요청 한 건에 입력 1,500 토큰·출력 500 토큰이 듭니다. 이 배포가 1분에 처리할 수 있는 요청은 최대 몇 건입니까?
    ① 100건
    ② 133건
    ③ 400건
    ④ 1,000건
    ①. 할당량은 입력과 출력을 합해 셉니다. 요청당 1,500+500=2,0001{,}500 + 500 = 2{,}000 토큰이므로 200,000÷2,000=100200{,}000 \div 2{,}000 = 100 건입니다.
  2. 위 파이썬 조각에서 model="gpt-4o-support"가 가리키는 것은?
    ① 카탈로그에 실린 모델의 공식 이름
    ② 리소스에 만든 배포의 이름
    ③ 리소스 이름
    ④ API 버전 문자열
    ②. 호출할 때 넘기는 것은 배포 이름입니다. 그래서 같은 모델을 서로 다른 이름의 배포 둘로 올려 두고 코드에서 골라 부를 수 있습니다.
  3. 금융사가 상담 로그를 요약하려는데 「데이터가 국내 지역을 벗어나 처리되면 안 된다」는 조건이 있습니다. 가장 알맞은 배포 유형은?
    ① Global Standard — 가용성이 가장 높으므로
    ② 해당 지역의 Standard
    ③ Provisioned — 전용 용량이므로 지역과 무관하게 안전하다
    ④ 어느 유형이든 콘텐츠 필터를 켜면 된다
    ②. 처리 지역을 고정하는 것은 Standard입니다. Global Standard는 전역에서 여유 있는 곳으로 요청을 보내므로 이 조건과 어긋나고, Provisioned는 용량을 사 두는 방식이지 지역 제약을 대신하지 않습니다.
  4. 영수증 이미지에서 금액을 읽어 숫자로만 답하게 하려 합니다. 파라미터 설정으로 가장 알맞은 것은?
    ① temperature를 1.2로 올린다
    ② temperature를 0에 가깝게 두고 max tokens를 작게 잡는다
    ③ presence penalty를 최대로 올린다
    ④ top_p와 temperature를 동시에 올린다
    ②. 답이 하나로 정해진 일이라 무작위성이 필요 없고, 출력이 짧으므로 max tokens를 크게 잡을 이유도 없습니다.
  5. 답변이 늘 문장 중간에서 끊깁니다. 가장 먼저 확인할 것은?
    ① 콘텐츠 필터 수준
    ② max tokens 값
    ③ frequency penalty 값
    ④ 배포 지역
    ②. 출력 길이를 자르는 것이 max tokens입니다. 컨텍스트 윈도우에 여유가 있는데도 끊긴다면 대개 이 값이 작은 것입니다.
  6. 사내 문서 20만 건 중 질문과 의미가 비슷한 것을 찾아 근거로 붙이려 합니다. 필요한 모델은?
    ① 대화 완성 모델 하나면 충분하다
    ② 임베딩 모델로 벡터를 만들어 두고, 답변 생성에는 대화 모델을 쓴다
    ③ 추론 모델 하나로 20만 건을 매번 읽게 한다
    ④ 멀티모달 모델이 필요하다
    ②. 의미로 찾는 일은 임베딩의 자리이고 답변 문장을 만드는 일은 대화 모델의 자리라, 둘을 이어 씁니다. ③은 컨텍스트 윈도우로도 비용으로도 불가능합니다.
  7. 하루 24시간 고른 트래픽이 들어오고 응답 지연이 일정해야 하는 사내 서비스가 있습니다. 예산은 확보되어 있습니다. 가장 알맞은 배포 유형은?
    ① Standard
    ② Global Standard
    ③ Provisioned
    ④ 일괄 처리
    ③. 전용 용량을 미리 확보하는 방식이라 지연이 일정합니다. 트래픽이 들쭉날쭉하면 낭비가 크지만 이 시나리오는 고른 트래픽이고, ④는 급하지 않은 대량 작업용이라 실시간 서비스와 맞지 않습니다.

문항 셋 이상이 같은 함정을 씁니다 — 모델·배포·파라미터 중 어느 층의 문제인지를 섞어 놓는 것입니다. 답이 끊긴다는 증상에 배포 지역이 보기로 들어오고, 지역 제약에 콘텐츠 필터가 보기로 들어옵니다. 증상을 읽고 그것이 세 층 중 어디에 속하는지부터 정하면 보기 둘은 곧바로 떨어져 나갑니다.

Azure AI Fundamentals 시험 노트 전체 보기