执行摘要
将 MI35x 上两个模型测试迁移为 nightly 测试
原测试注册在 PR CI 中,但运行时间长、资源占用大,不适合每次 PR 都执行。通过迁移到 nightly,可减轻 PR CI 负担,同时保持对关键模型精度和 HiCache 功能的夜间回归覆盖。
建议关注 nightly 运行结果,确保测试稳定通过;可在后续将类似资源密集型测试逐步迁移至 nightly。
无关键讨论。仅有 Gemini Code Assist bot 自动评论,汇总了变更内容,未提出具体问题或争议。
原测试注册在 PR CI 中,但运行时间长、资源占用大,不适合每次 PR 都执行。通过迁移到 nightly,可减轻 PR CI 负担,同时保持对关键模型精度和 HiCache 功能的夜间回归覆盖。
建议关注 nightly 运行结果,确保测试稳定通过;可在后续将类似资源密集型测试逐步迁移至 nightly。
无关键讨论。仅有 Gemini Code Assist bot 自动评论,汇总了变更内容,未提出具体问题或争议。
test_glm51_mxfp4_tp2_gsm8k_mi35x.py):将注册 suite 从 stage-c-test-large-8-gpu-amd-mi35x 改为 nightly-amd-2-gpu-mi35x-glm51-mxfp4,添加 nightly=True;移除 _get_model_path() 和本地路径硬编码,直接使用模型 ID;改用 CustomTestCase;用 run_eval 替代旧的 run_gsm8k_eval;GSM8K 参数调整为全量问题 (num_examples=None) 和高并发 (num_threads=512)。test_deepseek_r1_hicache_mi35x.py):类似迁移,suite 改为 nightly-amd-8-gpu-mi35x-deepseek-r1-hicache;GSM8K 问题数从 200 扩至全量;服务器启动超时从 1500s 增至 3600s;移除手动设置的 HF_HOME 环境变量。nightly-test-amd-rocm720.yml):在作业列表中添加 nightly-2-gpu-mi35x-glm51-mxfp4-rocm720 和 nightly-8-gpu-mi35x-deepseek-r1-hicache-rocm720,并定义对应 job 配置,包括 runner 选择、docker 启动、依赖安装和执行命令。nightly-test-amd.yml):相同改动,添加 nightly-2-gpu-mi35x-glm51-mxfp4 和 nightly-8-gpu-mi35x-deepseek-r1-hicache 作业。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
test/registered/amd/accuracy/mi35x/test_glm51_mxfp4_tp2_gsm8k_mi35x.py |
测试 | modified | 7.19 |
test/registered/amd/test_deepseek_r1_hicache_mi35x.py |
测试 | modified | 5.74 |
.github/workflows/nightly-test-amd.yml |
部署脚本 | modified | 5.09 |
.github/workflows/nightly-test-amd-rocm720.yml |
部署脚本 | modified | 4.69 |
test/registered/amd/test_deepseek_r1_hicache_mi35x.py
test-coverage
将 DeepSeek-R1 HiCache 测试迁移为 nightly,扩大了 GSM8K 问题规模并调整超时参数。
"""MI35x DeepSeek-R1-0528 FP8 HiCache Nightly Test (8-GPU)
Regression guard for HiCache with full GSM8K evaluation.
Registry: nightly-amd-8-gpu-mi35x-deepseek-r1-hicache suite
"""
import os, shutil, tempfile, unittest
from types import SimpleNamespace
from sglang.srt.utils import kill_process_tree
from sglang.test.ci.ci_register import register_amd_ci
from sglang.test.run_eval import run_eval
from sglang.test.test_utils import (
DEFAULT_URL_FOR_TEST,
CustomTestCase,
is_in_ci,
popen_launch_server,
write_github_step_summary,
)
# 注册 nightly,超时 5400 秒(1.5 小时)
register_amd_ci(
est_time=5400,
suite="nightly-amd-8-gpu-mi35x-deepseek-r1-hicache",
nightly=True,
)
DEEPSEEK_R1_MODEL_PATH = "deepseek-ai/DeepSeek-R1-0528"
SERVER_LAUNCH_TIMEOUT = 3600
GSM8K_ACCURACY_THRESHOLD = 0.93
GSM8K_NUM_EXAMPLES = None # 全量 1319 题
GSM8K_NUM_THREADS = 64
class TestDeepSeekR1HiCacheMI35x(CustomTestCase):
@classmethod
def setUpClass(cls):
cls.model = DEEPSEEK_R1_MODEL_PATH
cls.base_url = DEFAULT_URL_FOR_TEST
cls.l3_storage_dir = tempfile.mkdtemp(prefix="dsr1-hicache-l3-")
env = {
**os.environ,
"SGLANG_USE_AITER": "1",
"ROCM_QUICK_REDUCE_QUANTIZATION": "NONE",
"SGLANG_AITER_FP8_PREFILL_ATTN": "0",
"SAFETENSORS_FAST_GPU": "1",
"SGLANG_HICACHE_FILE_BACKEND_STORAGE_DIR": cls.l3_storage_dir,
}
other_args = [
"--tp", "8",
# ... (HiCache specific arguments)
"--enable-hierarchical-cache",
"--hicache-storage-backend", "file",
]
cls.process = popen_launch_server(
cls.model, cls.base_url,
timeout=SERVER_LAUNCH_TIMEOUT,
env=env,
other_args=other_args,
)
@classmethod
def tearDownClass(cls):
if cls.process:
kill_process_tree(cls.process.pid)
if cls.l3_storage_dir:
shutil.rmtree(cls.l3_storage_dir, ignore_errors=True)
def test_gsm8k(self):
args = SimpleNamespace(
base_url=self.base_url,
model=self.model,
eval_name="gsm8k",
api="completion",
num_examples=GSM8K_NUM_EXAMPLES,
num_threads=GSM8K_NUM_THREADS,
max_tokens=512,
temperature=0.0,
)
metrics = run_eval(args)
score = metrics["score"]
if is_in_ci():
write_github_step_summary(
"### DeepSeek-R1-0528 FP8 HiCache GSM8K (MI35x)\n\n"
f"| Model | Examples | Max Parallel | Score | Threshold | Latency |\n"
f"| {self.model} | full | {GSM8K_NUM_THREADS} | {score:.3f} | {GSM8K_ACCURACY_THRESHOLD:.2f} | {metrics.get('latency', 0):.1f}s |\n"
)
self.assertGreaterEqual(score, GSM8K_ACCURACY_THRESHOLD)
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
HF_HOME 环境变量,若网络或缓存异常可能导致失败。当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论