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

목차
Azure AI 모델 추론 API란 무엇인가요?Azure AI 모델 추론 API에서 사용할 수 있는 모델은 무엇인가요?Azure AI 모델 추론 API를 사용하면 어떤 이점이 있나요?튜토리얼: W&B Weave와 함께 Azure AI 모델 추론 API 구현하기 Azure 환경 설정하기모델 배포하기추론 요청 보내기Weave로 출력 해석을 더 잘하기여러 모델 비교 Weave를 사용한 지리 데이터셋 기반 AI 모델 평가Weave 평가 소개맞춤 지리 데이터셋전체 스크립트스크립트 설명평가 대시보드결론
Azure AI 모델 추론 API란 무엇인가요?
Azure AI 모델 추론 API는 Microsoft가 제공하는 클라우드 기반 서비스로, 개발자가 API 엔드포인트를 통해 AI 모델을 배포하고 호출할 수 있도록 해 줍니다. 이 API는 다양한 AI 모델과 상호작용할 수 있는 일관된 인터페이스를 제공하여 모델 배포와 추론을 단순하고 효율적으로 만듭니다.
이 API는 다양한 AI 모델을 지원하여, 개발자가 대규모 인프라를 별도로 구축하지 않고도 고급 머신러닝 기능을 활용할 수 있게 해 줍니다. API 엔드포인트는 배포된 모델과 상호작용할 수 있도록 API가 제공하는 특정 URL을 말합니다. 이러한 엔드포인트를 통해 애플리케이션에 AI 모델을 손쉽게 통합할 수 있으며, 실시간 예측과 인��이트 제공이 가능합니다.
Azure AI 모델 추론 API는 다양한 모델과 일관되고 통일된 방식으로 상호작용할 수 있게 하여 모델 배포와 추론을 용이하게 합니다. 즉, 개발자는 기본 코드를 변경하지 않고도 모델을 바꿔가며 성능을 비교할 수 있어 유연성과 효율성이 향상됩니다. 이 API를 사용하면 개발자는 모델 관리와 인프라의 복잡성을 걱정하지 않고 지능형 애플리케이션 구축에 집중할 수 있습니다.
이들 모델은 서버리스 API 엔드포인트나 관리형 추론에 배포할 수 있어, 다양한 사용 사례에 맞는 확장성과 유연성을 제공합니다. Azure AI 모델 추론 API를 사용하면 개발자는 특정 작업에 가장 적합한 모델을 손쉽게 선정하고 배포할 수 있으며, 모델과 상호작용하는 일관된 인터페이스를 유지하면서 성능과 효율을 향상시킬 수 있습니다. 이 기능은 여러 모델과 각각의 통합을 관리하는 데 따른 오버헤드를 크게 줄여 주므로, 애플리케이션에서 AI의 잠재력을 최대한 활용하고자 하는 개발자에게 매우 강력한 도구가 됩니다.
여기서는 추론 API의 서버리스 버전을 다룹니다. Microsoft는 토큰 단위 과금이 아닌 시간 단위로 과금되는 관리형 컴퓨트용 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 모델 패밀리
- Mistral Small
- Mistral Large
- Jais 모델 패밀리
- Jamba 모델 패밀리
서버리스 배포는 워크로드에 따라 자동으로 확장되어 리소스를 효율적으로 활용합니다. 특히 트래픽이 가변적이거나 예측하기 어려운 애플리케이션에 유리하며, 수동 확장의 필요를 없애고 유휴 인프라로 인한 비용을 줄여 줍니다. 반면, Managed inference는 안정적이고 예측 가능한 환경을 제공하므로 성능 일관성이 최우선인 미션 크리티컬 애플리케이션에 적합합니다.
Azure AI 모델 추론 API를 사용하면 어떤 이점이 있나요?
Azure AI 모델 추론 API는 애플리케이션에 AI를 도입하려는 개발자와 조직에 여러 핵심 이점을 제공합니다. 가장 큰 장점 중 하나는 확장성입니다. 이 API는 수요에 따라 애플리케이션이 자동으로 확장되도록 하여, 리소스를 효율적으로 사��하고 피크 시간대에도 성능을 일관되게 유지합니다. 이러한 확장성은 트래픽이 가변적이거나 예측하기 어려운 애플리케이션에 특히 중요합니다.
비용 효율성도 중요한 이점입니다. 서버리스 엔드포인트를 사용하면 인프라 유지 보수와 관리에 드는 비용을 줄일 수 있습니다. 서버리스 배포는 사용한 만큼만 비용을 지불하도록 보장하여 유휴 리소스와 관련된 지출을 없애 줍니다. 이 모델은 강력한 AI 기능을 활용하면서도 예산을 면밀히 관리해야 하는 스타트업과 소규모 조직에 특히 유리합니다.
사용 편의성은 Azure AI 모델 추론 API의 핵심 강점입니다. 이 API는 AI 모델 배포와 관리를 둘러싼 많은 복잡성을 추상화합니다. 개발자는 AI 인프라에 대한 깊은 전문 지식 없이도 애플리케이션을 구축하고 개선하는 데 집중할 수 있습니다. 또한 다양한 모델과 상호작용하기 위한 일관된 인터페이스를 제공하여 통합 과정을 단순화하고 개발 시간을 줄여 줍니다.
W&B Weave는 우리가 함께 사용할 또 다른 도구로, 메서드의 입력과 출력을 추적하는 데 사용됩니다. 메서드에 주석을 달면 @weave.opWeave는 모델에 전송한 쿼리, 제공된 컨텍스트, 웹 검색에 대한 결정, 모델이 생성한 최종 응답 등 이 함수들을 거치는 데이터를 기록합니다. 이러한 통합은 개발 과정을 간소화하여 팀이 더 빠르게 반복하고 더 나은 결과를 얻도록 돕습니다.
튜토리얼: W&B Weave와 함께 Azure AI 모델 추론 API 구현하기
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에서 지원되는 것은 아닙니다. 배포하려는 모델(그리고 Serverless Inference API에서 지원되는 모델)을 클릭하세요. 모델을 클릭하면 모델을 배포할 수 있는 다음 페이지가 표시됩니다:

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

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

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

여기에서 기본 키와 엔드포인트 URL을 함께 복사해 두고 저장하세요. 나중에 Python을 사용해 모델 추론을 실행할 때 사용합니다.
추론 요청 보내기
Python과 requests 라이브러리를 사용하겠습니다. JSON 요청 라이브러리를 사용하는 것이 충분히 효과적이면서도 더 간단하다고 판단해 Azure AI Studio 라이브러리는 사용하지 않기로 했습니다. 아래 스크립트를 사용하면 모델에서 추론을 실행할 수 있습니다. 사용하는 모델에 따라 엔드포인트 URL과 기본 키만 바꾸고 나머지 코드는 그대로 두면 됩니다.
import weavefrom azure.ai.inference import ChatCompletionsClientfrom azure.ai.inference.models import SystemMessage, UserMessagefrom azure.core.credentials import AzureKeyCredential# Initialize Weave for loggingweave.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 ChatCompletionsClientclient = ChatCompletionsClient(endpoint=ENDPOINT_URL,credential=AzureKeyCredential(PRIMARY_KEY))@weave.opdef 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.contentprint("Response:", content)return contentexcept Exception as e:print(f"Failed to get response: {e}")return None# Perform inference using the hardcoded promptrun_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의 통일된 인터페이스 덕분에 동일한 코드 구조를 재사용할 수 있어, 개발 시간과 노력을 크게 줄일 수 있습니다.
이는 애플리케이션에 가장 적합한 모델을 찾기 위해 여러 모델을 실험해야 하는 상황에서 특히 유용합니다. 예를 들어, 처음에는 더 작은 모델로 시작해 애플리케이션의 기능을 빠르게 검증하고, 요구 사항이 발전함에 따라 더 강력한 모델로 전환할 수 있습니다. 일관된 API 인터페이스 덕분에 통합 로직을 다시 작성할 필요 없이 이러한 전환을 매끄럽게 수행할 수 있습니다.
비슷한 프롬프트에서 두 모델을 비교하기 위해, 앞선 단계에 따라 Mistral Small Instruct와 Phi-3 Instruct 모델의 서버리스 인스턴스를 만들었습니다. 아래 제공된 스크립트는 이 비교 과정을 쉽게 진행할 수 있도록 구성되어 있습니다. 또한 스크립트에는 Weave와의 로깅 연동이 포함되어 있어, 각 모델의 입력과 출력을 상세히 기록하고 모델의 동작과 성능을 더 쉽게 파악할 수 있습니다. 스크립트는 다음과 같습니다:
from azure.ai.inference import ChatCompletionsClientfrom azure.ai.inference.models import SystemMessage, UserMessagefrom azure.core.credentials import AzureKeyCredentialimport weave# Initialize Weave for loggingweave.init('azure-api')# Define global variables for the two modelsMODEL_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 modelclient1 = 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.opdef 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 Nonedef parse_response(response):if response.choices:choice = response.choices[0]if choice.message and choice.message.content:content = choice.message.contentprint(f"Model response content: {content}")return contentif choice.finish_reason:finish_reason = choice.finish_reasonprint(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 모델 평가
이��� Weave의 평가 기능을 사용해 내가 GPT-4o로 만든 맞춤 지리 데이터셋에서 두 AI 모델의 성능을 비교하는 방법을 보여 드리겠습니다. Weave의 Evaluation 클래스를 활용하면 각 모델의 성능을 체계적으로 평가하고, 우리 애플리케이션에 더 적합한 모델을 근거 있게 선택할 수 있습니다.
Weave 평가 소개
평가 중심 개발은 일관된 데이터셋을 대상으로 변경 사항을 체계적으로 테스트하여 애플리케이션을 신뢰성 있게 반복 개선하도록 도와줍니다. The Evaluation Weave의 Evaluation 클래스는 사용자 정의 채점 함수를 사용해 주어진 데이터셋에서 특정 모델의 성능을 평가하도록 설계되었습니다. 이 접근 방식은 결과를 정확하게 비교할 수 있도록 보장하며, 개별 출력과 점수를 깊이 있게 탐색할 수 있는 풍부한 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를 사용해 평가를 설정하고, 모델을 정의하며, 비교를 실행하는 Python 스크립트입니다:
import requestsimport jsonimport timeimport asyncioimport weavefrom weave import Evaluation, Modelfrom azure.ai.inference import ChatCompletionsClientfrom azure.ai.inference.models import SystemMessage, UserMessagefrom azure.core.credentials import AzureKeyCredential# Initialize Weave for loggingweave.init('azure-api-eval-geo')# Define global variables for the two modelsMODEL_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 modeldef 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.contentprompt_tokens = response.usage.prompt_tokenscompletion_tokens = response.usage.completion_tokenstotal_tokens = response.usage.total_tokens# Update the returned result to include the correct token structurereturn {'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 Weaveclass MistralSmall(Model):model_name: str = "Mistral-small"endpoint: str = MODEL_1_ENDPOINT_URLprimary_key: str = MODEL_1_PRIMARY_KEYclient: ChatCompletionsClient = None # Declare the client fielddef __init__(self):super().__init__() # Initialize the base class if needed# Initialize the client and assign it explicitlyobject.__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 resultclass Phi3Small(Model):model_name: str = "Phi-3-small"endpoint: str = MODEL_2_ENDPOINT_URLprimary_key: str = MODEL_2_PRIMARY_KEYclient: ChatCompletionsClient = None # Declare the client fielddef __init__(self):super().__init__() # Initialize the base class if needed# Initialize the client and assign it explicitlyobject.__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 resultdef run_evaluation(model_class):# Load the datasetwith open('dataset.json', 'r') as f:dataset = json.load(f)# Instantiate the modelmodel = model_class()# Create evaluation for the modelevaluation = Evaluation(dataset=dataset, scorers=[substring_match])# Run the evaluation for the modelprint(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 sequentiallyrun_evaluation(MistralSmall)run_evaluation(Phi3Small)
스크립트 설명
초기화 및 설정 단계에서, 로깅을 위해 Weave가 다음 이름으로 초기화됩니다. azure-api-eval-geo두 모델의 엔드포인트와 기본 키, Mistral-Small 와 Phi-3-small, 이 정의됩니다. 모델 예측을 위해, the get_model_prediction 함수는 지정된 모델 엔드포인트로 프롬프트를 보내고, 제공된 엔드포인트에 따라 적절한 API 키를 사용해 응답을 가져옵니다.
생성된 텍스트를 가져오는 것에 더해, the get_model_prediction 함수는 모델 출력에서 토큰 사용 통계도 함께 수집합니다. 구체적으로, 입력에 사용된 토큰 수인 input_tokens, 응답으로 생성된 토큰 수인 output_tokens, 그리고 두 값을 합한 total_tokens를 기록합니다. 이 정보는 모델 출력 내에 구조화되어 Weave로 전달되며, 로깅과 분석에 활용됩니다. 이를 통해 모델 평가 동안 리소스 사용량을 손쉽게 추적할 수 있습니다.
사용자 정의 스코어링 함수 substring_match, 는 모델이 생성한 텍스트에 기대한 답이 부분 문자열로 포함되어 있는지 확인하도록 정의됩니다. 이 함수는 모델 응답의 정확도를 평가하는 데 사용됩니다. 두 가지 모델 클래스, MistralSmall 와 Phi3Small, 가 정의되며, 각 클래스에는 데코레이터가 적용된 predict 메서드가 포함됩니다 @weave.op() 평가 중 입력과 출력을 로깅하기 위해.
평가 실행 단계에서, run_evaluation 함수는 데이터세트를 로드하고 모델 클래스를 인스턴스화한 뒤 평가를 실행하며, 모든 데이터를 추가 분석을 위해 Weave에 로깅합니다. 이어서 __main__ 블록에서 두 모델에 대한 평가가 순차적으로 실행되어, 동일한 데이터세트에서의 성능을 비교할 수 있습니다.
평가 대시보드
평가가 완료되면 Weave는 결과를 시각화하고 비교할 수 있는 풍부한 대시보드를 제공합니다. 평가 대시보드에 접근하려면 프로젝트로 이동한 뒤, 왼쪽 상단의 평가 탭을 클릭하세요. 참고로, 평가 실행에 해당하는 셀을 먼저 선택해야 하며, 그러고 나면 화면 오른쪽 상단의 ‘Compare’ 버튼을 선택할 수 있습니다.

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

Weave의 출력 비교 기능을 사용하면 동일한 입력에 대해 각 모델이 생성한 구체적인 응답을 서로 비교할 수 있습니다. 예를 들어 “‘Cold Desert’로 알려진 사막은 무엇인가?”라고 물었을 때, 각 모델의 응답과 그 응답이 기대 정답과 얼마나 잘 일치하는지 확인할 수 있습니다.

Weave의 평가 도구를 활용하면 각 모델의 강점과 약점을 종합적으로 파악할 수 있어, 어떤 애플리케이션에도 가장 적합한 모델을 선택할 수 있습니다.
결론
Azure AI Model Inference API는 API 엔드포인트를 통해 머신 러닝 모델을 배포하고 소비할 수 있는 강력하고 유연한 솔루션을 제공합니다. 이 빠른 시작 가이드는 Azure 환경 설정과 모델 배포부터 추론 요청 수행, Weave와 같은 도구를 활용한 향상된 로깅과 분석에 이르기까지 시작에 필요한 핵심 단계를 정리했습니다.
또한 Weave 플랫폼은 모델의 성능을 체계적으로 평가할 수 있는 강력한 기능을 제공합니다. Weave의 Evaluation 클래스를 통합하면 모델 간 상세 비교를 수행하고 핵심 지표를 빠르게 시각화할 수 있습니다. 이러한 기능을 통해 특정 사용 사례에 가장 적합한 모델을 선택할 때 데이터에 기반한 의사결정을 내릴 수 있습니다.
이러한 단계를 따르면 개발자는 Azure의 서버리스 엔드포인트가 제공하는 확장성, 비용 효율성, 사용 편의성을 활용하여 애플리케이션에 AI 기능을 효율적으로 통합할 수 있습니다. Azure AI Model Inference API는 이 과정을 단순화하여, 사전 학습된 모델을 통해 지능적이고 반응성이 높은 애플리케이션을 구축하는 데 집중할 수 있게 해 줍니다.
Azure AI Model Inference API를 보다 깊이 이해하고 효과적으로 활용하려면 공식 Azure 문서를 살펴보는 것을 강력히 권장합니다. 제공되는 포괄적인 자료는 모델 배포, API 통합, 성능 최적화의 세부 사항을 이해하고 수행하는 데 도움을 주어, 프로젝트에서 Azure AI 서비스의 잠재력을 온전히 활용할 수 있도록 해 줍니다.
Building a real-time answer engine with Llama 3.1 405B and W&B Weave
Infusing llama 3.1 405B with internet search capabilities!!
Training a KANFormer: KAN's Are All You Need?
We will dive into a new experimental architecture, replacing the MLP layers in transformers with KAN layers!
Grokking: Improved generalization through over-overfitting
One of the most mysterious phenomena in deep learning; Grokking is the tendency of neural networks to improve generalization by sustained overfitting.
6 "gotchas" in machine learning—and how to avoid them
ML is hard and you can't plan for everything. Here are a few things I've learned and a few tips to avoid common missteps
Add a comment