夜雨聆风学习资料网

ARTICLE · 1214185

硬核 C++ 源码拆解:TensorRT-LLM 是如何用

硬核 C++ 源码拆解:TensorRT-LLM 是如何用

硬核 C++ 源码拆解:TensorRT-LLM 是如何用

推理系统常出这种怪事:GPU 显存明明还剩几十个 G,程序却直接报 OOM。首字延迟也居高不下。

根子在 KV Cache 的分配方式上。以前为了保证内存连续,只能按最长输出上限提前占坑。这导致内部碎片高达 60% 到 80%。就算改用动态分配,长短任务一交错也会产生外部碎片。最后大块连续显存还是分不出来。

现在的框架靠两招破局。第一招是分页缓存,把逻辑 Token 和物理显存地址解绑。第二招是前缀树缓存,让不同请求共享相同的提示词前缀。

这套机制在代码里拆成了三层。最上层把序列切成固定大小的逻辑块。中间层用 RadixBlockTree 做检索。它通过哈希摘要找公共前缀,命中就能零拷贝复用。最底层管物理显存池,预分配好固定页框。

内存回收靠双层原子引用计数。调度和执行各有一把锁。只有当引用数归零时,才会把叶子节点释放回空闲池。这套设计严禁驱逐中间节点,彻底榨干了显存。

原文硬核 C++ 源码拆解:TensorRT-LLM 是如何用 Radix Tree 与原子引用计数榨干 GPU 显存的?
作者提示: 个人观点,仅供参考
广东,10小时前,

相关学习资料