LLM 병렬 호출은 속도 제한 때문에 오히려 느려질 수 있다

오픈소스 자바 AI 작업 조율 도구인 OxyJen에서 여러 문서를 동시에 처리하는 MapNode가 만들어지고 있다. MapNode는 목록의 각 항목에 같은 작업을 나누어 적용하고, 동시에 몇 개까지 실행할지, 시간 초과와 개별 오류 처리를 정할 수 있다. 문제는 각 작업 안에서 Gemini 같은 대형 언어 모델을 부를 때 생긴다.

Gemini 무료 요금제는 분당 15회 호출 제한이 있어, 동시에 3개 요청을 보내면 일부 요청이 429 오류로 막힌다. LLMChain은 실패한 요청을 다시 시도하고 지수 백오프를 쓰지만, 30초와 60초씩 기다리는 벌칙 때문에 전체 시간이 더 길어진다. 대안으로 RateLimitedChatModel이 호출 시작 시간을 분당 허용량에 맞춰 띄우는 방식이 검토되고 있다.

이 방식은 재시도 폭주를 줄이고 이론상 최소 시간에 가까워질 수 있지만, 호출 시간이 5초 정도일 때는 실제 병렬성이 거의 사라질 수 있다. 현재 제한 조절 구현은 CAS를 쓰는 방향으로 고쳐지고 있다.

핵심 포인트

  • OxyJen의 MapNode는 여러 항목을 동시에 처리하는 자바 기반 AI 작업 조율 기능이다.
  • Gemini 무료 요금제의 분당 15회 제한에서는 동시에 3개 LLM 호출을 보내도 일부가 429 오류로 실패할 수 있다.
  • 30초, 60초로 늘어나는 지수 백오프는 재시도 폭주를 막지만 전체 처리 시간을 크게 늘릴 수 있다.
  • 호출 시작 시간을 분당 허용량에 맞춰 띄우면 실패와 대기 비용을 줄일 수 있다.
  • 강한 병렬성보다 안정적인 속도 제한이 에이전트 비용과 처리 시간을 더 잘 제어할 수 있다.

용어 한 줄 설명

MapNode
여러 항목에 같은 작업을 나누어 동시에 실행하도록 만든 기능 이름입니다.
대형 언어 모델
ChatGPT, Claude처럼 글을 읽고 쓰고 코드를 짜는 데 쓰이는 대규모 AI 프로그램.
무료 요금제
기간 제한 없이 일부 기능을 공짜로 사용할 수 있게 제공하는 등급입니다.
429 오류
서버가 '요청이 너무 많다'고 거부할 때 반환하는 HTTP 상태 코드
지수 백오프
실패할 때마다 다음 재시도까지 기다리는 시간을 점점 크게 늘리는 방식이다.
RateLimitedChatModel
정해진 호출 제한을 넘지 않도록 모델 호출 속도를 조절하는 감싸기 구조다.
AI 에이전트
사람 대신 정보를 찾거나 작업을 처리하도록 만든 AI 프로그램입니다.
LLM 호출
ChatGPT나 Claude 같은 AI 언어 모델에 질문을 보내고 답변을 받는 동작입니다.
원문 보기