Skip to main content

Azure AI 모델 추론 API 사용 가이드

Microsoft Azure AI 모델 추론 API로 서버리스 추론 사용하기! 이 글은 AI 번역본입니다. 오역이 의심되면 댓글로 알려주세요.
Created on September 12|Last edited on September 12
The Azure AI 모델 추론 API 다양한 모델과 일관된 방식으로 상호작용할 수 있게 해 효율성과 유연성을 높여줍니다. 이 가이드에서는 Azure AI 모델 추론 API를 활용하는 방법을 살펴보겠습니다. Weave 우리가 다루는 모델에 대한 인사이트를 얻기 위해.


목차



Azure AI 모델 추론 API란 무엇인가요?

Azure AI 모델 추론 API는 마이크로소프트가 제공하는 클라우드 기반 서비스로, 개발자가 API 엔드포인트를 통해 AI 모델을 배포하고 활용할 수 있게 해줍니다. 다양한 AI 모델과 상호작용하기 위한 일관된 인터페이스를 제공하여, 모델 배포와 추론을 간편하고 효율적으로 수행할 수 있습니다.
이 API는 다양한 AI 모델을 지원하여, 개발자가 방대한 인프라를 미리 구축하지 않고도 고급 머신러닝 기능을 활용할 수 있게 해줍니다. API 엔드포인트는 배포된 모델과 상호작용할 수 있도록 API가 제공하는 특정 URL을 의미합니다. 이러한 엔드포인트를 통해 애플리케이션에 AI 모델을 손쉽게 통합할 수 있으며, 실시간 예측과 인사이트를 제공할 수 있습니다.
Azure AI 모델 추론 API는 다양한 모델과 일관되고 균일한 방식으로 상호작용할 수 있도록 해, 모델 배포와 추론을 수월하게 합니다. 이를 통해 개발자는 기본 코드를 변경하지 않고도 모델을 전환하며 성능을 비교할 수 있어 유연성과 효율성이 향상됩니다. 이 API를 사용하면 모델 관리와 인프라의 복잡성에 신경 쓰지 않고, 지능형 애플리케이션 구축에 집중할 수 있습니다.
이러한 모델은 서버리스 API 엔드포인트 또는 관리형 추론으로 배포할 수 있어, 다양한 사용 사례에 맞는 확장성과 유연성을 제공합니다. Azure AI 모델 추론 API를 사용하면 개발자는 특정 작업에 가장 적합한 모델을 손쉽게 선정하고 배포할 수 있으며, 모델 상호작용을 위한 일관된 인터페이스를 유지하면서 성능과 효율을 향상시킬 수 있습니다. 이 기능은 여러 모델과 각각의 통합을 관리하는 데 따르는 부담을 크게 줄여 주어, 애플리케이션에서 AI의 잠재력을 최대한 활용하려는 개발자에게 강력한 도구가 됩니다.
본 가이드는 추론 API의 서버리스 버전을 다룹니다. 마이크로소프트는 토큰 기준 과금이 아닌 시간 기준으로 과금되는 관리형 컴퓨트용 API도 제공합니다. 관리형 컴퓨트 API의 사용 방식은 서버리스 API와 대체로 유사하지만, 주요 차이는 모델에 질의를 보낼 때 사용하는 입력 형식입니다.
💡

Azure AI 모델 추론 API에서 사용할 수 있는 모델은 무엇인가요?

Azure AI 모델 추론 API는 다양한 AI 애플리케이션에 맞는 폭넓은 모델을 종합적으로 제공합니다. 여기에는 기존의 AI 모델과 고도화된 모델이 포함됩니다. 기초 모델 예를 들어 소형 언어 모델(SLM)인 Phi-3 그리고 대형 언어 모델(LLM) 같은 GPT-4o이러한 다양성 덕분에 개발자는 특정 사용 사례에 가장 적합한 모델을 선택할 수 있어 성능과 효율성이 향상됩니다.
이 API는 사용자가 인프라를 관리할 필요가 없고 고도로 확장 가능한 서버리스 API 엔드포인트에 배포된 모델을 지원합니다. 서버리스 엔드포인트는 배포 과정을 단순화하여, 개발자가 기반 인프라를 신경 쓰지 않고 애플리케이션에 AI 기능을 통합하는 데 집중할 수 있게 해줍니다. 서버리스 배포가 가능한 모델은 다음과 같습니다:
  • Cohere Embed V3 모델 제품군
  • Cohere Command R 모델 제품군
  • Meta Llama 2 챗 모델 제품군
  • 메타 라마 3 인스트럭트 모델 제품군
  • 미스트랄 스몰
  • 미스트랄 라지
  • Jais 모델 제품군
  • Jamba 모델 제품군
  • Phi-3 모델 제품군
서버리스 배포는 워크로드에 따라 자동으로 확장되어 리소스를 효율적으로 활용할 수 있게 합니다. 이는 트래픽이 변동하거나 예측하기 어려운 애플리케이션에 특히 유리하며, 수동 확장의 필요를 없애고 유휴 인프라로 인한 비용을 줄여 줍니다. 반면 관리형 추론은 안정적이고 예측 가능한 환경을 제공하여 성능 일관성이 가장 중요한 미션 크리티컬 애플리케이션에 적합합니다.

Azure AI 모델 추론 API를 사용하면 어떤 이점이 있나요?

Azure AI 모델 추론 API는 애플리케이션에 AI를 도입하려는 개발자와 조직에 여러 가지 핵심 이점을 제공합니다. 그중 가장 중요한 장점之一는 확장성입니다. 이 API는 수요에 따라 애플리케이션이 자동으로 확장되도록 ���여, 리소스를 효율적으로 활용하고 피크 시간대에도 일관된 성능을 유지할 수 있게 합니다. 이러한 확장성은 트래픽이 변동하거나 예측하기 어려운 애플리케이션에 특히 중요합니다.
비용 효율성도 중요한 이점입니다. 서버리스 엔드포인트를 사용하면 인프라 유지 관리에 드는 비용을 줄일 수 있습니다. 서버리스 배포는 사용한 만큼만 비용을 지불하도록 보장하여 유휴 리소스와 관련된 지출을 없애 줍니다. 이 모델은 강력한 AI 기능을 활용하면서도 예산을 꼼꼼히 관리해야 하는 스타트업과 소규모 조직에 특히 유리합니다.
사용 편의성은 Azure AI 모델 추론 API의 두드러진 특징입니다. 이 API는 AI 모델 배포와 관리에 수반되는 많은 복잡성을 추상화합니다. 개발자는 AI 인프라에 대한 깊은 전문 지식 없이도 애플리케이션 구축과 개선에 집중할 수 있습니다. 또한 다양한 모델과 상호 작용하기 위한 일관된 인터페이스를 제공하여 통합 과정을 단순화하고 개발 시간을 단축합니다.
W&B Weave는 메서드의 입력과 출력을 추적하는 데 사용하는 또 다른 도구로, 이번 가이드에서도 활용합니다. 메서드에 주석을 추가하면 @weave.opWeave는 모델에 전송된 쿼리, 제공된 컨텍스트, 웹 검색에 대한 결정, 모델이 생성한 최종 응답 등 이러한 함수들을 거치는 데이터를 기록합니다. 이러한 통합은 개발 과정을 간소화하여 팀이 더 빠르게 반복하고 더 나은 결과를 얻을 수 있도록 돕습니다.

튜토리얼: Azure AI 모델 추론 API를 W&B Weave로 구현하기

Azure 환경 설정하기

모델 추론 API를 사용하려면 결제 정보가 추가된 Azure 계정이 필요합니다. 계정을 만든 후 Azure 콘솔의 검색창에서 "Azure AI Studio"를 검색하세요.

Azure AI Studio 페이지로 이동한 뒤, 왼쪽 상단의 "New Azure AI hub" 버튼을 클릭하세요.

다음으로 워크스페이스를 생성하겠습니다. 배포를 위해 선택하는 지역이 중요한데, 각 지역의 가용성은 확인할 수 있습니다. 여기.
East US 2를 사용하고, 기존 구독과 리소스 그룹을 선택하겠습니다. 리소스 그룹이 없다면 “Create new” 버튼을 클릭해 새로 만들 수 있습니다.

워크스페이스를 만든 후에는 Azure AI Studio 메인 페이지에서 더 자세한 정보를 확인할 수 있습니다. 여기에는 워크스페이스 관련 정보가 표시되며, 오른쪽 하단의 버튼을 통해 Azure AI Studio를 실행할 수 있습니다.


모델 배포하기

스튜디오에 들어가면 “Model Catalog” 버튼을 클릭한 뒤, 서버리스 추론을 지원하는 모델로 필터링할 수 있습니다.

이 모델들이 모두 Serverless Inference API에서 지원되는 것은 아닙니다. 배포하려는 모델 중 서버리스 추론 API에서 지원되는 모델을 클릭하세요. 모델을 클릭하면, 모델을 배포할 수 있는 페이지가 열립니다.

모델을 배포하려면 프로젝트가 필요합니다. 오른쪽, 프로젝트 이름 드롭다운 위에 있는 "Create a new project" 버튼을 클릭해 새 프로젝트를 생성할 수 있습니다.

모델을 배포한 후 Azure AI Studio의 “Deployments” 탭으로 이동하세요. 이 페이지에서 배포한 각 모델을 확인할 수 있습니다.


요청을 보낼 때 API에 인증하기 위해 모델의 엔드포인트 URL과 기본 키를 확인해야 합니다. 사용하려는 모델을 클릭하면 다음과 같은 화면이 표시됩니다.

여기에서 기본 키와 엔드포인트 URL을 함께 복사해 두세요. 나중에 Python을 사용해 모델에 추론을 실행할 때 사용할 것입니다.

추론 요청 보내기

requests 라이브러리와 함께 Python을 사용하겠습니다. JSON 요청 방식을 쓰는 것이 충분히 효과적이면서도 더 간단하다고 판단해 Azure AI Studio 라이브러리는 사용하지 않았습니다. 아래 스크립트로 모델에 추론을 실행할 수 있습니다. 사용하는 모델에 따라 엔드포인트 URL과 기본 키만 바꾸고, 나머지 코드는 그대로 두면 됩니다.

import weave
from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import SystemMessage, UserMessage
from azure.core.credentials import AzureKeyCredential

# Initialize Weave for logging
weave.init('azure-api')

# Define the endpoint URL and API key (hardcoded for this example)
ENDPOINT_URL = "your endpoint url"
PRIMARY_KEY = "your primary key"


PROMPT = "How many languages are in the world?"



# Initialize the ChatCompletionsClient
client = ChatCompletionsClient(
endpoint=ENDPOINT_URL,
credential=AzureKeyCredential(PRIMARY_KEY)
)

@weave.op
def run_inference(prompt, client):
"""
Function to perform inference using the provided client and prompt.
"""
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content=prompt),
]
)
try:
content = response.choices[0].message.content
print("Response:", content)
return content
except Exception as e:
print(f"Failed to get response: {e}")
return None


# Perform inference using the hardcoded prompt
run_inference(PROMPT, client)


이 스크립트는 Python과 azure.ai.inference 라이브러리를 사용해 Azure AI 모델에 추론 요청을 보내도록 설계되었으며, 로깅을 위해 Weave와 연동됩니다. 스크립트는 다음과 같은 필요한 라이브러리를 임포트합니다. ChatCompletionsClient 추론 요청 처리를 위한 Azure AI, 로깅을 위한 Weave, 인증을 위한 AzureKeyCredential.
전역 변수 ENDPOINT_URL 그리고 PRIMARY_KEY Azure AI 모델의 엔드포인트 정보를 보관하도록 정의되어 있으며, 실제 값으로 설정해야 합니다. 스크립트는 이 자격 증명을 사용해 ChatCompletionsClient를 초기화하고, 이를 통해 Azure AI 서비스로 요청을 보낼 수 있습니다.
핵심 함수인 get_inference는 프롬프트를 모델에 보내는 과정을 처리합니다. 이 함수에는 다음 데코레이터가 적용됩니다. @weave.op, 이 데코레이터는 작업 로깅을 가능하게 합니다. 함수는 어시스턴트의 역할을 지정하는 시스템 메시지와 사용자의 프롬프트를 포함한 요청을 보냅니다. 그런 다음 응답을 받아 내용만 추출하고 콘솔에 출력합니다.
스크립트의 메인 블록은 하드코딩된 프롬프트를 정의하고 다음 함수를 호출합니다. run_inference 모델의 응답을 가져와 결과를 표시하고, 응답을 가져오지 못한 경우 오류 메시지를 보여주는 함수.
다음 명령으로 스크립트를 실행할 수 있습니다:
python inference.py

Weave로 출력 더 명확하게 이해하기

Weave는 모델의 입력과 출력을 중앙에서 기록하는 데 사용되는 강력한 도구입니다. The @weave.op() 데코레이터는 데코레이팅된 함수의 입력과 출력을 기록하여, 모델을 거치는 데이터를 쉽게 추적하고 분석할 수 있도록 합니다.
The @weave.op 데코레이터는 모델 추론을 처리하는 함수에 적용됩니다. 이 데코레이터는 함수의 입력과 출력을 기록하여 함수 실행 과정을 자세히 추적할 수 있게 합니다. 이러한 데이터를 로깅하면 Weave가 디버깅과 성능 분석을 도와주며, 데이터 흐름을 추적하고 문제를 식별할 수 있도록 해 줍니다.
Weave 내부 로그는 다음과 같습니다:



여러 모델 비교

Inference API의 큰 장점 중 하나는 다양한 모델 간에 API가 일관되게 제공된다는 점입니다. 이 일관성 덕분에 한 모델과 연동을 마치면, 코드 변경을 최소화한 채로 다른 모델로 손쉽게 전환하거나 여러 모델을 동시에 테스트할 수 있습니다. 통일된 인터페이스를 통해 동일한 코드 구조를 재사용할 수 있어, 개발 시간과 노력을 크게 줄일 수 있습니다.
이는 애플리케이션에 가장 적합한 모델을 찾기 위해 서로 다른 모델을 실험해야 하는 상황에서 특히 유용합니다. 예를 들어, 처음에는 더 작은 모델로 시작해 애플리케이션의 기능을 빠르게 검증하고, 요구 사항이 발전함에 따라 더 강력한 모델로 전환할 수 있습니다. 일관된 API 인터페이스 덕분에 통합 로직을 다시 작성할 필요 없이 이러한 전환을 매끄럽게 수행할 수 있습니다.
비슷한 프롬프트에서 두 모델을 비교하기 위해, 앞선 단계에 따라 Mistral Small Instruct와 Phi-3 Instruct의 서버리스 인스턴스를 생성했습니다. 아래 스크립트는 이 비교 과정을 쉽게 진행할 수 있도록 설계되었습니다. 또한 스크립트에는 Weave와의 로깅 연동이 포함되어 있어, 각 모델의 입력과 출력을 자세히 기록하고, 동작과 성능을 이해하기가 한결 수월합니다. 스크립트는 다음과 같습니다:
from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import SystemMessage, UserMessage
from azure.core.credentials import AzureKeyCredential
import weave

# Initialize Weave for logging
weave.init('azure-api')

# Define global variables for the two models
MODEL_1_ENDPOINT_URL = "your first model endpoint url"
MODEL_1_PRIMARY_KEY = "your first model key"

MODEL_2_ENDPOINT_URL = "your second model endpoint url"
MODEL_2_PRIMARY_KEY = "your second model key"

PROMPT = "How many languages are in the world?"

# Initialize the ChatCompletionsClient for each model
client1 = ChatCompletionsClient(
endpoint=MODEL_1_ENDPOINT_URL,
credential=AzureKeyCredential(MODEL_1_PRIMARY_KEY)
)

client2 = ChatCompletionsClient(
endpoint=MODEL_2_ENDPOINT_URL,
credential=AzureKeyCredential(MODEL_2_PRIMARY_KEY)
)


@weave.op
def get_model_prediction(prompt, client):
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content=prompt),
]
)
try:
return parse_response(response)
except Exception as e:
print(f"Failed to get response: {e}")
return None

def parse_response(response):
if response.choices:
choice = response.choices[0]
if choice.message and choice.message.content:
content = choice.message.content
print(f"Model response content: {content}")
return content
if choice.finish_reason:
finish_reason = choice.finish_reason
print(f"Finish reason: {finish_reason}")
return "No valid response"

if __name__ == "__main__":
if not MODEL_1_ENDPOINT_URL or not MODEL_1_PRIMARY_KEY or not MODEL_2_ENDPOINT_URL or not MODEL_2_PRIMARY_KEY:
print("Error: Missing endpoint URL or primary key for one or both models")
else:
print("Response from Model 1:")
response1 = get_model_prediction(PROMPT, client1)
if response1:
print(response1)
else:
print("No response or failed to decode the response from Model 1.")

print("\nResponse from Model 2:")
response2 = get_model_prediction(PROMPT, client2)
if response2:
print(response2)
else:
print("No response or failed to decode the response from Model 2.")

Weave 내부에서는 서로 다른 입력과 출력에 따라 응답을 표시할 수도 있습니다! 이 예시에서는 오른쪽 상단의 열 관리자 버튼을 사용해 Weave 트레이스 뷰어에 프롬프트, 엔드포인트, 출력만 표시하겠습니다. 아래와 같습니다:




다음으로 특정 프롬프트에 대한 필터를 추가하겠습니다. 실제로는 로깅되는 함수에 전달되는 어떤 특정 키에도 적용할 수 있습니다. 아래와 같이 프롬프트에 대한 필터를 추가합니다:

이 필터를 추가하면, 아래에서 결과를 확인할 수 있습니다!

보시다시피 Mistral Small Instruct와 Phi-3 Instruct 모델의 응답은 매우 비슷하며, 차이는 정수 결과의 형식뿐입니다. Phi-3 모델의 정수 응답에는 쉼표가 포함되어 있죠. 아주 “사소한” 차이처럼 보이지만, 머신러닝에서는 이런 “사소한” 디테일이 전부입니다! Weave를 사용하면 모델이 내놓는 이런 미묘한 차이를 시각화하고, 제품에 적합한 모델과 학습 데이터를 선택하는 데 있어 더 나은 결정을 내릴 수 있습니다.

Weave를 사용해 지리 데이터셋에서 AI 모델 평가하기

이제 GPT-4o로 만든 사용자 지정 지리 데이터셋을 사용해 두 개의 AI 모델 성능을 비교하는 방법을 Weave의 평가 기능으로 보여드리겠습니다. Weave의 Evaluation 클래스를 활용하면 각 모델의 성능을 체계적으로 평가하고, 우리 애플리케이션에 더 적합한 모델을 합리적으로 선택할 수 있습니다.

Weave 평가 소개

평가 중심 개발은 일관된 데이터셋을 기준으로 변경 사항을 체계적으로 테스트하여, 애플리케이션을 신뢰성 있게 반복 개선하도록 도와줍니다. The Evaluation Weave의 클래스는 사용자 지정 스코어링 함수를 사용해 주어진 데이터셋에서 모델의 성능을 평가하도록 설계되었습니다. 이 방식은 결과를 정확하게 비교할 수 있게 해 주며, 개별 출력과 점수를 깊이 탐색할 수 있는 풍부한 UI를 제공하여 모델 성능에 대한 더 깊은 인사이트를 제공합니다.

사용자 지정 지리 데이터셋

이번에 사용할 데이터셋은 지리에 관한 질문과 그에 대응하는 정답으로 구성되어 있습니다. 예시는 다음과 같습니다:
[
{"question": "What is the largest desert in the world?", "expected": "Sahara"},
{"question": "Which river is the longest in the world?", "expected": "Nile"},
{"question": "What is the capital of Japan?", "expected": "Tokyo"},
{"question": "Which ocean is the largest by surface area?", "expected": "Pacific Ocean"},
{"question": "Which desert is known as the 'Cold Desert'?", "expected": "Gobi Desert"}
]

이 데이터셋은 일반적인 지리 관련 질의에 대해 정확하고 적절한 응답을 생성하는 모델의 능력을 검증하도록 설계되었습니다.

전체 스크립트

다음은 Weave를 사용해 평가를 설정하고, 모델을 정의하며, 비교를 실행하는 파이썬 스크립트입니다:
import requests
import json
import time
import asyncio
import weave
from weave import Evaluation, Model
from azure.ai.inference import ChatCompletionsClient
from azure.ai.inference.models import SystemMessage, UserMessage
from azure.core.credentials import AzureKeyCredential


# Initialize Weave for logging
weave.init('azure-api-eval-geo')


# Define global variables for the two models
MODEL_1_ENDPOINT_URL = "https://Mistral-small-achqr.eastus2.models.ai.azure.com/chat/completions"
MODEL_1_PRIMARY_KEY = "your key"

MODEL_2_ENDPOINT_URL = "https://Phi-3-small-128k-instruct-fcsez.eastus2.models.ai.azure.com/chat/completions"
MODEL_2_PRIMARY_KEY = "your key"


# Initialize the ChatCompletionsClient for each model
def init_client(endpoint, key):
return ChatCompletionsClient(
endpoint=endpoint,
credential=AzureKeyCredential(key)
)


def get_model_prediction(prompt, client, model_name):
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content=prompt),
]
)
try:
content = response.choices[0].message.content
prompt_tokens = response.usage.prompt_tokens
completion_tokens = response.usage.completion_tokens
total_tokens = response.usage.total_tokens
# Update the returned result to include the correct token structure
return {
'output': content,
'model': model_name,
'usage': {
'input_tokens': prompt_tokens,
'output_tokens': completion_tokens,
'total_tokens' : total_tokens
}
}
except Exception as e:
print(f"Failed to get response: {e}")
return {
'output': "No valid response",
'usage': {
'input_tokens': 0,
'output_tokens': 0,
'total_tokens': 0
}
}

# Define custom scoring functions
@weave.op()
def substring_match(expected: str, model_output: dict) -> dict:
match = expected.lower() in model_output['output'].lower()
return {
'substring_match': match
}


# Define the base model for Weave
class MistralSmall(Model):
model_name: str = "Mistral-small"
endpoint: str = MODEL_1_ENDPOINT_URL
primary_key: str = MODEL_1_PRIMARY_KEY
client: ChatCompletionsClient = None # Declare the client field

def __init__(self):
super().__init__() # Initialize the base class if needed
# Initialize the client and assign it explicitly
object.__setattr__(self, 'client', init_client(self.endpoint, self.primary_key))

@weave.op()
def predict(self, question: str):
result = get_model_prediction(question, self.client, self.model_name)
return result


class Phi3Small(Model):
model_name: str = "Phi-3-small"
endpoint: str = MODEL_2_ENDPOINT_URL
primary_key: str = MODEL_2_PRIMARY_KEY
client: ChatCompletionsClient = None # Declare the client field

def __init__(self):
super().__init__() # Initialize the base class if needed
# Initialize the client and assign it explicitly
object.__setattr__(self, 'client', init_client(self.endpoint, self.primary_key))

@weave.op()
def predict(self, question: str):
result = get_model_prediction(question, self.client, self.model_name)
return result

def run_evaluation(model_class):
# Load the dataset
with open('dataset.json', 'r') as f:
dataset = json.load(f)

# Instantiate the model
model = model_class()

# Create evaluation for the model
evaluation = Evaluation(dataset=dataset, scorers=[substring_match])

# Run the evaluation for the model
print(f"Evaluating {model.model_name}:")
asyncio.run(evaluation.evaluate(model.predict))
print(f"{model.model_name} evaluation completed.")


if __name__ == "__main__":
# Run evaluation for both models sequentially
run_evaluation(MistralSmall)
run_evaluation(Phi3Small)

스크립트 설명

초기화 및 설정 단계에서 Weave는 다음 이름으로 로깅을 위해 초기화됩니다 azure-api-eval-geo두 모델의 엔드포인트와 기본 키, Mistral-Small 그리고 Phi-3-small, 이 정의됩니다. 모델 예측을 위해, the get_model_prediction 함수는 지정한 모델 엔드포인트로 프롬프트를 보내고, 제공된 엔드포인트에 따라 적절한 API 키를 사용해 응답을 가져옵니다.
생성된 텍스트를 가져오는 것뿐 아니라, get_model_prediction 함수는 모델 출력에서 토큰 사용 통계도 수집합니다. 구체적으로, 프롬프트에 사용된 토큰 수인 input_tokens, 응답으로 생성된 토큰 수인 output_tokens, 그리고 입력과 출력 토큰의 합인 total_tokens를 기록합니다. 이 정보는 모델 출력에 구조화되어 포함되며, 로깅과 분석을 위해 Weave로 전달되어 모델 평가 중 리소스 사용량을 쉽게 추적할 수 있게 합니다.
사용자 정의 점수 함수, substring_match은(는) 모델이 생성한 텍스트에 기대한 답이 부분 문자열로 포함되어 있는지 확인하도록 정의됩니다. 이 함수는 모델 응답의 정확도를 평가하는 데 사용됩니다. 두 가지 모델 클래스, MistralSmall 그리고 Phi3Small, 이(가) 정의되며, 각각에는 데코레이터가 적용된 predict 메서드가 포함됩니다 @weave.op() 평가 중 입력과 출력을 로깅하기 위해.
평가 실행 단계에서, the run_evaluation 함수는 데이터세트를 로드하고 모델 클래스를 인스턴스화한 뒤 평가를 실행하며, 모든 데이터를 추가 분석을 위해 Weave에 로깅합니다. 이어서 __main__ 블록에서 두 모델의 평가가 순차적으로 실행되어, 동일한 데이터세트에서 성능을 비교할 수 있습니다.

평가 대시보드

평가가 완료되면 Weave는 결과를 시각화하고 비교할 수 있는 풍부한 대시보드를 제공합니다. 평가 대시보드에 접근하려면 프로젝트로 이동한 뒤 왼쪽 상단의 평가 탭을 클릭하세요(평가 실행에 해당하는 셀을 선택해야 하며, 그러면 화면 오른쪽 상단의 ‘Compare’ 버튼을 선택할 수 있습니다).

서브스트링 일치 정확도와 모델 지연 시간 같은 지표를 각 모델별로 나란히 확인하고 비교할 수 있습니다. 이를 통해 어떤 모델이 더 정확한지, 더 빠른지, 또는 토큰 사용 측면에서 더 효율적인지를 파악할 수 있습니다. 평가 대시보드는 정확도(서브스트링 일치)와 지연 시간을 포함한 모델들의 상세 비교를 제공하여, 데이터에 기반한 모델 선택 결정을 내리는 데 도움을 줍니다.


Weave의 출력 비교 기능을 사용하면 동일한 입력에 대해 각 모델이 생성한 구체적인 응답을 서로 비교할 수 있습니다. 예를 들어 “어느 사막이 ‘차가운 사막’으로 알려져 있나요?”라고 물었을 때, 각 모델의 응답과 예상 답변과의 일치 정도를 확인할 수 있습니다.

Weave의 평가 도구를 활용하면 각 모델의 강점과 약점을 종합적으로 파악할 수 있어, 어떤 애플리케이션에도 최적의 모델을 선택할 수 있습니다.

결론

Azure AI 모델 추론 API는 API 엔드포인트를 통해 머신러닝 모델을 배포하고 활용할 수 있는 강력하고 유연한 솔루션을 제공합니다. 이 빠른 시작 가이드는 Azure 환경 설정과 모델 배포부터 추론 요청 수행, 그리고 Weave와 같은 도구를 활용한 고급 로깅 및 분석까지 시작에 필요한 핵심 단계를 정리했습니다.
또한 Weave 플랫폼은 모델의 역량을 체계적으로 평가할 수 있는 강력한 평가 기능을 제공합니다. Weave의 Evaluation 클래스를 통합하면 모델 간 상세 비교를 수행하고 핵심 지표를 빠르게 시각화할 수 있습니다. 이러한 기능을 통해 특정 사용 사례에 가장 적합한 모델을 선택할 때 데이터에 기반한 결정을 내릴 수 있습니다.
이러한 단계를 따르면 개발자는 Azure의 서버리스 엔드포인트가 제공하는 확장성, 비용 효율성, 사용 편의성을 바탕으로 애플리케이션에 AI 기능을 효율적으로 통합할 수 있습니다. Azure AI 모델 추론 API는 이 과정을 단순화하여, 사전 학습된 모델을 사용해 지능적이고 반응성이 뛰어난 애플리케이션을 구축하는 데 집중할 수 있게 해줍니다.
Azure AI 모델 추론 API를 더 깊이 이해하고 효과적으로 활용하려면, 공식 Azure 문서를 참고하는 것을 강력히 권장합니다. 제공되는 종합적인 자료는 모델 배포, API 통합, 성능 최적화와 같은 세부 사항을 익히는 데 도움을 주며, 프로젝트에서 Azure AI 서비스를 최대한 활용할 수 있도록 지원합니다.



이 글은 AI로 번역된 기사입니다. 오역이 의심되는 부분이 있으면 댓글로 알려 주세요. 원문 링크는 다음과 같습니다: 원문 보기