Azure Machine Learning 스튜디오를 사용하여 Mistral 모델을 배포하는 방법
이 문서에서는 Azure Machine Learning 스튜디오를 사용하여 종량제 토큰 기반 청구를 통해 Mistral 모델 제품군을 서버리스 API로 배포하는 방법을 알아봅니다.
Mistral AI는 Azure Machine Learning 스튜디오에서 두 가지 범주의 모델을 제공합니다. 이러한 모델은 모델 카탈로그에서 확인할 수 있습니다.
- 프리미엄 모델: Mistral Large (2402), Mistral Large (2407), Mistral Large (2411), Mistral Small 및 Ministral-3B.
- 개방형 모델: Mistral Nemo, Mixtral-8x7B-Instruct-v01, Mixtral-8x7B-v01, Mistral-7B-Instruct-v01 및 Mistral-7B-v01.
모든 프리미엄 모델과 Mistral Nemo(개방형 모델)는 종량제 토큰 기반 청구를 통해 서버리스 API로 배포할 수 있습니다. 다른 개방형 모델은 사용자의 Azure 구독에서 관리되는 컴퓨팅에 배포할 수 있습니다.
Mistral 컬렉션을 필터링하여 모델 카탈로그에서 Mistral 모델 제품군을 찾아볼 수 있습니다.
Mistral 모델 제품군
Mistral Large 모델은 Mistral AI의 가장 고급 LLM(대규모 언어 모델)입니다. 최신 추론, 지식 및 코딩 기능 덕분에 모든 언어 기반 작업에서 사용할 수 있습니다. 몇 가지 Mistral 대형 모델 변형을 사용할 수 있습니다.
- Mistral Large(2402), 또한 Mistral Large로 축약됨
- Mistral Large(2407)
- Mistral Large (2411)
Mistral Large(2402)의 특성으로, Mistral Large로 축약된 특성은 다음과 같습니다.
- RAG에 특화되어 있습니다. 긴 컨텍스트 창(최대 32K 토큰)의 중간에 중요한 정보가 손실되지 않습니다.
- 코딩에 강합니다. 코드 생성, 검토 및 주석 모든 주류 코딩 언어를 지원합니다.
- 다국어를 지원하도록 설계되었습니다. 프랑스어, 독일어, 스페인어, 이탈리아어 및 영어로 동급 최고의 성능을 발휘합니다. 수십 개의 다른 언어가 지원됩니다.
- 책임 있는 AI를 준수합니다. 모델에 적용한 효율적인 가드레일과 safe_mode 옵션이 있는 추가 안전성 레이어입니다.
Mistral Large(2407)의 특성은 다음과 같습니다.
- 다국어를 지원하도록 설계되었습니다. 영어, 프랑스어, 독일어, 스페인어, 이탈리아어 등 수십 개의 언어를 지원합니다.
- 코딩에 능숙합니다. Python, Java, C, C++, JavaScript, Bash를 포함한 80개 이상의 코딩 언어를 배웠습니다. Swift와 Fortran과 같은 특정 언어에 대한 학습도 받았습니다.
- 에이전트 중심. 네이티브 함수 호출 및 JSON 출력을 통한 에이전트 기능을 보유하고 있습니다.
- 추론 능력이 뛰어남. 최첨단 수학적, 추론 기능을 보여 줍니다.
Mistral Large(2411)의 특성에는 다음과 같은 추가 특성이 있는 Mistral Large(2407)와 동일합니다.
- 시스템 프롬프트는 각 대화 전에 삽입됩니다.
- 긴 콘텐츠의 성능 향상
- 함수 호출 기능이 향상되었습니다.
Important
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
서버리스 API로 Mistral 모델 제품군 배포
모델 카탈로그의 특정 모델은 종량제 청구를 통해 서버리스 API로 배포할 수 있습니다. 이 종류의 배포를 활용하면 조직에 필요한 엔터프라이즈 보안 및 규정 준수를 유지하면서 구독에서 모델을 호스트하지 않고 API로 모델을 사용할 수 있습니다. 이 배포 옵션에는 구독으로부터의 할당량이 필요하지 않습니다.
Mistral Large, Mistral Large(2407), Mistral Large(2411), Mistral Small 및 Mistral Nemo 는 종량제 청구가 있는 서버리스 API로 배포할 수 있으며 Microsoft Azure Marketplace를 통해 Mistral AI에서 제공합니다. Mistral AI는 이러한 모델의 사용 약관 및 가격 책정을 변경하거나 업데이트할 수 있습니다.
필수 조건
유효한 결제 방법을 사용하는 Azure 구독입니다. 무료 또는 평가판 Azure 구독은 작동하지 않습니다. Azure 구독이 없으면 유료 Azure 계정을 만들어 시작합니다.
Azure Machine Learning 작업 영역 작업 영역이 없으면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계에서 리소스를 만듭니다. Mistral 제품군의 적격 모델에 대한 서버리스 API 모델 배포 제품은 다음 지역에서 만들어진 작업 영역에서만 사용할 수 있습니다.
- 미국 동부
- 미국 동부 2
- 미국 중북부
- 미국 중남부
- 미국 서부
- 미국 서부 3
- 스웨덴 중부
서버리스 API 엔드포인트 배포를 지원하는 각 모델에 사용할 수 있는 지역 목록은 서버리스 API 엔드포인트의 모델에 대한 지역 가용성을 참조하세요.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 리소스 그룹에 대한 Azure AI 개발자 역할이 할당되어야 합니다. 권한에 대한 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.
새 배포 만들기
다음 단계에서는 Mistral Large의 배포를 보여 주지만 모델 이름을 바꿔 Mistral Nemo 또는 프리미엄 Mistral 모델을 배포하는 데 동일한 단계를 사용할 수 있습니다.
배포를 만들려면 다음을 수행합니다.
Azure Machine Learning 스튜디오로 이동합니다.
모델을 배포할 작업 영역을 선택합니다. 서버리스 API 모델 배포 제품을 사용하려면 작업 영역이 필수 구성 요소에 나열된 지역 중 하나에 속해 있어야 합니다.
모델 카탈로그에서 배포하려는 모델(예: Mistral Large 모델)을 선택합니다.
또는 작업 영역으로 이동하고 엔드포인트>서버리스 엔드포인트>만들기를 선택하여 배포를 시작할 수 있습니다.
모델 카탈로그의 모델 개요 페이지에서 배포를 선택하여 모델에 대한 서버리스 API 배포 창을 엽니다.
Microsoft 구매 정책을 확인하려면 확인란을 선택합니다.
배포 마법사에서 Azure Marketplace 사용 약관에 대한 링크를 선택하여 사용 약관에 대해 자세히 알아봅니다.
또한 가격 책정 및 사용 약관 탭을 선택하여 선택한 모델의 가격 책정을 알아볼 수도 있습니다.
작업 영역에서 모델을 처음 배포하는 경우 특정 제품(예: Mistral Large)에 대한 작업 영역을 구독해야 합니다. 이 단계를 수행하려면 필수 조건에 나열된 대로 계정에 리소스 그룹에 대한 Azure AI 개발자 역할 권한이 있어야 합니다. 각 작업 영역에는 지출을 제어하고 모니터링할 수 있는 특정 Azure Marketplace 제품에 대한 자체 구독이 있습니다. 구독 및 배포를 선택합니다. 현재 작업 영역 내의 각 모델에 대해 하나의 배포만 가질 수 있습니다.
특정 Azure Marketplace 제품에 대한 작업 영역을 등록한 후에는 동일한 작업 영역에서 동일한 제품의 후속 배포 를 다시 구독할 필요가 없습니다. 이 시나리오에 해당하는 경우 계속 배포 옵션을 선택할 수 있습니다.
배포에 이름을 지정합니다. 이 이름은 배포 API URL의 일부가 됩니다. 이 URL은 각 Azure 지역에서 고유해야 합니다.
배포를 선택합니다. 배포가 완료되고 서버리스 엔드포인트 페이지로 리디렉션될 때까지 기다립니다.
엔드포인트를 선택하여 세부 정보 페이지를 엽니다.
테스트 탭을 선택하여 모델과의 상호 작용을 시작합니다.
작업 영역>엔드포인트>서버리스 엔드포인트로 이동하여 항상 엔드포인트의 세부 정보, URL 및 액세스 키를 찾을 수 있습니다.
종량제 토큰 기반 청구를 통해 서버리스 API로 배포된 Mistral 모델에 대한 청구에 대해 알아보려면 서비스로 배포된 Mistral 모델 제품군에 대한 비용 및 할당량 고려 사항을 참조하세요.
Mistral 모델 제품군을 서비스로 사용
채팅 API를 사용하여 Mistral 모델을 사용할 수 있습니다.
- 작업 영역에서 엔드포인트>서버리스 엔드포인트를 선택합니다.
- 만든 배포를 찾아 선택합니다.
- 대상 URL 및 키 토큰 값을 복사합니다.
- 경로
/chat/completions
의 Azure AI 모델 유추 API 및/v1/chat/completions
의 네이티브 Mistral 채팅 API 중 하나를 사용하여 API 요청을 만듭니다.
API 사용에 대한 자세한 내용은 참조 섹션을 참조하세요.
서비스로 배포된 Mistral 모델 제품군 참조
Mistral 모델은 경로 /chat/completions
의 Azure AI 모델 유추 API 및 /v1/chat/completions
의 네이티브 Mistral 채팅 API 모두를 허용합니다.
Azure AI 모델 유추 API
Azure AI 모델 유추 API 스키마는 채팅 완료 참조 문서에서 찾을 수 있으며 OpenAPI 사양은 엔드포인트 자체에서 가져올 수 있습니다.
Mistral 채팅 API
메서드 POST
를 사용하여 요청을 /v1/chat/completions
경로로 보냅니다.
요청
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
요청 스키마
페이로드는 다음 매개 변수를 포함하는 JSON 형식 문자열입니다.
키 | Type | 기본값 | 설명 |
---|---|---|---|
messages |
string |
기본값은 없습니다. 이 값을 지정해야 합니다. | 모델을 프롬프트하는 데 사용할 메시지 또는 메시지의 기록입니다. |
stream |
boolean |
False |
스트리밍을 사용하면 사용할 수 있을 때마다 생성된 토큰을 데이터 전용 서버 전송 이벤트로 보낼 수 있습니다. |
max_tokens |
integer |
8192 |
완료 시 생성할 최대 토큰 수입니다. 프롬프트의 토큰 수에 max_tokens 를 더한 값은 모델의 컨텍스트 길이를 초과할 수 없습니다. |
top_p |
float |
1 |
핵 샘플링이라고 하는 온도 샘플링의 대안으로, 모델은 확률 질량이 top_p 인 토큰의 결과를 고려합니다. 따라서 0.1은 상위 10% 확률 질량을 구성하는 토큰만 고려됨을 의미합니다. 일반적으로 이를 변경하거나 top_p 또는 temperature 중 하나만 변경하는 것이 좋습니다. |
temperature |
float |
1 |
사용할 샘플링 온도입니다(0에서 2 사이). 값이 높을수록 모델이 토큰의 분산을 보다 넓게 샘플링함을 의미합니다. 0은 탐욕적 샘플링을 의미합니다. 이 매개 변수를 변경하거나 top_p 를 변경하는 것이 좋지만 둘 다 변경하는 것은 바람직하지 않습니다. |
ignore_eos |
boolean |
False |
EOS 토큰을 무시하고 EOS 토큰 생성 후 토큰을 계속 생성할지 여부입니다. |
safe_prompt |
boolean |
False |
모든 대화 전에 안전 프롬프트를 삽입할지 여부입니다. |
messages
개체에는 다음 필드가 있습니다.
키 | Type | 값 |
---|---|---|
content |
string |
메시지의 내용입니다. 모든 메시지에 콘텐츠가 필요합니다. |
role |
string |
메시지 작성자의 역할입니다.
system , user 또는 assistant 중 하나입니다. |
요청 예시
본문
{
"messages":
[
{
"role": "system",
"content": "You are a helpful assistant that translates English to Italian."
},
{
"role": "user",
"content": "Translate the following sentence from English to Italian: I love programming."
}
],
"temperature": 0.8,
"max_tokens": 512,
}
응답 스키마
응답 페이로드는 다음 필드가 있는 사전입니다.
키 | 형식 | 설명 |
---|---|---|
id |
string |
완료의 고유 식별자입니다. |
choices |
array |
입력 메시지를 위해 모델이 생성한 완료 선택 목록입니다. |
created |
integer |
완료가 만들어진 시점의 Unix 타임스탬프(초)입니다. |
model |
string |
완료에 사용되는 model_id입니다. |
object |
string |
항상 chat.completion 인 개체 형식입니다. |
usage |
object |
완료 요청의 사용 통계입니다. |
팁
스트리밍 모드에서 각 응답 청크마다 finish_reason
은 페이로드 [DONE]
에 의해 종료되는 마지막 청크를 제외하고 항상 null
입니다. 각 choices
개체에서 messages
키는 delta
에 의해 변경됩니다.
choices
개체는 다음 필드가 있는 사전입니다.
키 | 형식 | 설명 |
---|---|---|
index |
integer |
선택 인덱스입니다.
best_of
> 1이면 이 배열의 인덱스가 순서가 맞지 않을 수 있으며 0 ~n-1 이 아닐 수 있습니다. |
messages 또는 delta |
string |
messages 개체의 채팅 완료 결과입니다. 스트리밍 모드를 사용하는 경우 delta 키가 사용됩니다. |
finish_reason |
string |
모델이 토큰 생성을 중지한 이유는 다음과 같습니다. - stop : 모델이 자연 중지 지점 또는 제공된 중지 시퀀스에 도달했습니다. - length : 최대 토큰 수에 도달한 경우입니다. - content_filter : RAI가 조정되고 CMP가 강제로 조정하는 경우입니다. - content_filter_error : 조정 중에 오류가 발생했으며 응답을 결정할 수 없습니다. - null : API 응답이 아직 진행 중이거나 완료되지 않았습니다. |
logprobs |
object |
출력 텍스트에서 생성된 토큰의 로그 확률입니다. |
usage
개체는 다음 필드가 있는 사전입니다.
키 | Type | 값 |
---|---|---|
prompt_tokens |
integer |
프롬프트에 있는 토큰 수입니다. |
completion_tokens |
integer |
완료에서 생성된 토큰 수입니다. |
total_tokens |
integer |
총 토큰입니다. |
logprobs
개체는 다음 필드가 있는 사전입니다.
키 | Type | 값 |
---|---|---|
text_offsets |
integers 의 array |
완료 출력에서 각 토큰의 위치 또는 인덱스입니다. |
token_logprobs |
float 의 array |
top_logprobs 배열의 사전에서 선택한 logprobs 입니다. |
tokens |
string 의 array |
선택한 토큰입니다. |
top_logprobs |
dictionary 의 array |
사전의 배열입니다. 각 사전에서 키는 토큰이고 값은 prob입니다. |
응답 예제
다음 JSON은 예제 응답입니다.
{
"id": "12345678-1234-1234-1234-abcdefghijkl",
"object": "chat.completion",
"created": 2012359,
"model": "",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Sure, I\'d be happy to help! The translation of ""I love programming"" from English to Italian is:\n\n""Amo la programmazione.""\n\nHere\'s a breakdown of the translation:\n\n* ""I love"" in English becomes ""Amo"" in Italian.\n* ""programming"" in English becomes ""la programmazione"" in Italian.\n\nI hope that helps! Let me know if you have any other sentences you\'d like me to translate."
}
}
],
"usage": {
"prompt_tokens": 10,
"total_tokens": 40,
"completion_tokens": 30
}
}
더 많은 유추 예
샘플 형식 | 샘플 Notebook |
---|---|
CURL 및 Python 웹 요청을 사용하는 CLI | webrequests.ipynb |
OpenAI SDK(실험용) | openaisdk.ipynb |
LangChain | langchain.ipynb |
Mistral AI | mistralai.ipynb |
LiteLLM | litellm.ipynb |
비용 및 할당량
서비스로 배포된 Mistral 모델 제품군에 대한 비용 및 할당량 고려 사항
서비스로 배포된 Mistral 모델은 Mistral AI가 Azure Marketplace를 통해 제공하며, 사용을 위해 Azure Machine Learning 스튜디오와 통합됩니다. 모델을 배포할 때 Azure Marketplace 가격 책정을 확인할 수 있습니다.
작업 영역이 Azure Marketplace에서 지정된 모델 제품을 구독할 때마다 사용에 연결된 비용을 추적하기 위해 새 리소스가 만들어집니다. 유추와 관련된 비용을 추적하는 데 동일한 리소스가 사용됩니다. 그러나 여러 미터를 사용하여 각 시나리오를 독립적으로 추적할 수 있습니다.
비용을 추적하는 방법에 대한 자세한 내용은 Azure Marketplace를 통해 제공되는 모델에 대한 비용 모니터링을 참조하세요.
할당량은 배포당 관리됩니다. 각 배포에는 분당 200,000개의 토큰과 분당 1,000개의 API 요청의 속도 제한이 있습니다. 그러나 현재는 작업 영역당 모델당 배포 하나로 제한됩니다. 현재 속도 제한이 시나리오에 충분하지 않은 경우 Microsoft Azure 지원에 문의하세요.
콘텐츠 필터링
종량제 서비스로 배포되는 모델은 Azure AI 콘텐츠 보안으로 보호됩니다. Azure AI 콘텐츠 보안을 사용하도록 설정한 경우 유해한 콘텐츠의 출력을 탐지하고 방지하기 위한 분류 모델의 앙상블을 통해 프롬프트와 완료가 모두 실행됩니다. 콘텐츠 필터링(미리 보기) 시스템은 입력 프롬프트와 출력 완성 모두에서 잠재적으로 유해한 콘텐츠의 특정 범주를 검색하고 조치를 취합니다. Azure AI 콘텐츠 보안에 대해 자세히 알아보기.