모델 속도 제한 처리하는 방법
모델 속도 제한 처리하는 방법
대규모 평가 작업을 실행할 때 흔한 문제는 보통 모델 제공자로부터 발생하는 타사 API 속도 제한에 부딪히는 것이에요. 속도 제한을 처리하는 몇 가지 방법이 있습니다.
출처: 문서
본문
langchain RateLimiter 사용하기 (Python 전용)
애플리케이션이나 평가기에서 langchain Python 채팅 모델을 사용한다면, 모델에 속도 제한기를 추가할 수 있어요. 이는 모델 제공자 API에 요청이 전송되는 빈도를 클라이언트 측에서 제어해 속도 제한 오류를 피할 수 있게 해줍니다.
from langchain.chat_models import init_chat_model
from langchain.rate_limiters import InMemoryRateLimiter
rate_limiter = InMemoryRateLimiter(
requests_per_second=0.1, # <-- Super slow! We can only make a request once every 10 seconds!!
check_every_n_seconds=0.1, # Wake up every 100 ms to check whether allowed to make a request,
max_bucket_size=10, # Controls the maximum burst size.
)
model = init_chat_model("gpt-5.5", rate_limiter=rate_limiter)
def app(inputs: dict) -> dict:
response = model.invoke(...)
...
def evaluator(inputs: dict, outputs: dict, reference_outputs: dict) -> dict:
response = model.invoke(...)
...
속도 제한기 구성에 대한 자세한 내용은 langchain 문서를 참고하세요.
지수 백오프로 재시도하기 (Retrying with exponential backoff)
속도 제한 오류를 처리하는 매우 일반적인 방법은 지수 백오프로 재시도하는 것입니다. 지수 백오프로 재시도한다는 것은 각 재시도 사이의 대기 시간을 지수적으로 증가시키며 실패한 요청을 반복적으로 재시도하는 것을 의미합니다. 이는 요청이 성공하거나 최대 요청 횟수에 도달할 때까지 계속됩니다.
langchain 사용 시
langchain 구성 요소를 사용한다면 .with_retry(...) / .withRetry() 메서드로 모든 모델 호출에 재시도를 추가할 수 있습니다:
from langchain import init_chat_model
model_with_retry = init_chat_model("gpt-5.4-mini").with_retry(stop_after_attempt=6)
import { initChatModel } from "langchain";
const model = await initChatModel("gpt-5.5", {
modelProvider: "openai",
});
const modelWithRetry = model.withRetry({ stopAfterAttept: 2 });
자세한 내용은 langchain Python 및 JS API 참조를 확인하세요.
langchain 미사용 시
langchain을 사용하지 않는다면 tenacity(Python) 또는 backoff(Python) 같은 다른 라이브러리를 사용해 지수 백오프로 재시도를 구현하거나, 처음부터 직접 구현할 수 있습니다. 이 방법의 몇 가지 예시는 OpenAI 문서에서 확인할 수 있습니다.
max_concurrency 제한하기 (Limiting max_concurrency)
애플리케이션과 평가기에 보내는 동시 호출 수를 제한하는 것도 모델 호출 빈도를 줄여 속도 제한 오류를 피하는 또 다른 방법입니다. max_concurrency는 evaluate() / aevaluate() 함수에 직접 설정할 수 있습니다. 이는 데이터셋을 스레드로 분할해 평가를 병렬화합니다.
from langsmith import aevaluate
results = await aevaluate(
...
max_concurrency=4,
)
import { evaluate } from "langsmith/evaluation";
await evaluate(..., {
...,
maxConcurrency: 4,
});
더 알아보기 (Learn more)
- 이 문서들을 사용하기 — MCP를 통해 Claude, VSCode 등에 연결하여 실시간 답변을 받아 보세요.
- GitHub에서 이 페이지 편집 또는 이슈 등록