Azure AI 모델 추론
Azure AI 모델 추론
이 노트북은 Azure AI studio나 Azure Machine Learning에서 Azure AI 모델 추론 API로 배포된 모델과 함께 llama-index-llm-azure-inference 패키지를 사용하는 방법을 설명해요. 이 패키지는 GitHub Models (Preview) 엔드포인트도 지원해요.
%pip install llama-index-llms-azure-inference
Google Colab에서 이 노트북을 여는 경우라면 LlamaIndex 🦙 설치가 필요할 거예요.
%pip install llama-index
출처: 문서
본문
사전 준비사항 (Prerequisites)
Azure AI 모델 추론은 개발자가 일관된 스키마로 Azure AI에 호스팅된 다양한 모델에 접근할 수 있게 해주는 API예요. Azure AI serverless API 엔드포인트에 배포된 모델과 Managed Inference의 일부 모델을 포함해 이 API를 지원하는 모델과 함께 llama-index-llms-azure-inference 통합 패키지를 사용할 수 있어요. API 사양과 이를 지원하는 모델에 대해 더 읽으려면 Azure AI model inference API를 참고하세요.
이 튜토리얼을 실행하려면 다음이 필요해요.
-
Azure 구독을 만드세요.
-
How to create and manage an Azure AI Studio hub에 설명된 대로 Azure AI hub 리소스를 만드세요.
-
Azure AI model inference API를 지원하는 모델 하나를 배포하세요. 이 예시에서는
Mistral-Large배포를 사용해요.- Deploy models as serverless APIs의 지침을 따르면 돼요.
대안으로 이 통합과 함께 GitHub Models 엔드포인트를 사용할 수 있는데, 무료 티어 경험도 포함돼요. GitHub models에 대해 더 읽어보세요.
환경 설정 (Environment Setup)
사용하려는 모델에서 필요한 정보를 얻으려면 다음 단계를 따르세요.
- 사용 중인 제품에 따라 Azure AI Foundry (이전 Azure AI Studio) 또는 Azure Machine Learning studio로 이동하세요.
- 배포(머신러닝에서는 엔드포인트)로 이동해 사전 준비사항에서 배포한 모델을 선택하세요.
- 엔드포인트 URL과 키를 복사하세요.
모델이 Microsoft Entra ID 지원으로 배포된 경우에는 키가 필요 없어요.
이 시나리오에서는 엔드포인트 URL과 키를 다음 환경 변수에 넣었어요.
import os
os.environ["AZURE_INFERENCE_ENDPOINT"] = "<your-endpoint>"
os.environ["AZURE_INFERENCE_CREDENTIAL"] = "<your-credential>"
배포와 엔드포인트에 연결하기
Azure AI studio나 Azure Machine Learning에 배포된 LLM을 사용하려면 연결할 엔드포인트와 자격 증명이 필요해요. Managed Online Endpoints처럼 단일 모델만 제공하는 엔드포인트에서는 model_name 파라미터가 필요 없어요.
from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
)
대안으로 엔드포인트가 Microsoft Entra ID를 지원한다면 다음 코드로 클라이언트를 만들 수 있어요.
from azure.identity import DefaultAzureCredential
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredential(),
)
참고: Microsoft Entra ID를 사용할 때는 엔드포인트가 해당 인증 방식으로 배포되었고, 호출할 수 있는 권한이 있는지 확인하세요.
비동기 호출을 계획하고 있다면 자격 증명의 비동기 버전을 사용하는 것이 모범 사례예요.
from azure.identity.aio import (
DefaultAzureCredential as DefaultAzureCredentialAsync,
)
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredentialAsync(),
)
GitHub Models이나 Azure AI Services처럼 엔드포인트가 둘 이상의 모델을 제공한다면 model_name 파라미터를 지정해야 해요.
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
model_name="mistral-large", # change it to the model you want to use
)
모델 사용하기
텍스트 완성에는 complete 엔드포인트를 사용해요. complete 메서드는 chat-completions 유형의 모델에서도 여전히 사용할 수 있어요. 그 경우 입력 텍스트가 role="user"인 메시지로 변환돼요.
response = llm.complete("The sky is a beautiful blue and")
print(response)
response = llm.stream_complete("The sky is a beautiful blue and")
for r in response:
print(r.delta, end="")
대화에는 chat 엔드포인트를 사용해요.
from llama_index.core.llms import ChatMessage
messages = [
ChatMessage(
role="system", content="You are a pirate with colorful personality."
),
ChatMessage(role="user", content="Hello"),
]
response = llm.chat(messages)
print(response)
response = llm.stream_chat(messages)
for r in response:
print(r.delta, end="")
매번 동일한 파라미터를 각 chat이나 completion 호출에 추가하는 대신, 클라이언트 인스턴스에서 설정할 수 있어요.
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
temperature=0.0,
model_kwargs={"top_p": 1.0},
)
response = llm.complete("The sky is a beautiful blue and")
print(response)
Azure AI 모델 추론 API가 지원하지 않지만 기본 모델에는 있는 추가 파라미터는 model_extras 인자를 사용할 수 있어요. 다음 예시에서는 Mistral 모델에서만 사용 가능한 safe_prompt 파라미터를 전달하고 있어요.
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
temperature=0.0,
model_kwargs={"model_extras": {"safe_prompt": True}},
)
response = llm.complete("The sky is a beautiful blue and")
print(response)
추가 자료 (Additional resources)
이 통합에 대해 더 배우려면 Getting starting with LlamaIndex and Azure AI를 방문하세요.