Commit Graph

10 Commits

Author SHA1 Message Date
OwnerSunshine530 c1d8b91fb2 feat(Phase B): FlexAttention 块对角注意力 + MoE 稠密向量化
- scaled_dot_product 分发:block_mask->FlexAttention(每用户仅自身序列内因果,
  避免对~14000长拼接序列做O(S²)稠密注意力);否则SDPA稠密(回退/对照)。
- CTRModel.build_block_mask 构造块对角因果mask;_use_flex 在SM80+自动启用。
- SMoE 稠密向量化(einsum批量算所有expert后按top-k gather),消除Python循环/同步;
  保留 _smoe_forward_loop 作数值等价对照。CONFIG.vectorize_moe 可切。
- load_model 加可选 torch.compile。
- tests/test_equiv.py:MoE稠密vs循环、Flex vs稠密SDPA 数值等价(无pytest依赖)。
- bench.py 加 --attn/--moe/--compile 便于A800上对比测速。

需 A800(SM80) 实测;CPU/V100 自动回退 SDPA。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 23:30:59 +08:00
OwnerSunshine530 0a971e67ac fix: 缓存改用文本CSV(逐行写)替代pickle,避免容器cgroup OOM静默杀进程
pickle.dump 150万记录的memo瞬间撑爆容器内存上限被杀;改为流式逐行写
保留的历史行到 cache_filtered_history.csv,读回用 load_sample_files。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 22:47:17 +08:00
OwnerSunshine530 8855a75cc3 fix: 缓存直接写+fsync,去掉会误删的写后校验
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 22:32:59 +08:00
OwnerSunshine530 e7b542a389 fix: 缓存原子写+fsync+校验,diag 先打印再缓存(防卡住看不到诊断)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 22:07:48 +08:00
OwnerSunshine530 8328327497 fix: bench 缓存改用 pickle(torch.load 在 overlay fs 报 Errno 38)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:47:21 +08:00
OwnerSunshine530 4257df795f feat: bench.py 加 --diag 诊断模式(序列长度分布 + sign-id 超界比例)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:38:50 +08:00
OwnerSunshine530 c0c23ad224 fix: bench.py 只保留测试用户数据(流式过滤+磁盘缓存),解决 OOM 与 16min 重载
不同用户被因果mask隔离,过滤非测试用户对测试样本AUC/PCOC零影响。
流式加载只持有测试用户记录,避免 CTRTestSeqDataset 构造期 OOM;
过滤结果缓存到 bench_filtered_cache.pt,后续秒级复用。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:12:15 +08:00
OwnerSunshine530 8c1d1cbaa5 feat: bench.py 加命令行参数,支持子进程方式跑(绕开内核torch限制)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 19:53:21 +08:00
OwnerSunshine530 ab9c624167 fix: bench.py 在 import torch 前补上 baseline 的 libraries 路径
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 19:46:21 +08:00
OwnerSunshine530 9d5a5a52f2 feat: infer.py 接入 CONFIG 实验开关 + 新增 bench.py 测量闭环
- infer.py: 模块级 CONFIG(fp16/keep_fp32_modules/expert_merge/
  merge_threshold/signid_mode/sync_timing),默认值=当前最优行为;
  load_model 按 CONFIG 控制半精度/FP32敏感层/expert合并;
  RepEncoder 支持 clamp/modulo 两种 sign-id 处理;
  新增 _force_fp32_io 钩子让敏感层在FP16模型里以FP32 IO 计算。
- bench.py: 设置 CONFIG → 跑推理 → cuda.synchronize 真实计时 →
  _cal_score 打印 AUC/PCOC/延迟/总分,支持配置/batch扫描。不进提交包。
- EXPERIMENTS.md: 实验记录表。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 16:48:38 +08:00