File size: 5,652 Bytes
79a20c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Diffusion Language Baselines

这是一个面向 Linux GPU 服务器的可复现实验框架,用于比较连续、离散、混合扩散语言模型及其少步蒸馏版本。当前 Mac/worktree 只保存代码、锁文件、脚本和文档;数据、源码仓库快照、checkpoint、Conda 环境、训练和推理都必须在服务器执行。

## 实验范围

- 多步生成:FLM、LangFlow、Duo、MDLM、CANDI、RDLM。
- 少步/单步蒸馏:FMLM、Duo+DCD、Duo+Di4C、MDLM+SDTT、MDLM+Di4C。
- LM1B 使用 `bert-base-uncased`、长度 128;OWT 使用 `gpt2`、长度 1024。
- 多步步数:多数 many-step 方法使用 `1 2 4 8 16 32 1024`;RDLM 只使用官方默认 `1000` 和本项目原保留的 `1024`;少步步数:`1 2 4 8 16 32`。
- 每个受支持配置生成 1,024 个样本,seed 固定为 42。
- 质量指标:GPT-2 Large Generative PPL、平均 unigram entropy、Self-BLEU;主延迟指标:独立 CUDA timing 的 seconds/sample。

132 个受支持 generation cell 会写入 `results/matrix/generation.tsv`。RDLM/OWT 不会伪造任务,原因写入 `results/matrix/unsupported.tsv`。RDLM 的 `1/2/4/8/16/32` 不作为主 baseline:原始方法是约 1000 步 SDE 采样,低步数只是强行截断迭代次数,已在服务器诊断中表现出非规范 token 与异常低 PPL。

## 服务器最短路径

在 Linux GPU 服务器上执行:

```bash
git clone <你的 GitHub 仓库地址> diffusion_baseline
cd diffusion_baseline
conda create -n dlb-bootstrap python=3.11 -y
conda activate dlb-bootstrap
export DLB_ROOT="$PWD"
export DLB_PYTHON="$CONDA_PREFIX/bin/python"
```

先准备一个能导入 `PyYAML`、`pydantic` 的 bootstrap Python;它只用于解析 manifest 和启动下载脚本:

```bash
"$DLB_PYTHON" -m pip install -e ".[dev,data,checkpoints]"
```

同步本仓库代码到 Linux GPU 服务器后,严格按以下顺序执行:

```bash
bash scripts/fetch_sources.sh
"$DLB_PYTHON" scripts/verify_sources.py --root "$DLB_ROOT"
"$DLB_PYTHON" scripts/fetch_data.py --root "$DLB_ROOT"
"$DLB_PYTHON" scripts/preprocess_data.py --root "$DLB_ROOT" --dataset all
"$DLB_PYTHON" scripts/verify_data.py --root "$DLB_ROOT" --dataset all
"$DLB_PYTHON" scripts/fetch_checkpoints.py --root "$DLB_ROOT" --all-public
"$DLB_PYTHON" scripts/verify_checkpoints.py --root "$DLB_ROOT"
bash envs/create_all.sh
bash envs/verify_all.sh
bash scripts/smoke_all.sh
bash scripts/run_all.sh
bash scripts/evaluate_all.sh
bash scripts/benchmark_all.sh
"$DLB_PYTHON" scripts/aggregate_results.py --root "$DLB_ROOT"
```

单机 4 卡服务器可使用本仓库的本地并行入口,默认绑定 GPU `0,1,2,3`:

```bash
export DLB_GPUS=0,1,2,3
export DLB_MAX_JOBS=4
bash scripts/smoke_4gpu.sh
bash scripts/run_4gpu.sh
bash scripts/evaluate_4gpu.sh
bash scripts/benchmark_4gpu.sh
"$DLB_PYTHON" scripts/aggregate_results.py --root "$DLB_ROOT"
```

这条路径仍要求先补齐 `reference_reproduction` checkpoint。更多说明见
[4-GPU 本地并行运行](docs/09_four_gpu_local.md)。

`smoke_all.sh` 使用独立的 `results/smoke/`,不会被正式汇总接受。若只需先验证一个方法,可运行:

```bash
bash scripts/run_one.sh --model flm --dataset lm1b --steps 1 \
  --num-samples 1 --seed 42
```

严格汇总失败时,不要删除失败目录;先查看 `results/summary/failures.csv`,修复后重跑对应阶段。需要先查看当前可用结果时:

```bash
"$DLB_PYTHON" scripts/aggregate_results.py --root "$DLB_ROOT" --partial
```

`--partial` 只用于诊断,不是论文主结果。

## 文档索引

- [源码与可用性](docs/01_sources_and_availability.md)
- [数据下载与预处理](docs/02_datasets.md)
- [Conda 环境](docs/03_environments.md)
- [Checkpoint 下载与校验](docs/04_checkpoints.md)
- [训练与蒸馏](docs/05_training.md)
- [生成、评测与 timing](docs/06_generation_and_evaluation.md)
- [Slurm](docs/07_slurm.md)
- [故障排查](docs/08_troubleshooting.md)
- [4-GPU 本地并行运行](docs/09_four_gpu_local.md)
- [实验矩阵](docs/EXPERIMENT_MATRIX.md)
- [ELF:OWT、前缀续写、WMT14/XSum 与服务器 timing 方案](docs/10_elf_server_runbook.md)(独立入口;先用公开权重建立基线)
- [ELF:GPU 0、1 自动核验并补齐质量实验](docs/15_elf_gpu01_queue.md)(最新执行入口;复用已完成配置)
- [ELF:32格质量结果归档与GPU 0、1正式timing](docs/16_elf_results_and_timing.md)(质量已完成;当前执行入口)
- [ELF:条件4步/8步短输出补评分](docs/19_elf_short_response_rescore.md)(只评分两格,保留全部样本,另存最多64-token结果)
- [ELF:OWT公开权重,对齐旧baseline评分与timing](docs/18_elf_owt_public_baseline.md)(当前执行入口;不训练,复用样本,条件2048条重评分)
- [ELF:OWT 64-token prompt、512-token response](docs/20_elf_owt_c64r512.md)(独立C64-R512实验;重新生成2048条样本)
- [ELF:LM1B/OWT四类任务严格对齐方案](docs/17_elf_matched_baseline_plan.md)(历史设计,已停止执行)
- [ELF:DS210029 数据就绪后的单张 H200 逐步执行清单](docs/11_elf_h200_next_steps.md)
- [ELF:正式条件实验空输入故障、数据诊断与恢复](docs/12_elf_condition_recovery.md)
- [ELF:条件输入 EOS 修复、validation/test 与 timing 恢复](docs/13_elf_eos_fix.md)
- [ELF:9 月 13 日结果总览与剩余质量实验(timing 暂缓)](docs/14_elf_quality_remaining.md)

所有可复现输入均在 `artifacts/` 和 `configs/` 中锁定。不要把 `data/`、`checkpoints/`、`upstreams/`、`results/` 或 Conda archive 提交到 Git。