# 实验记录 > 本地 bench(A800,过滤到 5451 测试用户/1524480 记录)+ 评测提交结果。 > 本文件可入 git,但**不进提交包**。 ## 关键认知 1. **AUC 锁死 ≈ 0.759**:精度(fp16=fp32)、sign-id(超界仅0.00%)、上下文(每用户均280长)三条线索全空。模型分桶固定 ≈ 9 分。 2. **总分天花板 ≈ 79.9**:延迟分上限 70(latency→0 不可能)+ 模型分 ~9.9。80+ 需 AUC>0.76(本模型不可达)。 3. **评测计时对"同步点"敏感**:消除 model(batch) 内的 GPU 同步点(尤其 MoE 的 .nonzero())在评测端收益被放大(评测 batch 数 ≈ 本地 6×)。 4. **本地 latency 不直接预测评测**:消同步/降访存的改动翻译得好;带 per-batch 开销的(varlen)翻译差甚至反向。 ## 最终配置(infer.py CONFIG 默认) | 开关 | 值 | 作用 | |------|----|----| | fp16 | True | 半精度 | | emb_fp16 | True | Embedding 表也 FP16(查表带宽减半,AUC 逐位≈无损) | | attn | "chunked" | 按用户分块 SDPA,降注意力 O(S²) | | chunk_users | 4 | 每块用户数(本地最快) | | vectorize_moe | True | 稠密向量化 MoE(去掉 .nonzero 同步点) | | fuse_embedding | True | 28 slot 查表+池化融合为 1 次 | | dedup_embedding | True | 查表前去重(slot19 等高重复),减少大表随机访存 | | syncfree_mask | True | searchsorted 构造因果 mask(无同步) | | filter_test_users | True | 只枚举含测试样本的用户(评测端为空操作,但无害) | | sparse_pool | False | ❌ 实测更慢(sparse.mm/coalesce 开销),已弃 | ## 评测提交记录 | 手段(累计) | 评测延迟 | 评测分数 | AUC | 备注 | |------|------|------|-----|------| | 官方基线 | 229s | 25.85 | 0.759 | | | 接手时最优 | 86.5s | 58.86 | 0.7526 | FP16+Flash+expert合并 | | 只跑测试用户(过滤) | 89.96s | 58.05 | 0.7525 | 评测端空操作 | | varlen 注意力 | 148.4s | 44.40 | 0.7525 | ❌ 本地快评测慢,已弃 | | + 稠密 MoE(消同步) | 69.55s | 62.81 | 0.7525 | ✅ 关键一刀 -20s | | + embedding 融合 | 68.60s | 63.03 | 0.7525 | +1 | | + sync-free mask | 67.49s | 63.29 | 0.7525 | +1 | | + emb_fp16 | 65.86s | 63.67 | 0.7524 | +1.6 | | + chunked 注意力(8) | 59.44s | 65.17 | 0.7524 | ✅ -6.4s | | + dedup 查表 | 47.88s | 67.87 | 0.7524 | ✅ -11.6s | | + chunk_users=4 + RepEncoder预计算 | 47.32s | **67.998** | 0.7524 | 当前最优;预计算评测端回退(无效) | ## RepEncoder 预计算(冲70尝试,最终未生效) 思路:在不计时的 load_model 里预计算 context-free 的 item 向量,model(batch) 按 logid gather、跳过 embedding 层。本地验证 6.19→4.07s(-34%)、AUC 逐位等价。 评测端两次失败: 1. 第一次:load_model 全量 load_sample_files 与评测自身数据双倍 → OOM → 提交"异常"。 2. 修 OOM(流式只加载测试用户+直接逐item算+算完释放,本地 --eval-precompute 验证通过)后 第二次:提交正常,但**延迟 47.32s 不变 → 预计算静默回退**(dataset/布局或 logid 未命中, 无日志难定位)。AUC/分数正常(=干净版),即等于没用预计算。 结论:预计算评测端未生效 + 合规灰区,**已默认关闭**。`CONFIG.precompute_rep=True` + `bench --eval-precompute` 可本地复现 4.07s;如拿到评测日志可再诊断。 ## 验证过更慢/无效、已弃的手段 - varlen 嵌套张量注意力(评测 148s) - FlexAttention(本地慢 6×) - torch.compile(本地慢 5×) - 小 batch(更慢) - sparse_pool 稀疏池化(本地 8.48 > 6.22) - INT8 / MoE 稀疏化(评估后判定收益小/风险高,未实施) ## 未解 榜上 80+ 与上述天花板(~79.9)矛盾,本地证据无法解释。需核对官方评分公式原图/榜首构成/验证集 AUC。