用途:这是 CompileIQ 搜索流程之后的“质检关口”。搜索阶段每次评估只用 N=5-15 次试验并共享缓存,适合搜索循环但不足以作为发布依据。本技能在 tuner.start() 已返回且磁盘上存在 dump_results CSV 后使用,用于验证是否真的加速。
主要能力:从 CSV 加载搜索结果并统计评估数与代数;单目标下取最佳结果或前 K 名候选,多目标下用 pareto_front() 取帕累托前沿;若搜索空间混合用户参数与编译器参数,可分别取 user_space 与 params。随后在全新缓存、锁定 GPU 时钟、预热≥50、试验≥100 的条件下,对基线和每个候选重新测量。
判定规则:使用 Welch t 检验,计算加速比均值/中位数、p 值、Cohen's d 与基线/优化后的均值、标准差及 p5/p95。发布条件为 p<0.05、Cohen's d>0.2(最好>0.5)、且优化后均值低于基线,否则不得声称加速。需主动排查三类假阳性:幸运最小值(均值未改善)、方差变大(区间扩大超 25%)、多重比较(500 次评估中偶然变快且无法复现)。
用法:可用 scripts/welch_validate.py 命令行工具,传入 --acf、--baseline-cmd、--opt-cmd、--trials、--warmup、--score-regex、--manifest、--framework、--input-shape、--output,输出 KEPT 或 REJECTED:<reason> 并追加 validation-log.csv;也可 from welch_validate import validate_speedup 直接导入;--self-test 可自检 scipy/numpy 配置。验证通过后用 save_compiler_config("best.acf", best["params"]) 保存,并记录含时间戳、ACF 文件名与 sha256、manifest、基准命令、GPU/驱动、CTK、ptxas/nvcc、框架版本、输入形状、均值±标准差、p 值、Cohen's d、决策的复现日志。
限制与注意:pareto_front() 在单目标时会抛异常,需用 results.num_scores > 1 或 try/except 保护;当前 API 键为 score_1,旧导出可能用 score,需兼容读取;不得复用搜索时的缓存,否则验证无效;验证样本量与搜索样本量相互独立,务必达到≥100。