Prhub

#45781 [Misc] Rename VLLM_TRITON_ATTN_USE_TD to VLLM_TRITON_USE_TD

原始 PR 作者 afierka-intel 合并时间 2026-07-14 18:32 文件变更 3 提交数 4 评论 3 代码增减 +26 / -7

执行摘要

重命名环境变量 VLLM_TRITON_ATTN_USE_TD 为 VLLM_TRITON_USE_TD

RFC #42545 提议将 Tensor Descriptor 功能从注意力模块扩展至整个 vLLM 的 Triton 内核,需要一个统一的开关变量。此 PR 是后续 PR(如 #42436、#47152 等)的基础,确保新变量在 envs.py 中注册,后续 PR 无需再为每个内核引入独立变量。

建议尽快合并,因为多个下游 PR 依赖此变量注册。值得关注的是弃用策略的设计,参考了此前 HOST_IP 的处理方式。

讨论亮点

无显式 review 评论,但审阅者 jikunshang 已批准。Mergify 提示过合并冲突,后已解决。

实现拆解

  1. 更新环境变量定义:在 vllm/envs.py 中,将 VLLM_TRITON_ATTN_USE_TD 替换为 VLLM_TRITON_USE_TD,并保留旧变量作为弃用别名。
  2. 添加弃用警告函数:新增 _deprecated_triton_attn_use_td() 函数,在旧变量被使用时打印警告并返回 None。
  3. 更新引用处:在 triton_attn.py 和 triton_unified_attention.py 中,将 VLLM_TRITON_ATTN_USE_TD 引用替换为新变量名。
  4. 注册旧变量:在环境变量解析字典中将旧变量映射到弃用函数,确保不会触发未知变量检查。
文件 模块 状态 重要度
vllm/envs.py 环境配置 modified 7.18
vllm/v1/attention/backends/triton_attn.py 注意力后端 modified 5.59
vllm/v1/attention/ops/triton_unified_attention.py 注意力算子 modified 2.78

关键符号

_deprecated_triton_attn_use_td

关键源码片段

vllm/envs.py core-logic

核心变更文件,完成环境变量重命名和弃用机制。

# vllm/envs.py
​
# 新增通用变量 VLLM_TRITON_USE_TD
VLLM_TRITON_USE_TD: bool | None = None
# 保留旧变量作为弃用别名(v0.25 移除)
VLLM_TRITON_ATTN_USE_TD: bool | None = None
​
# 弃用警告函数
def _deprecated_triton_attn_use_td() -> None:
    """
    当用户仍使用 VLLM_TRITON_ATTN_USE_TD 时发出警告。
    该变量将被忽略,新变量 VLLM_TRITON_USE_TD 生效。
    """
    if "VLLM_TRITON_ATTN_USE_TD" in os.environ:
        logger.warning(
            "VLLM_TRITON_ATTN_USE_TD is deprecated and will be removed in "
            "v0.25. Use VLLM_TRITON_USE_TD instead."
        )
    return None
​
# 在环境变量解析字典中注册新变量和旧变量的弃用处理
os.environ["VLLM_TRITON_USE_TD"]: lambda: {"1": True, "0": False}.get(
    os.getenv("VLLM_TRITON_USE_TD", "").strip()
),
# 旧变量注册为弃用函数,避免触发未知变量检查
"VLLM_TRITON_ATTN_USE_TD": lambda: _deprecated_triton_attn_use_td(),
vllm/v1/attention/backends/triton_attn.py core-logic

更新了注意力后端中对环境变量的引用。

# vllm/v1/attention/backends/triton_attn.py
​
# 在 __init__ 方法中,使用新变量名获取 Tensor Descriptor 开关
# VLLM_TRITON_USE_TD 是三态变量:
# - unset (None): auto-select (TD on for XPU, off elsewhere)
# - ``1``: force TD on
# - ``0``: force TD off
td_override = envs.VLLM_TRITON_USE_TD
if td_override is None:
    self.use_td = current_platform.is_xpu()
else:
    self.use_td = td_override
vllm/v1/attention/ops/triton_unified_attention.py infrastructure

更新了错误信息中的变量名引用。

# vllm/v1/attention/ops/triton_unified_attention.py
​
# 错误信息中提示用户设置新变量名
raise AssertionError(
    f"USE_TD_QO requires contiguous query heads "
    f"(q.stride(1) = {q.stride(1)} != head_size = {head_size}); "
    f"set VLLM_TRITON_USE_TD=0 or pad the query layout."
)

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

低风险。变更仅为重命名,旧变量仍受支持(带警告)。未影响任何运行时逻辑,三态语义完全保留。但用户若依赖旧变量且未切换,将收到警告,需在 v0.25 前更新。

对用户:使用者若设置了 VLLM_TRITON_ATTN_USE_TD,将看到弃用警告,功能不受影响。对系统:无运行时性能或行为变化。对团队:为后续统一 TD 开关铺平道路。

弃用兼容性

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论