TileRT

TileRT(tile-ai/TileRT)是 tile-ai 团队做的一个“面向极低延迟(ultra-low-latency)LLM 推理”的实验性运行时项目。它的核心定位不是追求吞吐(throughput)和大 batch 的效率,而是追求 batch size 很小(甚至 1)时的极致响应速度,把“单/少量请求的 token-per-output-token latency(TPOT)”压到更低。([GitHub][1])

它想解决什么问题:

主流推理系统(面向线上服务)通常围绕 高吞吐批处理优化:尽量把更多请求凑成 batch、让算子以更大块(kernel/GEMM)去跑,从而提升 GPU 利用率。但在交互式应用(例如实时决策、长程 agent、交互式编程助手等)里,用户更在意的是“少量请求的响应时间”,这时批处理思路反而可能引入排队、同步与 pipeline 空泡。TileRT 明确把目标放在这类场景。([GitHub][1])

核心思路:tile-level runtime(“算子切成 tile 任务,再由运行时重排/重叠”)

TileRT 的关键概念是 tile-level runtime engine

此外,README 里也明确说这些编译器技术会并入 TileLang 和 TileScale 生态。([GitHub][1])

项目当前状态与“你能不能直接用”

截至 README 所述的 preview 版本,TileRT 的可用形态更像“特定硬件/特定模型/特定环境的演示型交付”,而不是通用推理框架:

模型与权重

TileRT 目前的评测与示例围绕 DeepSeek-V3.2-Exp,并要求对原始权重做预处理;他们在 Hugging Face 提供了预转换权重供直接下载使用。([GitHub][1])

性能信息怎么看

README 给了一个对比图,声称在 8×B200、batch size=1、输入/输出 1K/1K 的设置下,TileRT 在序列生成上显著快于 SGLang 与 vLLM(并注明了对比版本与 CUDA 版本)。([GitHub][1])
需要注意:这是“特定硬件 + 特定模型 + 特定配置”的初步结果,更多硬件/模型/批量大小的覆盖属于其未来计划。([GitHub][1])

你用这仓库能获得的“关键理解”

如果你是做推理系统/编译器/内核优化的,TileRT 最值得关注的是它在系统层面提出的方向:

  1. 把算子执行从“粗粒度 kernel 序列”转为“tile 任务图”(更细的调度单元)。([GitHub][1])
  2. 跨 compute / IO / 通信的极限重叠,特别适合多卡低延迟推理(batch 小、同步更敏感)。([GitHub][1])
  3. 与 TileLang/TileScale 的关系:TileRT 更像“运行时与系统侧落地”,TileLang/TileScale 更像“语言/编译器侧生产这些 tile 任务”。([GitHub][1])

这是一个非常硬核的学习计划。针对你 HPC + CUDA 的背景,我建议跳过“从文档看起”的常规路线,直接采用 “核心机制映射法”

你需要把这两个框架拆解为:Python 控制平面 (调度/显存管理) + C++/CUDA 数据平面 (算子/执行)

以下是具体的“手术刀式”学习路径,旨在让你在面试中能讲出源码级的细节。


第一阶段:vLLM —— 工业界基准 (The Standard)

vLLM 的核心壁垒在于 PagedAttention(解决了显存碎片化)和 Continuous Batching(解决了动态长度请求的调度)。

1. 核心概念与源码切入点

不要通读代码,vLLM 代码量太大了。只看这三个核心文件:

2. vLLM 的技术壁垒与创新


第二阶段:SGLang —— 面向 Agent 的颠覆者 (The Challenger)

SGLang 的核心壁垒在于 RadixAttention(KV Cache 的树形复用)和 Compiler-based Optimization(计算图编译)。

1. 核心概念与源码切入点

SGLang 是为了解决 vLLM 在多轮对话和复杂 Agent 场景下的“无记忆”痛点。

2. SGLang 的技术壁垒与最新创新


第三阶段:如何高效“跑通”源码(Action Plan)

不要光看,要 Debug。你的 HPC 背景让你很擅长 Trace。

任务 1:日志埋点分析 vLLM 调度逻辑

  1. 启动 vLLM Server。
  2. vllm/core/scheduler.py_schedule 函数里打 print,打印 running_queue, waiting_queue, swapped_queue 的长度。
  3. 写个脚本,瞬间发 100 个请求。
  4. 观察:什么时候 Waiting 变 Running?什么时候 Running 变 Swapped?这能让你彻底懂 Continuous Batching。

任务 2:可视化 SGLang 的 Radix Tree

  1. sglang/srt/managers/router/radix_cache.py 里,找个地方把 self.tree 打印出来(或者写个简单的递归打印函数)。
  2. 跑一个 Few-shot 的 Agent Demo(先问 A,再基于 A 问 B)。
  3. 观察:树是怎么长出来的?第二个请求是不是直接挂在了第一个请求的叶子节点上?

总结:面试话术构建

当你面试时,用这套逻辑来展示你的深度:

建议:先花 3 天把 vLLM 的 Scheduler 看懂,再花 3 天看 SGLang 的 RadixCache。这两个看懂了,Infra 面试的 80% 难点你就通关了。