프리필-디코드 분리는 프롬프트 처리와 토큰 생성을 분리하여 각 LLM 단계가 서로 다른 워커, 일정, 용량 계획을 사용할 수 있도록 합니다.
긴 RAG 프롬프트는 첫 토큰이 생성되기 전에 많은 컴퓨팅 작업을 집중적으로 요구하지만, 디코딩은 그 후 메모리 대역폭에 민감한 소규모 반복 작업을 여러 번 수행합니다. 두 단계를 하나의 GPU에서 실행하면 간단하지만, 긴 프리필 작업이 진행 중인 대화를 중단할 수 있습니다. 분리 방식은 요청과 KV 상태를 서로 다른 풀 사이에서 이동시켜, 추가적인 조정 및 전송 비용을 지불하는 대신 첫 토큰 지연 시간과 토큰당 지연 시간을 독립적으로 제어할 수 있게 합니다.
프리필과 디코드는 서로 다른 리소스 특성을 가집니다
프리필은 모든 프롬프트 토큰을 병렬로 처리하고 KV 캐시를 구축하므로, 프롬프트 길이가 늘어날수록 지속 시간이 증가하는 연산 집약적 작업이 됩니다. 디코드는 모델 가중치와 누적된 KV 상태를 반복해서 읽으며 한 번에 하나 또는 몇 개의 새 토큰을 생성합니다.
DistServe는 두 단계가 GPU를 공유할 때 발생하는 프리필-디코드 간섭을 식별하고, 프리필은 첫 토큰까지의 시간과 연결되며 디코드는 출력 토큰당 시간에 영향을 준다는 점을 설명합니다. 두 단계를 분리하면 스케줄러가 각 목표를 독립적으로 보호할 수 있습니다. 이러한 차이는 이후 가정 환경 테스트에서도 확인할 수 있습니다.
분리 방식은 일반적인 모델 병렬화와 다릅니다. 동일한 모델이 두 풀에 모두 존재할 수 있지만, 요청은 하나의 순전파 과정에 속한 레이어 사이가 아니라 기능별 단계 사이에서 이동합니다. 자동화를 적용하기 전에 중간 결과를 확인할 수 있어야 합니다.
KV 전송이 두 워커 풀을 연결합니다
프리필이 끝나면 시스템은 요청의 KV 캐시를 디코드 워커에서 사용할 수 있도록 해야 합니다. 텐서를 PCIe 또는 네트워크 패브릭을 통해 전송하거나, 공유 메모리를 사용하거나, 이동 비용을 최소화하도록 워커를 배치할 수 있습니다.
Splitwise는 단계별 머신과 스케줄링을 사용하는 단계별 서빙을 연구하여, 프롬프트 작업과 토큰 작업의 서로 다른 계산 특성에 하드웨어 할당을 맞춰야 하는 이유를 보여줍니다. 큐잉과 상태 이동은 서빙 경로의 일부가 됩니다. 이러한 경계는 실제 운영 조건에서 별도로 측정해야 합니다.
디코드 풀은 일관된 KV 상태와 요청 메타데이터를 확보하기 전에는 시작할 수 없습니다. 긴 컨텍스트는 전송해야 할 바이트를 늘리므로, 소규모 홈 네트워크에서는 명목상 더 빠른 단계 분리가 동일 위치 실행보다 성능이 떨어질 수 있습니다.
독립적인 확장은 용량 계획을 바꿉니다
별도의 풀을 사용하면 긴 문서 작업이 몰릴 때 디코드 용량을 비례해서 늘리지 않고도 프리필 용량을 추가할 수 있으며, 백그라운드 요약 작업이 프롬프트 워커를 사용하는 동안 음성 디코딩을 보호할 수도 있습니다. 수용 제어는 두 개의 큐와 두 개의 지연 시간 예산을 대상으로 설정할 수 있습니다. 여러 소스가 제한된 컨텍스트를 두고 경쟁할 때 이러한 실질적인 효과가 나타납니다.
Mooncake는 KV 캐시 이동과 저장을 핵심 서빙 요소로 다루는 KV 캐시 조정을 설명합니다. 이 아키텍처는 분리 방식이 병목을 단순한 GPU 스케줄링에서 상태 전송과 캐시 조정으로 옮긴다는 점을 보여줍니다.
실패 경계는 확장성 또는 대역폭 부족입니다. 가정용 GPU가 한두 개뿐이라면 특화 작업을 위한 여분의 장치가 없을 수 있으며, 모델 가중치 중복과 KV 전송으로 인해 제거하려던 간섭보다 더 많은 메모리와 지연 시간이 발생할 수 있습니다.
동일 위치 실행과 분리된 단계의 예산 비교
짧은 프롬프트, 긴 프롬프트, 혼합 프롬프트를 대상으로 초당 프롬프트 토큰 수, 첫 토큰까지의 시간, 출력 토큰당 시간, 전송된 KV 바이트, 전송 시간, 큐 대기 시간, 모델 메모리 중복, 에너지 사용량, 장애 복구를 측정합니다. 이 종속성은 최종 인터페이스에 명시적으로 남겨야 합니다.
동일 위치 실행의 대안으로 청크 프리필을 사용합니다. 두 번째 풀을 추가하기 전에 청크 프리필을 먼저 테스트한 다음, 두 아키텍처에서 동일한 요청 도착 기록을 비교합니다. 따라서 결과는 원래의 근거와 대조하여 확인해야 합니다.
단계 간 간섭이 측정되고 전송 경로가 두 지연 시간 목표를 모두 유지할 때만 분리 방식을 도입합니다. 소규모 서버에서는 프리필 청크 크기를 제한한 동일 위치 스케줄링이 상태 이동을 줄이면서도 동일한 사용자 경험을 제공할 수 있습니다.
기술 및 AI 허브
더 읽어보기

임베딩 드리프트란 무엇이며, 프라이빗 검색 인덱스를 언제 다시 구축해야 할까요?
모델, 전처리, 코퍼스 및 쿼리 드리프트를 해석하고, 모니터링과 비호환성을 구분하며, 프라이빗 인덱스를 언제 재구축해야 하는지 판단하세요.

토크나이저 호환성이란 무엇이며, 모델 전환을 중단시킬 수 있는 이유는 무엇인가요?
로컬 모델 전환을 위한 어휘 식별자, 특수 토큰 의미, 채팅 템플릿, 캐시된 토큰, 어댑터 및 호환성 검사를 해독합니다.

모델 상주성이란 무엇이며, 로컬 AI 서비스는 언제 가중치를 로드된 상태로 유지해야 할까요?
가중치 상주, 캐시 수준, 콜드 스타트, 축출, 멀티플렉싱, 메모리 압박, 그리고 홈 AI 서비스를 웜 상태로 유지해야 하는 시점을 설명합니다.

