DuoLM은 아이템 벡터 재사용과 공유 프리픽스로 LLM 추천 서빙을 가속한다

DuoLM: Fast and Effective Personalized Recommendation with Language Models

HF Daily2610.24481

Jiang Wu, Yutong Song, Hongbo Wang2026-10-20

무엇인가

DuoLM은 언어모델 기반 개인화 추천에서 온라인 서빙 비용을 줄이는 문제를 다룬다. 아이템 본문, 사용자 히스토리, 피드백을 함께 넣으면 품질은 좋아질 수 있지만, 후보마다 전체 텍스트를 평가하면 온라인 연산량과 처리량 한계가 커진다. 논문은 두 가지 병목을 지적한다. 첫째, 품질을 크게 떨어뜨리지 않고 온라인 연산을 줄이기 어렵다. 둘째, 모델 연산을 줄여도 추천 서비스가 같은 히스토리를 후보마다 반복 구성·전송하고 스케줄링 오버헤드를 치르면 end-to-end 처리량은 자동으로 좋아지지 않는다.

어떻게 동작하나

모델 쪽 핵심은 인코더 LLM과 개인화 랭커 LLM을 분리하되 함께 학습하는 구조다. 인코더 LLM은 아이템 템플릿 토큰의 마지막 EOS 히든 상태를 아이템 표현으로 뽑아 사용자 독립적인 벡터를 만든다. 연속 입력 인터페이스는 이 벡터를 RMS 정규화하고, 랭커의 초기 네이티브 임베딩 스케일을 기준으로 보정한 뒤 학습 가능한 스칼라 게인을 곱해 하나의 입력 임베딩으로 바꾼다. 이 벡터가 랭커 입력에서 아이템 텍스트 구간을 대체한다. 랭커는 각 히스토리 항목에 대해 마커 임베딩, 아이템 벡터, 피드백 텍스트 임베딩을 이어 붙이고, 지시문과 후보 헤더 뒤에 후보 아이템 벡터를 붙인다. 공유 선형 헤드가 후보의 마지막 히든 상태를 점수로 바꾸며, 자기회귀 디코딩 없이 후보들을 랭킹한다. 각 후보는 공유 프리픽스에만 주의하고 후보 간 주의는 하지 않는다.

무엇과 다른가

학습은 추천 라벨과 교사 증류를 결합한다. 먼저 전체 텍스트를 입력받는 교사 모델을 같은 지시문·히스토리·피드백으로 학습시키고, 점수용 접미사 마지막 토큰의 히든 상태를 선형 헤드로 점수화한다. 교사를 고정한 뒤 그 점수를 캐시하고, 인코더·연속 입력 인터페이스·랭커·점수 헤드를 end-to-end로 공동 학습한다. 손실은 관측된 정답에 대한 교차엔트로피와, 같은 후보군 안에서 교사 점수 분포를 따라가게 하는 KL 증류의 가중 합이다. 증류 온도 τ와 가중치 β를 사용하며 β는 최종값까지 선형으로 올린다. 학습 중에는 아이템 벡터를 매 forward마다 다시 계산해 인코더까지 미분 경로를 유지하고, 학습이 끝나면 아이템 임베딩을 오프라인으로 미리 계산해 온라인에서는 랭커만 실행한다.

어떻게 쓰나

런타임 최적화는 이 구조에서 나오는 재사용 가능성을 실제 처리량으로 바꾸는 역할을 한다. 먼저 가상 토큰 ID(VID)를 도입해, 인터페이스 이후의 아이템 벡터를 FP16으로 GPU 상주 테이블에 저장하고 원래 어휘 크기 V 뒤에 가상 ID를 붙인다. 임베딩 조회가 이 테이블 행을 반환하므로 온라인 요청은 전체 아이템 벡터 대신 아이템 ID와 피드백 텍스트만 전달한다. 다음으로 SGLang 위에 다중 아이템 스코어링(MIS) 경로를 구현한다. 한 요청 안에서 후보들을 공유 프리픽스 뒤에 패킹하고, 트리 구조 주의 마스크와 위치 ID 규칙으로 각 후보가 공유 히스토리와 자기 브랜치만 보게 한다. 프리픽스 KV 캐시는 요청당 한 번만 프리필해 후보 브랜치들이 공유한다. 여기에 세그먼트 프리필 CUDA Graph를 적용해 GPU 연산과 의존성을 캡처하고 재생함으로써 CPU 스케줄링과 커널 런치 오버헤드를 줄인다.

전제와 한계

실험은 Amazon Reviews 2023의 Books와 Video Games에서 0.6B Qwen3 백본으로 진행됐다. 평점 예측은 학습 사용자 1만 명, 개발 사용자 1천 명, 히스토리 길이 1·3·5·10으로 평가했고, 다음 아이템 추천은 데이터셋별 학습 사용자 5만 명으로 Books 237,558개, Video Games 233,868개의 학습 쿼리를 만들었다. 평가는 Books 5천 명, Video Games 3천 명 사용자에서 HR@1, HR@10, NDCG@10으로 보고한다. 평점 예측에서 DuoLM의 평균 NLL은 0.9263으로 전체 텍스트 교사의 0.9233과 비슷했고, 기대 평점 기준 MAE와 RMSE는 DuoLM이 더 낮았으며 중앙값 기준 MAE와 RPS는 교사가 더 낮았다. DuoLM은 평점 사전분포, Content kNN, 원시 Qwen3-0.6B보다 모든 평균 지표에서 우수했다.

다음 아이템 추천에서 DuoLM은 Books NDCG@10 0.5586으로 HLLM의 0.5508과 교사의 0.5440을 앞섰다. Video Games에서는 NDCG@10 0.5298로 HLLM의 0.5025보다 높았고 교사의 0.5313과 비슷했다. 다만 Books의 HR@1은 HLLM이 더 높았다. 서빙 성능은 단일 H100에서 초당 약 26,400개 후보 점수를 냈고, 이는 vLLM과 자동 프리픽스 캐싱으로 서빙한 교사 대비 약 60배다. 논문은 최대 60.1배(vLLM 대비), 109.9배(SGLang 대비)까지 보고한다. MIS는 독립 스코어링 대비 동시성 C=1에서 4.81배, C=64에서 29.3배 처리량을 높였고, CUDA Graph는 C=1에서 추가 3.54배, C=64에서 1.06배를 더했다. VID는 FIR 평점 진단(m=8)에서 요청 크기를 99.0% 줄이고 C=8에서 처리량을 66.5% 높였으며, 별도 평점 벤치마크에서는 평균 요청 페이로드를 90% 이상 줄였다. CPU 입력 준비도 병목이 될 수 있어 초당 100 요청에서 입력 컴파일 프로세스를 1개에서 2개로 늘리면 단일 벡터 평점 서비스가 제공 요청률에 근접했다.

개발자 관점에서 DuoLM은 후보 수가 많은 LLM 추천 서빙에서 오프라인 아이템 인코딩과 온라인 개인화를 분리하는 설계를 보여준다. 아이템 표현을 사용자 독립적으로 만들어 재사용하고, 한 요청의 후보들을 공유 프리픽스와 커스텀 주의 마스크로 묶어 히스토리 계산을 한 번만 하는 방식은 기존 추론 엔진 위에서도 응용할 수 있다. 다만 논문의 품질 평가는 무작위로 샘플링한 미관측 아이템이 포함된 고정 후보군에서 이뤄졌기 때문에, 강한 검색기가 만든 실제 후보 분포에서도 같은 우위가 나오는지 확인해야 한다. 또한 낮은 동시성에서는 CUDA Graph 이득이 크고 높은 동시성에서는 MIS 이득이 커지는 식으로 최적화 효과가 워크로드에 따라 달라진다.

저자들이 밝힌 한계는 분명하다. 평가가 Amazon Books와 Video Games, 0.6B 백본에 한정되어 다른 도메인, 더 큰 모델, 사용자 선호가 빠르게 변하는 설정으로 일반화된다고 보기 어렵다. 후보군이 무작위 미관측 아이템을 포함한 고정 집합이라 강한 검색 시스템의 후보보다 구분하기 쉬울 수 있다. 아이템을 단일 벡터로 압축하면 특정 사용자에게 중요한 세부 정보가 사라질 수 있고, 아이템 내용이나 인코더 파라미터가 바뀌면 오프라인 표현을 다시 생성해야 한다. 처리량 측정은 온라인 서빙만 포함해 학습과 오프라인 인코딩 비용은 제외했으며, H100과 통제된 요청 부하에서 측정한 결과이므로 다른 하드웨어·트래픽·지연 제약에서의 성능은 추가 평가가 필요하다.