產業脈動 2026 年 10 月 17 日

2026-10-17 — Spotify 將生成式推薦推論從 vLLM 搬到 TensorRT-LLM

primary=https://engineering.atspotify.com/2026/10/advancing-generative-recommendation-inference-our-collaboration-with-nvidia-on-tensorrt-llm/ primary=https://arxiv.org/abs/2510.07784 primary=https://github.com/NVIDIA/TensorRT-LLM/pull/15424

Spotify 將生成式推薦推論從 vLLM 搬到 TensorRT-LLM

Spotify Engineering(與 NVIDIA 合著) · 2026-10-16

Spotify 把生成式推薦的線上推論,從「vLLM 做 beam search、SGLang 做候選打分」的拼裝架構,收斂到單一的 TensorRT-LLM 引擎,並與 NVIDIA 合作補齊它缺少的功能。依文中數據,以 1.7B 的 Qwen3 變體測得,beam search 成本最多降低 54%,打分最多降低 7%。

這次合作的目的,是讓 beam search、候選打分與使用者 soft token 三種工作負載共用一套服務。Spotify 的目標是用一個大型個人化語言模型,在即時情境下服務多個產品介面。

原本的問題

Spotify 的 Podcast 推薦在 2026 年 1 月上線,採用 PLUM 路線:模型生成語意 ID(semantic ID),再對應回目錄中的項目。初期引擎是 vLLM,但它的 beam search 在核心 GPU 引擎之外執行,造成 CPU 端瓶頸,部分填充的 KV block 也要多做 GPU 重算。為了壓低成本與負載,Spotify 當時只好改用較低階的加速器(文中未點名型號)。

候選打分是另一條路。最直接的做法是「fan-out」,每個候選各發一次推論;Spotify 改用 SGLang 的候選遮罩(candidate masking)做法,一個請求就能替多個候選打分。於是同一個模型要靠兩套引擎服務,各自維運。

三種個人化方式

  • 純文字使用者歷史:把歷史轉成 prompt,prompt 很長、延遲高、GPU 用量大,只用在最近的即時串流。
  • 使用者語意 ID:擴充模型詞彙表,prompt 短且不需自訂推論程式碼;微調初步結果不錯,但尚需更多研究才能上線。
  • soft token:成效最好。把既有的使用者 embedding 投影到 LLM 的 embedding 空間,成為單一 soft token,只微調一部分權重。推論時,在第一次 forward 之前把投影後的向量插入 prompt。目前用於 Podcast 推薦,其他任務還在評估。

採用的方法:補齊 TensorRT-LLM

TensorRT-LLM 在 beam search 的硬體利用率較好,卻缺三樣東西:等同 SGLang 的 Score API、注入 soft token 的能力、以及一次回傳多條 beam。Spotify 與 NVIDIA 把這些補進上游:

功能釋出版本
beam search 回傳多條序列v1.2.0rc3
trtllm-serve 支援 out-of-tree 模型v1.2.0rc4
透過 image_embeds 傳入多模態 embeddingv1.3.0rc0
Python API 的多項目打分v1.3.0rc20

實作上有三個重點。第一,beam search 改成在 sampler 內執行,降低主機端開銷,再配合 overlap scheduling 提高 GPU 使用率;原本的 C++ sampler 換成更依賴 PyTorch、也更有彈性的設計。第二,soft token 以客製化的 Qwen3 擴充實現,借用 out-of-tree 模型支援,透過多模態請求參數接收使用者向量,投影後取代 soft token 的位置。第三,多項目打分讓運算量隨候選數線性成長,不必每個候選發一個請求,但仍需自建服務層處理 tokenization 與請求批次化。

實際效果

文中的實測對象是 1.7B 的 Qwen3 變體:beam search 成本最多降 54%,打分最多降 7%。延遲、吞吐等細部數字只出現在文中的圖表,內文沒有列出,本文也不引用。

對自行跑生成式推薦的團隊,有兩個具體檢查點。若你的 beam search 跑在引擎之外,先量 CPU 端耗時與 KV block 重算的比例;若你靠 embedding 做個人化,soft token 路線加上 out-of-tree 模型支援,可以不改引擎核心就接入。文中也提到 TensorRT-LLM 近期新增了 prefill-only embedding 服務的支援。

後續工作包含量化與針對 NVIDIA Blackwell 的最佳化,文中未給時程。

原始來源:Spotify Engineering、PLUM(arXiv 2510.07784)、TensorRT-LLM PR 15424


End of article
0
Would love your thoughts, please comment.x
()
x