File size: 8,319 Bytes
93cd35a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | # 2026-09-13:ELF 已完成结果与剩余质量实验
本页是当前执行入口,取代故障期间重复跑 64 步或检查 OWT 是否完成的安排。所有实验在服务器执行;**timing 按用户要求暂缓,本页没有 timing 命令**。无需重新下载或安装;当前 EOS 修复代码可直接使用。
**已完成 12 个正式质量配置,全部报告 valid=true**
| 步数 | OWT PPL | OWT entropy (nats) | WMT14 BLEU | XSum R1 / R2 / RL |
|---:|---:|---:|---:|---|
| 8 | 70.9471 | 5.2528 | 24.1705 | 34.3705 / 11.1567 / 26.6864 |
| 16 | 32.1761 | 5.1609 | 25.3318 | 35.3485 / 11.7578 / 27.2921 |
| 32 | 24.3517 | 5.1651 | 26.1424 | 35.8402 / 12.1714 / 27.6562 |
| 64 | 19.1247 | 5.0774 | 26.6741 | 36.0270 / 12.3522 / 27.8165 |
OWT 每格 1024 条;WMT14 每格 3000 条 validation;XSum 每格 11332 条 validation。条件任务全部 empty_fraction=0。额外的 OWT 32 步、1000 条 sanity 单独保留,不算正式第 5 个配置。数字来自用户贴出的指标清单;没有在本地接触服务器结果文件。
OWT 四格在 `results/elf-h200-gpu2`,条件八格在 `results/elf-h200-gpu2-eos-v2`。因此第三处 `summarize_elf.py` 打印八条记录是正确的,只扫描了条件根目录。不要把两个目录移动或混并来凑数量。
OWT 64 步 PPL 更低,但 entropy 比 32 步低约 0.0877 nats;不能只看 PPL 判定整体最好,而且 OWT 的 gamma 随配置变化(8/16 为 2,32 为 1.5,64 为 1),这不是只改变步数的单变量消融。XSum 32→64 步的 R1/R2/RL 差为 0.1868/0.1808/0.1603;WMT14 BLEU 差为 0.5317,略超过前文建议的 0.5 BLEU 容差,不能将它表述为已满足该容差。没有 timing,不能声称任何速度倍数。
**后续顺序**
1. 补 OWT 的 1/2/4 步。
2. 固定两项条件任务的 32/64 步,跑 test 全集;64 是标准点,32 是较少步数的对比点,不声称两者质量等价。
3. 补 OWT 的 128/256/512/1024 步,完成 11 点无条件曲线。
4. 补 WMT14/XSum 的 1/2/4 步 validation,完成 7 点曲线。
5. 准备 OWT 前缀数据并跑 8/16/32/64 步;核心通过后补其余 7 个步数。
先跑这些质量实验;后续与旧 baseline 对照时统一 GPT-2 scorer/tokenizer、EOS 和截断口径,并列出实际生成长度。ELF 的 1024 个原生 T5 tokens 不等于旧模型的 1024 个 GPT-2 tokens。前缀的 `c64_text_t5_v1` 也须与其他方法使用一致的文本边界和评分规则。
**A.每个新 shell 先设置环境**
确认同一 GPU 上没有你自己仍在运行的实验,下面各块串行执行。其他人的小进程可能拖慢质量运行;正式速度测量另约独占时段。
```bash
cd ~/diffusion_baseline
conda activate dlb-elf
export DLB_ROOT="$PWD"
export ELF_PYTHON="$CONDA_PREFIX/bin/python"
export PYTHONDONTWRITEBYTECODE=1
export ELF_PHYSICAL_GPU=2
export ELF_GPU_UUID="$(nvidia-smi -i "$ELF_PHYSICAL_GPU" --query-gpu=uuid --format=csv,noheader)"
export CUDA_VISIBLE_DEVICES="$ELF_GPU_UUID"
export ELF_RESULTS="$DLB_ROOT/results/elf-h200-gpu2-eos-v2"
export ELF_BATCH_SIZE=8 ELF_EVAL_BATCH_SIZE=8 ELF_SEED=42 ELF_COMPILE=0
unset ELF_STEPS ELF_COUNT ELF_SPLIT ELF_TIMING_PROMPT
mkdir -p "$ELF_RESULTS/logs"
set -o pipefail
runlog() {
local label="$1"
shift
"$@" 2>&1 | tee "$ELF_RESULTS/logs/$label.log"
}
nvidia-smi -i "$ELF_GPU_UUID"
```
**B.补 OWT 少步数质量**
子 shell 临时切回原 OWT 根目录,结束后恢复条件根目录。每步 1024 条,batch=8,seed=42。
```bash
(
set -e
export ELF_RESULTS="$DLB_ROOT/results/elf-h200-gpu2"
mkdir -p "$ELF_RESULTS/logs"
for steps in 1 2 4; do
runlog "owt_s${steps}_generate" env ELF_COUNT=1024 ELF_STEPS="$steps" \
bash scripts/run_elf_suite.sh generate owt
runlog "owt_s${steps}_evaluate" env ELF_STEPS="$steps" \
bash scripts/run_elf_suite.sh evaluate owt
done
)
```
低步数可能产生极短或空输出。若 evaluate 保存 `valid=false` 并提示少于两个 GPT-2 tokens,保留为该配置的退化结果,不删样本来计算更好 PPL。本块会停止;查看日志后只指定剩余步数继续,不重复已生成的格子。若是其他异常(文件损坏、OOM 等),先修复。OWT 的 1/2/4 及大于 64 步配置是项目扩展,不是作者已报告的复现点。
**C.条件任务 test:32/64 步,共 4 格**
本次在查看 test 前固定 32/64 步;不根据 test 分数反复选参数。WMT14 每格 3003 条,XSum 每格 11334 条。使用修复后的 EOS 规则、原文完整 reference;这仍是公开 test 按本协议重评,并未证明与论文全部预处理完全相同。
```bash
(
set -e
for task in wmt14 xsum; do
for steps in 32 64; do
runlog "${task}_test_s${steps}_generate" \
env ELF_COUNT=0 ELF_STEPS="$steps" ELF_SPLIT=test \
bash scripts/run_elf_suite.sh generate "$task"
runlog "${task}_test_s${steps}_evaluate" \
env ELF_STEPS="$steps" ELF_SPLIT=test \
bash scripts/run_elf_suite.sh evaluate "$task"
done
done
)
```
**D.补 OWT 大步数质量**
```bash
(
set -e
export ELF_RESULTS="$DLB_ROOT/results/elf-h200-gpu2"
mkdir -p "$ELF_RESULTS/logs"
for steps in 128 256 512 1024; do
runlog "owt_s${steps}_generate" env ELF_COUNT=1024 ELF_STEPS="$steps" \
bash scripts/run_elf_suite.sh generate owt
runlog "owt_s${steps}_evaluate" env ELF_STEPS="$steps" \
bash scripts/run_elf_suite.sh evaluate owt
done
)
```
这些配置明显更耗时。若预算有限,可以先跑 128/256,把 512/1024 留待补齐并明确标记缺失;不要用已有 64 步结果填充它们。完成后 OWT 正式曲线为 11 个步数,每个配置独立记录有效性。
**E.条件任务补 1/2/4 步 validation,共 6 格**
```bash
(
set -e
for task in wmt14 xsum; do
for steps in 1 2 4; do
runlog "${task}_val_s${steps}_generate" \
env ELF_COUNT=0 ELF_STEPS="$steps" ELF_SPLIT=validation \
bash scripts/run_elf_suite.sh generate "$task"
runlog "${task}_val_s${steps}_evaluate" \
env ELF_STEPS="$steps" ELF_SPLIT=validation \
bash scripts/run_elf_suite.sh evaluate "$task"
done
done
)
```
**F.OWT 前缀续写:独立准备和执行**
先在 bootstrap 环境检查旧 benchmark prompts,只有不存在时才构建。已有 OWT processed 数据是构建前提;如果缺少则按文档 02 准备,其他实验不依赖它。
```bash
(
set -e
conda activate dlb-bootstrap
if [ ! -f "$DLB_ROOT/data/conditional/owt-c64/prompts.jsonl" ]; then
python scripts/build_conditional_prompts.py --root "$DLB_ROOT" --dataset owt
fi
python scripts/verify_conditional_prompts.py --root "$DLB_ROOT" --dataset owt
conda activate dlb-elf
export ELF_PYTHON="$CONDA_PREFIX/bin/python"
python scripts/prepare_elf.py prefix
runlog prefix_smoke env ELF_STEPS="1 32" bash scripts/run_elf_suite.sh smoke owt-prefix
for steps in 8 16 32 64; do
runlog "prefix_s${steps}_generate" env ELF_COUNT=1024 ELF_STEPS="$steps" \
bash scripts/run_elf_suite.sh generate owt-prefix
runlog "prefix_s${steps}_evaluate" env ELF_STEPS="$steps" \
bash scripts/run_elf_suite.sh evaluate owt-prefix
done
)
```
每个正式格子为 1024 个主续写,加前 256 prompts 的 4 个额外续写,共 2048 条;主指标 CPPL、entropy、grouped Self-BLEU。核心无异常后,使用同一 generate/evaluate 循环,将 steps 改为 `1 2 4 128 256 512 1024` 补完整前缀曲线。首次只跑核心,若出现无效极短输出按 B 的规则保留。
**G.分别汇总两个根目录**
```bash
python scripts/summarize_elf.py \
--results "$DLB_ROOT/results/elf-h200-gpu2" \
--output "$DLB_ROOT/results/elf-h200-gpu2/summary.csv"
python scripts/summarize_elf.py \
--results "$DLB_ROOT/results/elf-h200-gpu2-eos-v2" \
--output "$DLB_ROOT/results/elf-h200-gpu2-eos-v2/summary.csv"
```
旧根目录还可能含 EOS 修复前的 WMT14 低分结果和 smoke;论文质量表应筛选其 OWT 正式行。条件任务仅用 EOS 修复根目录,并区分 validation/test;两份 CSV 都是清单,不是自动合并好的论文表。成功格子不要重跑;已生成未评测只 evaluate,未完成目录保留并在新重试根目录处理。
|