diffusion_baseline / docs /14_elf_quality_remaining.md
jyliuAI's picture
Add files using upload-large-folder tool
93cd35a verified
|
Raw History Blame Contribute Delete
8.32 kB

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 上没有你自己仍在运行的实验,下面各块串行执行。其他人的小进程可能拖慢质量运行;正式速度测量另约独占时段。

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,未完成目录保留并在新重试根目录处理。