Prhub

#36307 [AMD][CI] Stabilize PyTorch sampling backend test on ROCm

原始 PR 作者 bingxche 合并时间 2026-08-27 09:44 文件变更 1 提交数 2 评论 1 代码增减 +6 / -2

执行摘要

ROCm 测试服务器限制并发请求至 64

在 ROCm 7.2.4 环境中,test_pytorch_sampling_backend 会因 HSA_STATUS_ERROR_OUT_OF_RESOURCES 而中止。服务器自动解析出 max_running_requests=4029,导致 AITER 从该请求池容量分配注意力工作区,即使测试仅驱动 32 个客户端线程,仍分配约 32 GiB 内存,触发资源不足。

建议查看该 PR 以了解如何在测试中针对特定平台调整资源配置,避免类似资源不足问题。值得关注的是使用 is_hip() 条件参数化测试启动,保持 CUDA 行为不变的设计。

讨论亮点

Review 评论为空,审核人 HaiShaw 批准(APPROVED)。作者在 Issue 评论中说明了 ROCm 7.2.4 / MI300 验证已分发,并将目标测试分配至 shard 8。

实现拆解

  1. 修改测试服务器启动参数:在 test/registered/sampling/test_pytorch_sampling_backend.pysetUpClass 中,将原本固定的 other_args 列表改为变量,并根据 is_hip() 条件追加 --max-running-requests 64
  2. 引入 is_hip 导入:从 sglang.srt.utils 导入 is_hip,用于判断当前平台是否为 HIP/ROCm。
  3. 保持 CUDA 行为不变:非 HIP 平台仍使用自动推导的请求数限制,确保 CUDA/NVIDIA 测试参数与原先一致。
  4. 测试覆盖:仅修改测试文件,无源码改动,不影响采样覆盖率(MMLU 使用 32 线程,greedy 批次为 10)。
文件 模块 状态 重要度
test/registered/sampling/test_pytorch_sampling_backend.py 采样后端 modified 4.61

关键符号

setUpClass test_mmlu test_greedy

关键源码片段

test/registered/sampling/test_pytorch_sampling_backend.py test-coverage

这是本 PR 唯一修改的文件,通过条件化启动参数限制 ROCm 下的并发请求数,避免 AITER 工作区过度分配导致资源不足。

# test/registered/sampling/test_pytorch_sampling_backend.py
import unittest
from types import SimpleNamespaceimport requestsfrom sglang.srt.utils import is_hip, kill_process_tree
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.run_eval import run_eval
from sglang.test.test_utils import (
    DEFAULT_MODEL_NAME_FOR_TEST,
    DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
    DEFAULT_URL_FOR_TEST,
    CustomTestCase,
    is_in_amd_ci,
    popen_launch_server,
)register_cuda_ci(est_time=80, stage="base-b", runner_config="1-gpu-small")
register_amd_ci(est_time=66, suite="stage-b-test-1-gpu-small-amd")
​
​
class TestPyTorchSamplingBackend(CustomTestCase):
    @classmethod
    def setUpClass(cls):
        cls.model = DEFAULT_MODEL_NAME_FOR_TEST
        cls.base_url = DEFAULT_URL_FOR_TEST
        other_args = ["--sampling-backend", "pytorch", "--disable-radix-cache"]
        # 仅在 HIP/ROCm 平台限制最大并发请求数,避免 AITER 工作区过度分配导致资源不足
        if is_hip():
            other_args.extend(["--max-running-requests", "64"])
        cls.process = popen_launch_server(
            cls.model,
            cls.base_url,
            timeout=DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
            other_args=other_args,
        )

评论区精华

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

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

风险与影响

风险较低。改动仅影响测试配置,且仅在 HIP/ROCm 平台生效,CUDA/NVIDIA 测试参数不变。限制并发请求至 64 可能影响测试的负载模拟,但根据 PR 描述,实际并发峰值约 34,留有足够空间,不会限制测试覆盖。潜在风险是如果未来测试增加并发需求,可能需要调整此上限。

影响范围限于 ROCm 平台的 CI 测试稳定性,使 test_pytorch_sampling_backend 在 ROCm 7.2.4 上不再因资源不足而中止。对用户无影响,对团队而言减少了 CI 失败。

仅影响测试配置 ROCm 平台特定

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论