여러 테넌트가 H200 같은 공유 GPU 한 장 위에서 vLLM 추론 서버를 나눠 쓰는 환경을 운영하고 있다면 이 글이 바로 여러분을 위한 것입니다. 핵심 결론은 한 문장으로 요약됩니다. 테넌트들의 트래픽이 버스트성을 띨 때, 고정된 어드미션 예산을 수요가 있는 쪽으로 실시간 재분배하는 동적 컨트롤러는 예산을 반반으로 얼려 둔 정적 분배보다 총 처리량을 14% 더 냅니다. 이 수치는 실제 H200 한 장에서 측정한 값입니다.

문제: 예산은 얼어 있는데 수요는 출렁인다

공유 GPU 위에서 여러 테넌트의 LLM 추론을 서빙하는 문제는 이제 흔한 운영 과제입니다. H200 한 장에 버스트성, 시퀀스 길이, SLO가 서로 다른 테넌트들이 동시에 올라탑니다. Kubernetes 위에서는 보통 Kueue 같은 스케줄러가 어떤 작업을 풀에 들여보낼지 정하지만, 일단 들어온 요청들이 엔진의 유한한 용량을 어떻게 나눠 쓰는지는 배포 시점에 정적으로 고정되는 경우가 대부분입니다.

여기서 자주 쓰이는 방식이 테넌트마다 동시 요청 슬롯을 균등하게 나눠 주는 정적 분배입니다. 문제는 이 균등 분배가 테넌트의 트래픽이 출렁일 때 손해를 본다는 데 있습니다. 짧은 요청을 몰아쳤다가 한참 쉬는 대화형 테넌트를 생각해 보십시오. 이 테넌트가 쉬는 동안 그에게 예약된 슬롯 절반은 그대로 놀지만, 정적 분배는 그 놀고 있는 용량을 옆에서 굶고 있는 다른 테넌트에게 넘겨주지 못합니다. 예약해 두고 안 쓰는 용량이 곧 낭비입니다.

제어루프로 정식화한 재분배 문제

이 연구는 문제를 고정 총예산 아래의 폐루프 제어로 정식화합니다. 총 슬롯 예산은 항상 일정하게 유지되고, 컨트롤러는 그 예산 안에서 슬롯을 테넌트 사이로 옮기기만 합니다. 상태는 테넌트별 수요(큐 깊이), GPU 메모리 사용률, 최근 지연 백분위수로 구성되고, 액션은 합이 0인 재분배, 즉 한 테넌트에서 뺀 만큼 다른 테넌트에 더해 주는 조정입니다. 보상은 처리량에서 SLO를 넘긴 꼬리 지연 페널티와 비용을 뺀 형태입니다.

손대는 레버는 vLLM 엔진 내부의 max_num_seqs가 아니라 클라이언트 측 테넌트별 어드미션 동시성입니다. 프로덕션 vLLM은 엔진 파라미터를 재시작 없이 바꿀 수 없기 때문에, 실제로 조정 가능한 지점은 서버로 들여보내는 동시 요청 수뿐이라는 실무 제약을 그대로 반영했습니다. 이 값을 바꾸면 vLLM의 연속 배치 구성이 실제로 재편되므로, Kueue 사이드카나 LLM 에이전트 라우터가 프로덕션에서 손댈 수 있는 레버와 동일합니다. 제어 틱마다 실제 LLM을 호출하지는 않으며, 온라인으로 튜닝되는 대상은 어드미션 동시성 자체입니다.

실측 설정: 한 서버, 고정 예산, 두 테넌트

측정은 데모 클러스터의 실제 H200 노드 한 장에서 이뤄졌습니다. vLLM OpenAI 호환 서버가 Qwen2.5-3B-Instruct를 서빙했고, 두 테넌트가 고정 96슬롯 예산 아래에서 이 서버를 공유했습니다. 예산 96은 두 정책 모두에서 똑같이 유지되므로, 정책 사이에 달라지는 것은 예산을 어떻게 나누느냐일 뿐 예산의 크기가 아닙니다.

테넌트 A는 짧은 64토큰 디코딩을 켰다 껐다 하며 몰아치는 버스트형 대화 테넌트, 테넌트 B는 긴 512토큰 디코딩을 쉬지 않고 보내는 상시 배치 테넌트입니다. B에는 완료된 슬롯을 즉시 다시 채우는 폐루프 백프레셔를 걸어, 배치가 한순간도 마르지 않고 서버가 실제로 부하를 받도록 했습니다. 정적 정책은 예산을 {A:48, B:48}로 얼려 둡니다. 동적 정책은 2초마다 테넌트별 수요를 관측해 고정된 96슬롯을 수요가 있는 쪽으로 옮기는 결정론적 컨트롤러입니다. 각 정책을 90초 정상 구간에서 측정했습니다.

결과: 동적 재분배가 정적을 이겼다

결과부터 적습니다. 실제 하드웨어에서 부하가 실린 상태로 측정했을 때, 수요 반응형 동적 컨트롤러가 정적 균등 분배를 이겼습니다. 총 완료 처리량은 초당 9,894토큰에서 11,274토큰으로 14.0% 올랐고, 상시 배치 테넌트 B의 처리량은 초당 6,557토큰에서 7,736토큰으로 18.0% 올랐습니다. 완료 요청 수도 9,063건에서 9,811건으로 7.6% 늘어(초당 96.7건에서 104.0건), 처리량 이득이 지연을 대가로 산 것이 아닙니다. 오히려 p99 꼬리 지연은 4.15초에서 4.08초로 1.6% 더 나았습니다.

Dynamic reallocation beats static split 실제 H200에서 측정한 총 처리량과 배치 테넌트 처리량입니다. 고정 예산을 수요 쪽으로 옮기자 총 처리량이 14.0%, 배치 처리량이 18.0% 올랐습니다.

이 이득이 어디서 나오는지는 컨트롤러의 궤적이 그대로 말해 줍니다. 컨트롤러는 A로 15번, B로 19번 슬롯을 옮기고 11번은 유지를 택했으며, 최종 상한은 {A:4, B:92}로 끝났습니다. 이 마지막 배치가 이야기의 전부입니다. 대화형 테넌트 A는 버스트형이라 구간의 상당 부분을 놀며 보내는데, 정적 균등 분배에서는 A의 예약된 48슬롯이 그 시간 내내 놀고 상시 배치 테넌트 B는 자기 몫 48에 묶여 굶습니다. 동적 컨트롤러는 A가 놀고 있음을 감지해 예산의 거의 전부를 B에게 넘기고, 백프레셔로 밀린 일감이 끝없이 쌓여 있는 B는 그 여유 용량을 곧바로 완료된 작업으로 바꿉니다. A가 다시 몰아치면 컨트롤러는 테넌트별 하한을 지키며 슬롯을 되돌릴 수 있습니다. 정적 분배는 이걸 못 하고, 예약해 둔 놀고 있는 절반은 바로 옆 테넌트가 용량에 굶주릴 때 순수한 낭비가 됩니다.

Where the fixed budget ends up 정적 정책은 {A:48, B:48}을 끝까지 유지하지만, 동적 컨트롤러는 A가 노는 동안 예산의 거의 전부를 상시 배치 테넌트로 옮겨 {A:4, B:92}로 끝납니다.

정직한 한계: 사용률 67%, 목표 90%에는 못 미쳤다

이 숫자가 함께 짊어진 조건도 그대로 밝힙니다. 정상 구간의 평균 GPU 사용률은 정적 67.2%, 동적 66.3%였습니다. 순간 최고치는 각각 99%와 87%까지 올랐지만, 평균은 우리가 목표로 삼았던 90% 지속에 못 미쳤습니다. 이유는 모델 크기입니다. 3B 모델은 버스트형 테넌트가 쉬는 골 구간에서 H200을 다 채우지 못하고, 그래서 버스트 사이사이 사용률이 주저앉아 평균을 끌어내립니다.

GPU utilization: peak vs steady 정적과 동적 정책의 GPU 사용률 정상 구간 평균과 최고치입니다. 최고치는 90%대에 닿지만 평균은 67% 안팎으로, 3B 모델이 골 구간에서 H200을 다 채우지 못한 결과입니다.

평균을 90% 위로 끌어올리려면 7B 이상 모델이 필요한데, 약 15GB에 달하는 그 가중치를 이날 데모 클러스터의 제한된 Hugging Face 이그레스로는 파드의 시간 창 안에 안정적으로 내려받지 못했습니다. 그래서 정직하게 말하면, 처리량 이득은 실제로 측정됐고 그 메커니즘도 짚을 수 있지만, 그 이득은 완전 포화가 아니라 67% 평균 사용률에서 얻은 것입니다. 이득의 방향과 크기는 믿을 만하되, 90% 지속이라는 목표 자체는 달성하지 못했으며 그렇다고 주장하지도 않습니다.

이 결과는 앞선 비포화 실험을 바로잡습니다. 그때는 부하가 GPU를 21% 근처에만 올려 컨트롤러가 움직일 이유를 찾지 못했고 두 정책이 노이즈 안에서 비겼습니다. 그것은 동적 제어가 쓸모없다는 증거가 아니라, 어드미션 벤치마크는 경합 대상이 실제로 경합될 때만 의미가 있다는 증거였습니다. 더 큰 모델, 배치를 항상 채우는 폐루프 백프레셔, 그리고 전역 증감이 아니라 예산을 보존하며 옮기는 레버라는 세 가지 재설계가 비결과를 측정된 이득으로 뒤집었습니다.

무엇을 남기나

ThakiCloud 입장에서 이 연구가 남기는 실무적 사실은 명확합니다. 버스트성 멀티테넌시에서 예약해 두고 놀리는 용량은 실재하는 손실이고, 단순한 수요 반응 재분배 규칙만으로도 그 손실의 두 자릿수 비율을 회수할 수 있다는 것입니다. 하네스는 이제 실제 하드웨어에서 부하를 걸고 이기는 것까지 검증됐으므로, 더 큰 모델로 사용률을 90% 위로 끌어올려 포화 상태에서 이득의 크기를 재측정하거나, 규칙 기반 컨트롤러 자리에 실제 LLM 에이전트 결정 함수를 끼워 넣는 다음 단계로 곧장 이어갈 수 있습니다.

과학적으로는 실시간 텔레메트리를 관측해 고정 예산을 온라인으로 재분배하는 제어루프를 명시적으로 정식화하고, 그것을 실제 vLLM 서버 위에서 측정해 이득과 그 조건(67% 사용률)을 함께 보고했다는 점이 기여입니다. 이 연구는 ThakiCloud가 같은 Kueue·GPU 기반 위에서 이어 온 연구 계보의 일부입니다. 저지 모델 예산을 스케줄링하는 ABJ-Gate, 어드미션 시점의 TEE 원격 증명을 다루는 Attested Confidential Sovereign Inference, 드문 이산 사고에 대한 이진 결정을 다루는 “Escalate or Act?”와 비교하면, 이 연구는 초 단위로 연속 재조정되는 다목적 실시간 제어라는 질적으로 다른 문제를 다룹니다.

이 수치는 시뮬레이션이 아니라 실제 H200에서 vLLM을 띄워 측정한 값입니다.

논문 상세 페이지는 다음에서 확인할 수 있습니다: https://huggingface.co/datasets/thaki-AI/daily-paper-2026-07-21-agent-dynamic-batch-tuning-vllm