Prhub

#25956 Avoiding the problem of printing a large number of compatibility warn…

原始 PR 作者 liuxianglong17 合并时间 2026-05-21 22:10 文件变更 2 提交数 9 评论 3 代码增减 +5 / -0

执行摘要

抑制 Transformers 兼容性警告日志

当 pipeline 执行测试用例时,Transformers 版本更新导致相关方法调用时打印大量兼容性警告日志,影响执行时间和失败用例的定位。

PR 改动简单,无需深入精读。但 review 中关于环境变量覆盖的讨论值得注意:对于测试脚本,应优先使用 os.getenv("VAR", default) 模式以保留开发者调试的可能性。

讨论亮点

Review 中 gemini-code-assist[bot] 指出初始硬编码 "error" 会覆盖系统环境变量,不利于调试;同时提醒该方案仅覆盖两个测试文件,未解决其他测试套件中的日志噪声。作者随后改为 os.getenv("TRANSFORMERS_VERBOSITY", "error") 以允许覆盖。

实现拆解

  1. python/sglang/test/ascend/vlm_utils.pysetUpClass 方法中,设置环境变量 TRANSFORMERS_VERBOSITY,值取自系统环境变量,若未设置则默认为 error
  2. python/sglang/test/ascend/gsm8k_ascend_mixin.pyenv 字典中,添加 TRANSFORMERS_VERBOSITY 键,值同样采用 os.getenv("TRANSFORMERS_VERBOSITY", "error"),允许开发者通过系统环境变量覆盖。
文件 模块 状态 重要度
python/sglang/test/ascend/vlm_utils.py VLM 测试 modified 3.43
python/sglang/test/ascend/gsm8k_ascend_mixin.py GSM8K 测试 modified 3.28

关键源码片段

python/sglang/test/ascend/vlm_utils.py test-coverage

在 VLM 测试的 setUpClass 中设置 TRANSFORMERS_VERBOSITY 环境变量,抑制 Transformers 兼容性警告日志。

# python/sglang/test/ascend/vlm_utils.py
# 在 setUpClass 末尾设置 Transformers 日志级别
@classmethod
def setUpClass(cls):
    # ... 原有设置 ...
    os.environ["OPENAI_API_KEY"] = cls.api_key
    os.environ["OPENAI_API_BASE"] = f"{cls.base_url}/v1"
    # 设置 Transformers 日志级别为 error 以屏蔽兼容性警告
    # 允许通过系统环境变量覆盖,默认值为 error
    os.environ["TRANSFORMERS_VERBOSITY"] = os.getenv(
        "TRANSFORMERS_VERBOSITY", "error"
    )
python/sglang/test/ascend/gsm8k_ascend_mixin.py test-coverage

在 GSM8K 测试的 env 字典中添加 TRANSFORMERS_VERBOSITY,采用相同策略,避免硬编码。

# python/sglang/test/ascend/gsm8k_ascend_mixin.py
# 在 env 字典中添加 Transformers 日志级别控制
class GSM8KAscendMixin(ABC):
    # ... 其他属性 ...
    env = {
        **os.environ,
        "PYTORCH_NPU_ALLOC_CONF": "expandable_segments:True",
        # ... 其他环境变量 ...
        "P2P_HCCL_BUFFSIZE": "20",
        # 设置 Transformers 日志级别为 error 以屏蔽兼容性警告
        # 使用 os.getenv 允许开发者通过系统环境变量覆盖默认值
        "TRANSFORMERS_VERBOSITY": os.getenv("TRANSFORMERS_VERBOSITY", "error"),
    }

评论区精华

TRANSFORMERS_VERBOSITY 硬编码与覆盖问题 设计

gemini-code-assist[bot] 指出初始硬编码 'error' 会覆盖系统环境变量,不利于调试;并建议考虑更集中的配置位置。

结论:作者改为使用 os.getenv 读取系统环境变量,若未设置则默认为 error,允许开发者覆盖。 · 已解决

风险与影响

风险极低:变更仅作用于测试环境的环境变量,不影响生产逻辑。但如果其他测试套件未做类似处理,仍可能存在日志噪声。需注意 gsm8k_ascend_mixin.py 中设置的位置在 **os.environ 之后,会覆盖系统环境变量(当前版本已使用 os.getenv 解决)。

影响范围限于 Ascend NPU 上的两个测试套件:VLM 测试和 GSM8K 测试。用户不会感知到任何行为变化。CI 日志将更清晰,测试执行时间可能略有缩短。其他测试套件(如 CUDA 端)未覆盖。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论