42.47%라는 수치는 소수의 텍스트 퇴행(Text Degeneration) 요청이 전체 배치 추론 시간을 얼마나 심각하게 왜곡하는지 보여준다. 정상적인 요청들이 원활하게 처리되어야 할 환경에서, 고장 난 몇 개의 요청이 도로 전체를 막아선 차량처럼 시스템의 흐름을 마비시킨 것이다. 이는 단순한 하이퍼파라미터 설정 오류나 일시적인 노이즈가 아니다. 현재 상용화된 거의 모든 거대언어모델(LLM)이 채택한 학습 목적 함수 자체의 구조적 결함에서 비롯된 필연적인 실패 모드다.

도메인 특화 OCR 모델을 구축하던 DharmaOCR 연구팀은 전체 페이지 중 3% 미만의 요청이 전체 벽시계 시간(Wall-clock time)의 절반 가까이를 점유하는 기이한 현상을 관찰했다. 해당 요청들은 종료 토큰(EOS)을 생성하지 못한 채 특정 문구를 무한히 반복하다가, 시스템이 정한 최대 토큰 제한(Max-token limit)에 도달해서야 강제로 종료되었다. 이 과정에서 단일 요청의 실패를 넘어 동일한 GPU에서 처리되던 다른 모든 정상 요청의 처리 속도까지 물리적으로 저하되는 문제가 발생했다. 이는 벤치마크 수치로는 파악할 수 없는, 실제 프로덕션 환경의 치명적인 성능 저하 요인이다.

Qwen2.5-VL-7B-Instruct에서 발견된 2.42%의 함정

Qwen2.5-VL-7B-Instruct 모델을 활용한 PDF 문서 OCR 작업에서 2.42%의 텍스트 퇴행 사례가 확인되었다. 텍스트 퇴행이란 모델이 생성 종료를 알리는 EOS(End-of-Sequence) 토큰을 출력하지 않고 특정 토큰이나 문구 조각을 반복하다가 시스템의 강제 종료에 의존하게 되는 현상을 말한다. 겉으로는 단순한 생성 오류처럼 보이지만, 실제로는 시스템 자원을 비정상적으로 점유하며 전체 성능 지표를 왜곡하는 주범이다.

실험 결과, 퇴행이 발생한 요청의 비율은 매우 낮음에도 불구하고 전체 시스템의 추론 시간에 미치는 영향은 압도적이었다. 퇴행 요청을 일반적인 지속 시간을 가진 요청으로 대체했을 때 전체 추론 시간은 7.3분에서 4.2분으로 급감했다. 이는 단 2.42%의 퇴행 요청이 전체 벽시계 시간(Wall-clock time, 실제 경과 시간)을 42.47%나 팽창시켰음을 의미한다. 소수의 실패 사례가 전체 배치 처리 속도를 끌어내리는 결정적인 병목 지점으로 작용한 것이다.

모델의 학습 목적 함수인 최대 가능도 추정(Maximum Likelihood Estimation) 방식은 이러한 퇴행을 유발하는 구조적 결함의 근원이다. 모델은 이전 토큰들을 바탕으로 다음 토큰의 확률을 높이는 방향으로 학습되는데, 일단 특정 패턴이 반복되기 시작하면 확률 기울기가 다시 그 패턴 내부를 가리키게 된다. 반면 정상적인 종료 신호인 EOS 토큰의 확률은 상대적으로 극히 낮아져 외부의 강제 제어 없이는 루프가 멈추지 않는 상태가 된다. 이는 단순한 디코딩 전략의 문제가 아니라 모델 내부 활성화 기하학에 각인된 특성이다.

추론 서버의 자원 관리 방식은 이 현상을 더욱 치명적으로 만든다. 분석에 사용된 vLLM(Virtual LLM, 메모리 효율적 추론 엔진)은 페이지드 메모리(Paged Memory)를 통해 여러 요청을 동적 배치로 묶어 병렬 처리한다. 그러나 퇴행 루프에 빠진 요청은 최대 토큰 제한에 도달할 때까지 GPU 메모리를 과도하게 점유하며 비정상적으로 긴 시간 동안 자리를 차지한다. 결국 스케줄러가 새로운 시퀀스를 배치에 추가할 여유가 줄어들어 병렬 처리 효율이 급감한다. 결과적으로 퇴행 요청의 비용은 해당 요청이 아니라 큐(Queue)에 대기 중인 모든 정상 요청이 나누어 지불하게 된다. 관련 상세 분석과 데모는 DharmaOCR 논문이 공개된 HuggingFace에서 확인할 수 있다.

최대우도 추정(MLE)이 만든 구조적 루프의 원리

최대우도 추정(Maximum-likelihood Estimation, MLE)은 현재 상용화된 거의 모든 언어 모델이 채택하고 있는 단일 목적 함수다. 이 방식의 핵심은 이전 문맥이 주어졌을 때 다음 토큰의 확률을 극대화하고 음의 로그 가능도(Negative Log-Likelihood, NLL)를 최소화하는 것이다. 모델은 전체 코퍼스에 걸쳐 토큰 단위로 정답 시퀀스를 예측하도록 훈련되며 이는 문장의 연속성을 확보하는 데 탁월한 성능을 보인다. 반면 모델은 자기회귀(Autoregressive) 구조를 가지므로 자신이 생성할 전체 시퀀스를 미리 보지 못하며 오직 직전까지의 문맥에만 의존해 다음 토큰 하나를 결정한다. 결과적으로 학습 목적 함수는 각 단계의 확률값에만 집중할 뿐 생성물 전체의 구조적 정합성을 보장하지 않는다.

특정 토큰이나 구절이 반복될 때 발생하는 자기강화(Self-reinforcement) 현상은 이러한 구조적 한계에서 비롯된다. Holtzman et al(2020)의 연구에 따르면 최근 문맥에서 특정 토큰의 출현 빈도가 높아질수록 다음 단계에서 해당 토큰이 선택될 조건부 확률이 더욱 상승하는 경향이 있다. 모델이 일단 이러한 반복 영역에 진입하면 확률의 기울기가 외부가 아닌 내부를 향하게 된다는 점이 중요하다. 즉 반복되는 패턴 자체가 다음 토큰의 강력한 근거가 되어 루프를 더욱 공고히 만드는 구조다. 이는 단순한 확률적 오류가 아니라 학습 데이터의 반복적 패턴과 최적화 방식이 결합되어 모델의 내부 활성화 기하학에 각인된 결과다.

종료 토큰(End-of-Sequence, EOS)의 확률은 루프가 지속되는 동안 극도로 낮아진다. 정상적인 요청은 모델이 EOS 토큰을 생성하며 종료되지만 퇴행이 발생한 요청은 이 신호에 도달하지 못한다. 결과에서 보듯 모델은 특정 토큰이나 파편을 무한히 반복하며 할당된 컨텍스트를 채운다. 이 과정에서 EOS 토큰의 확률은 반복되는 파편의 확률에 비해 무시할 수 있을 정도로 낮아지며 루프는 외부의 강제 중단 없이는 멈추지 않는다. 이로 인해 시스템에 설정된 최대 토큰 제한(max-tokens)이나 KV 캐시 고갈 같은 외부 장치에 의해 강제로 종료될 때까지 GPU 자원을 점유하게 된다.

디코딩 전략인 온도 조절(Temperature)이나 Top-p 샘플링, 반복 페널티 등은 이러한 분포 위에서 작동하는 보조 도구일 뿐이다. 이러한 기법들은 루프 진입 가능성을 낮출 수는 있으나 분포 자체에 내재된 구조적 루프를 제거하지는 못한다. 반면 일반 목적 모델과 특화 모델 모두 동일한 최적화 함수를 통해 생성되므로 이 기하학적 결함은 공통적으로 상속된다. 이는 텍스트 퇴행이 디코딩 전략의 미숙함이 아니라 모델의 학습 목적 함수가 만들어낸 구조적 필연성임을 보여준다.

디코딩 전략의 한계: 증상 완화와 원인 제거의 차이

반복 패널티(Repetition penalty)를 높이거나 온도(Temperature)를 낮추는 설정 변경은 개발자가 루프 현상을 발견했을 때 가장 먼저 시도하는 대응이다. 디코더를 교체하거나 스트리밍 체크를 도입해 반복이 감지되는 즉시 요청을 중단시키는 방식도 흔히 쓰인다. 이러한 대응책들은 실제로 루프 진입 확률을 낮추는 데 기여하며 단기적인 성능 개선을 가져온다. 그러나 이는 증상을 완화하는 임시방편일 뿐, 분포 내에 존재하는 고확률 루프 영역 자체를 삭제하는 원인 제거책은 아니다.

최적화 목적 함수에 문제의 핵심이 있다. 현재 대부분의 상용 모델이 채택하고 있는 최대 우도 추정(Maximum Likelihood Estimation, MLE) 방식은 이전 토큰들이 주어졌을 때 다음 토큰의 확률을 최대화하는 방향으로 작동한다. 모델은 전체 시퀀스의 완결성보다 매 단계의 예측 정확도에 집중하며, 이는 모델이 매우 뛰어난 연속성 생성 능력을 갖게 만든다. 반면 이 과정에서 특정 토큰이나 구절이 최근 문맥에 자주 등장할수록 다음 단계에서 해당 토큰이 선택될 확률이 더욱 높아지는 자기 강화 현상이 필연적으로 발생한다.

디코딩 전략과 분포의 기하학적 특성이 작동하는 층위는 완전히 다르다. 온도 조절이나 Top-p, 빔 서치(Beam search) 같은 전략들은 이미 계산된 확률 분포 위에서 어떤 토큰을 선택할지 결정하는 필터 역할을 수행한다. 반면 텍스트 퇴행은 확률 분포 자체의 기하학적 결함에서 기인한다. 분포 내에 이미 고확률의 루프 영역이 형성되어 있으며, 일단 모델이 이 영역에 진입하면 확률의 기울기가 외부가 아닌 내부를 향하게 된다. 결과적으로 문장을 끝내야 할 EOS(End-of-Sequence) 토큰의 확률은 반복되는 구절의 확률에 비해 소멸 수준으로 낮아지며 루프가 지속된다.

모델의 규모나 특화 여부와 무관하게 이러한 구조적 취약성은 나타난다. 범용 모델과 특정 도메인에 최적화된 특화 모델 모두 동일한 목적 함수를 공유하며 학습되기 때문에, 동일한 기하학적 결함을 그대로 상속한다. 디코딩 전략을 통해 루프 진입 가능성을 낮출 수는 있으나, 모델의 내부 활성화(Internal activations) 단계에서 형성된 루프 영역 자체를 제거하는 것은 불가능하다. 결국 디코딩 전략은 분포라는 지도 위에서 경로를 수정하려는 시도일 뿐, 지도 자체에 잘못 그려진 길을 지우는 작업이 아니라는 점에서 한계가 명확하다.

vLLM 동적 배칭 환경에서의 전이적 성능 저하

vLLM(Paged Memory 기반 동적 배칭 서버)은 여러 요청을 하나의 배치로 묶어 병렬 처리하며 처리량을 극대화한다. 이 구조에서 각 요청이 점유하는 메모리는 생성되는 토큰 수에 비례하여 선형적으로 증가한다. 정상적인 요청은 모델이 EOS(End-of-Sequence, 생성 종료 토큰)를 출력하는 즉시 메모리를 반환하고 종료된다. 반면 텍스트 퇴행이 발생한 요청은 종료 신호를 보내지 못한 채 설정된 최대 토큰 제한(max-tokens)에 도달할 때까지 무의미한 토큰을 계속해서 생성한다.

퇴행 요청이 점유하는 KV 캐시(Key-Value Cache, 추론 시 이전 토큰 정보를 저장하는 메모리 영역)의 양과 유지 시간은 시스템 성능에 결정적이다. 퇴행 요청은 최대 토큰 제한치까지 메모리를 꽉 채운 상태로 GPU에 매우 오래 머문다. 이는 vLLM 스케줄러가 가용 메모리를 실시간으로 계산하여 신규 요청을 배치에 추가하는 수용 능력을 직접적으로 저하시킨다. 결과적으로 시스템의 전체적인 병렬 처리 수준이 급격히 떨어지며, 큐에 대기 중인 다른 정상 요청들의 처리 속도까지 함께 둔화되는 전이적 성능 저하가 발생한다.

실제 수치로도 이러한 현상은 증명된다. Kwon et al, 2026의 분석에 따르면, 퇴행 요청이 하나라도 병렬로 실행되고 있을 때 정상 요청의 평균 지연 시간은 최소 15%에서 최대 71%까지 상승했다. 정상 요청 자체가 더 복잡해지거나 계산량이 늘어난 것이 아니다. 그러나 동일한 하드웨어 자원을 사용하는 퇴행 요청이 메모리를 과점함으로써 시스템 전체의 효율성이 갉아먹힌 결과다.

개별 요청의 실패보다 더 심각한 인프라 비용 문제를 야기한다는 점에서 실무적 관점의 대응이 필요하다. 텍스트 퇴행은 단순히 잘못된 답변을 내놓는 품질의 문제가 아니라, 서버 전체의 처리량(Throughput)을 떨어뜨리는 자원 고갈 현상과 유사한 양상을 띤다. 소수의 퇴행 요청이 전체 큐의 처리 시간을 비정상적으로 부풀리고, 결국 서비스 전체의 응답성을 저하시키는 구조적 병목으로 작용한다. 개발자가 체감하는 지연 시간의 증가는 모델의 추론 속도 저하가 아니라, 메모리 점유로 인한 스케줄링 효율의 붕괴에서 기인한다. 따라서 퇴행 현상을 제어하는 것은 모델의 정확도를 높이는 작업인 동시에, 추론 서버의 운영 효율을 최적화하고 하드웨어 비용을 절감하는 필수적인 엔지니어링 과제가 된다.

한국 AI 실무자를 위한 시사점: 평균의 함정과 꼬리 지연 시간

전체 처리 시간의 절반 가까이를 단 3% 미만의 페이지가 점유하는 현상이 실제 PDF 문서 OCR(광학 문자 인식) 시나리오에서 관찰된다. 이는 벤치마크 수치에서는 드러나지 않는 텍스트 퇴행(Text Degeneration: 모델이 특정 토큰이나 구절을 무한히 반복하며 종료 토큰을 생성하지 못하는 현상) 때문이다. 일반적인 벤치마크는 평균 처리량에 집중하지만, 실제 프로덕션 환경의 성능을 결정짓는 것은 이러한 최악의 경우에 발생하는 꼬리 지연 시간(Tail Latency: 전체 요청 중 가장 느린 상위 일부 요청의 응답 시간)이다.

모델의 구조적 한계에서 기인하는 퇴행 현상은 단순한 디코딩 설정의 문제가 아니다. 대부분의 모델이 채택하는 최대 가능도 추정(Maximum Likelihood Estimation) 학습 방식은 다음 토큰의 확률만을 극대화하므로, 한 번 반복 루프에 진입하면 그 확률이 스스로 강화되는 특성을 갖는다. 반면 실무자들은 흔히 온도(Temperature) 조절이나 반복 페널티(Repetition Penalty) 부여 같은 튜닝으로 이를 해결하려 한다. 그러나 이는 확률 분포의 표면을 수정할 뿐, 루프가 발생하는 기하학적 구조 자체를 제거하지 못한다.

단일 요청의 퇴행이 해당 요청의 실패로 끝나지 않고 시스템 전체로 전이된다는 사실은 주목할 점이다. vLLM(vLLM: 고성능 LLM 추론 엔진)과 같은 최신 서버는 동적 배칭과 페이지드 메모리를 통해 처리량을 높이지만, 퇴행 루프에 빠진 요청이 최대 토큰 제한까지 메모리를 점유하면 다른 정상 요청들의 가용 자원이 급감한다. Dong et al(2026)의 분석에 따르면, 퇴행 요청을 제거했을 때 전체 추론 시간이 7.3분에서 4.2분으로 줄어들며 전체 배치 비용이 42.47%나 부풀려졌음이 확인되었다. 이는 정상적인 요청조차 병렬 처리 효율 저하로 인해 응답 시간이 최소 15%에서 최대 71%까지 증가하는 전이적 비용을 지불했음을 의미한다.

평균 처리량이라는 지표의 함정에서 벗어나 최악의 자원 점유 시나리오를 제어하는 데 한국의 AI 실무자들은 집중해야 한다. 단순한 하이퍼파라미터 튜닝을 넘어, 스트리밍 과정에서 반복 패턴을 감지하여 즉시 연결을 끊는 강제 중단(Abort) 로직의 구현이 필수적이다. 인프라 설계 단계에서도 단일 요청의 실패가 전체 배치 성능을 저하시키는 전이적 비용을 산정하고, 이를 방어하기 위한 쿼터 제한과 격리 전략을 수립해야 한다. 2026-05-22 현재의 기술 수준에서 퇴행은 제거 대상이 아니라 관리 대상이기 때문이다.