Download docs/14_elf_quality_remaining.md from jyliuAI/diffusion_baseline: direct link, hf CLI and curl.
- Browser
- Download file 8.32 kB
-
https://huggingface.co/jyliuAI/diffusion_baseline/resolve/main/docs/14_elf_quality_remaining.md
- Command line
-
hf download hf://jyliuAI/diffusion_baseline/docs/14_elf_quality_remaining.md
-
curl -L -o 14_elf_quality_remaining.md https://huggingface.co/jyliuAI/diffusion_baseline/resolve/main/docs/14_elf_quality_remaining.md
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,不能声称任何速度倍数。
后续顺序
- 补 OWT 的 1/2/4 步。
- 固定两项条件任务的 32/64 步,跑 test 全集;64 是标准点,32 是较少步数的对比点,不声称两者质量等价。
- 补 OWT 的 128/256/512/1024 步,完成 11 点无条件曲线。
- 补 WMT14/XSum 的 1/2/4 步 validation,完成 7 点曲线。
- 准备 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 上没有你自己仍在运行的实验,下面各块串行执行。其他人的小进程可能拖慢质量运行;正式速度测量另约独占时段。
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。
(
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 按本协议重评,并未证明与论文全部预处理完全相同。
(
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 大步数质量
(
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 格
(
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 准备,其他实验不依赖它。
(
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.分别汇总两个根目录
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,未完成目录保留并在新重试根目录处理。