Regional inference — 데이터 위치를 통제하는 지역별 추론

Regional inference — 데이터 위치를 통제하는 지역별 추론

추론 입력·출력의 데이터가 어느 지역에서 처리되는지 통제해야 하는 규제·보안 요구사항이 있다면, Mistral의 지역별 추론(regional inference) 을 쓰게 돼요. 전용 API 엔드포인트를 통해 현재 유럽연합(EU) 또는 미국(US) 지리 안의 시스템이 추론 요청을 처리하도록 지정할 수 있어요.

출처: Mistral Docs — Regional inference

지역별 추론이란?

추론(inference)은 모델이 입력을 처리하고 출력을 생성하는 실행 단계예요. Mistral 호스팅 엔드포인트에서는 그 실행이 Mistral이 관리하는 GPU 인프라에서 이뤄지죠.

지역별 추론은 그 모델 실행을 선택한 지리 안의 인프라로 라우팅해요. 요청은 여전히 Mistral API를 쓰지만, 지역 엔드포인트가 추론이 처리되는 위치를 결정해요.

지역별 추론의 이점:

  • 추론 입력·출력 데이터가 처리되는 위치를 통제할 수 있어요.
  • 특정 데이터 위치 요구사항을 가진 워크로드를 지원해요.
  • 대부분의 사용자나 시스템이 선택한 지리에 가까울 때 지연(latency)을 줄여줘요.

참고: 지역별 추론이 모든 컨트롤 플레인 데이터의 지역 저장을 제공하는 건 아니에요. 예를 들어 계정 설정, API 키, 결제, 접근 관리, 사용 분석 등 운영 메타데이터는 여전히 선택한 추론 지역 외부의 Mistral 시스템이 처리할 수 있어요. 또 지역을 지정하지 않으면 API는 글로벌 Mistral 엔드포인트를 사용해요. 지역별 추론이 Mistral 컨트롤 플레인 자체를 지역화하는 건 아니에요.

지원되는 지역

Mistral은 세 가지 엔드포인트를 구분해요:

엔드포인트 지역 지역 추가 요금 지리 사용 시점
api.mistral.ai 글로벌 없음 지역 비특정 특정 추론 위치가 필요 없을 때. 이 엔드포인트로 보낸 요청은 특정 추론 위치를 보장하지 않아요.
api.eu.mistral.ai EU 있음 EU·EFTA 국가의 여러 데이터센터 유럽연합 내 추론 처리를 지원하고 싶을 때.
api.us.mistral.ai US 있음 미국의 여러 데이터센터 미국 내 추론 처리를 지원하고 싶을 때.

지역별 추론은 입력 토큰, 출력 토큰, 캐시 읽기, 캐시 쓰기에 대해 표준 요금의 1.1배(10% 추가)로 청구돼요.

지원 범위와 제한

지역 엔드포인트는 해당 지역에서 호스팅되는 모델·도구·기능만 사용할 수 있어요. 주요 제한:

  • 모든 도구 호출이 지원되는 건 아니에요. Function calling이 지원되는 유일한 지역 도구예요.
  • 상태 유지 기능인 Agents, Batch, Files API는 지역 엔드포인트에서 사용 불가해요.
  • 가용 모델은 지역마다 달라요.

가용 모델 확인

지역 엔드포인트는 그 지역에서 호스팅되는 모델만 서빙해요. 글로벌 API와 같은 모델 ID를 쓰되, 운영 트래픽을 보내기 전에 해당 지역 엔드포인트에서 가용 여부를 확인해야 해요.

가용 모델을 나열하려면 지역 base URL에 대해 models.list 를 호출하거나 해당 지역의 SDK server 값을 사용해요.

import os
from mistralai.client import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"], server="eu")
models = client.models.list()
for model in models.data:
    print(model.id)

지역별 추론 설정하기

SDK 클라이언트를 구성하거나 요청을 지역 base URL로 직접 보내 지역 엔드포인트를 선택할 수 있어요.

SDK 2.70 이상

클라이언트 초기화 시 server 파라미터로 지역을 지정해요:

import os
from mistralai.client import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"], server="eu")
response = client.chat.complete(
    model="mistral-medium-latest",
    messages=[{"role": "user", "content": "What is Mistral?"}],
)
print(response.choices[0].message.content)

이전 SDK 버전

이전 SDK를 쓰면 server_url 파라미터를 대신 사용해요:

import os
from mistralai.client import Mistral

client = Mistral(
    api_key=os.environ["MISTRAL_API_KEY"],
    server_url="https://api.eu.mistral.ai/",
)
list_models_response = client.models.list()
print(list_models_response)

curl 사용

curl https://api.eu.mistral.ai/v1/chat/completions \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-large-latest",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

지역 처리가 실제 됐는지 확인

요청한 처리 지역의 진실 원천은 호출한 지역 엔드포인트예요. 감사(audit) 목적으로 지역 요청마다 엔드포인트 호스트명, SDK server 값, 모델 ID, 타임스탬프, 응답 요청 식별자를 기록하세요. 프록시·게이트웨이·관측 도구로 트래픽을 보내는 경우, 대상 base URL(api.eu.mistral.ai 또는 api.us.mistral.ai)을 보여주는 요청 로그를 유지해 요청이 의도한 지역 엔드포인트로 실제 보내졌는지 확인할 수 있어요.

지역별 추론과 zero data retention

지역별 추론은 적격 추론 요청이 어디서 처리되는지 통제하고, zero data retention은 적격 요청·응답 콘텐츠가 처리 후 보존되는지 통제해요. 둘은 별개의 통제로, 데이터 처리 요구사항에 따라 둘 다 필요할 수 있어요.

활용 팁

데이터 위치 요구가 있는 워크로드라면 지역을 명시하지 않을 때 글로벌 엔드포인트로 처리된다는 점을 꼭 기억하세요. 원하는 지역의 엔드포인트 hostname을 코드·설정에 명시하고, 상태 유지 기능이 지역 엔드포인트에서 제한된다는 점을 반영해 설계하는 게 좋아요.

더 알아보기