acdir-llada-math500 / README.md
NYCU-MLLab's picture
Upload folder using huggingface_hub
4a28d4d verified
|
Raw
History Blame Contribute Delete
7.06 kB
---
license: apache-2.0
base_model: GSAI-ML/LLaDA-8B-Instruct
tags:
- llada
- discrete-diffusion
- acdir
- math
- math500
- critic-guided-decoding
---
# ACDiR-LLaDA-Math500
This repository reproduces the reported ACDiR result on the legacy
HuggingFaceH4 MATH-500 evaluation protocol. It combines:
- the frozen `GSAI-ML/LLaDA-8B-Instruct` actor;
- `weights/critic-ckpt-000040.pt`;
- count-set critic-guided remasking; and
- the vendored exact LLaDA runner derived from LMDeploy.
This is not a standalone Transformers checkpoint and cannot be loaded with
`AutoModel.from_pretrained()` as a complete actor-plus-critic model.
## Reported result
| Dataset | Examples | Guided | Actor-only | Delta |
| --- | ---: | ---: | ---: | ---: |
| HuggingFaceH4/MATH-500 test | 500 | **44.00% (220/500)** | 39.60% (198/500) | +4.40 pp |
The included test set is from
`HuggingFaceH4/MATH-500` revision
`6e4ed1a2a79af7d8630a6b768ec859cb5af4d3be`. It is not the reordered/
reprocessed `ankner/math-500` split used by some JustGRPO evaluations, so the
scores must not be compared as though they used identical examples and
grading.
The 44.00% result intentionally retains the original ACDiR legacy answer
extractor and grader. Replacing the grader changes the evaluation protocol and
is outside exact reproduction of this result.
Important decoding settings are stored in `configs/math500_44.json`:
```text
steps=256 gen_length=512
block_length=32 block_steps=16
batch_size=1 temperature=0
remask_method=count_set remask_temperature=0.4
lookback_blocks=1 remask_min_age_current=2
remask_max_age_lookback=6
reforward_after_remask=True
deterministic_joint_argmax=False
force_remask_window=0
```
## Hardware and software
The release path was validated with:
- Linux and Python 3.11;
- PyTorch 2.5.1 with CUDA 12.1 wheels;
- a CUDA 12.6 toolkit for building FlashAttention 2.8.3;
- BF16 inference; and
- one NVIDIA H200 GPU for the strict reference run.
The full actor is approximately 16 GB in BF16 before runtime buffers. GPUs with
less memory have not been validated for exact reproduction. The reported path
uses LMDeploy full-window inference and varlen FlashAttention. Disabling varlen
flash or changing the backend is useful for portability testing but is not the
strict 44.00% configuration.
## Install
Clone this Hugging Face model repository, enter its root directory, and create
a clean Python 3.11 environment:
```bash
cd acdir-llada-math500
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip setuptools wheel ninja packaging
python -m pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu121
python -m pip install -r requirements.txt
python -m pip install flash-attn==2.8.3 --no-build-isolation
```
If a different PyTorch CUDA wheel is required by the host driver, install that
wheel first and treat the run as a portability reproduction unless the final
outputs match the reference counts.
The evaluator automatically downloads the pinned base-model revision
`08b83a6feb34df1a6011b80c3c00c7563e963b07` into
`.cache/huggingface/hub`. Pass a local model directory with `--base_model` to
avoid the download.
## Reproduce 44.00%
Run on exactly one visible GPU; batch size 1 is part of the reported protocol:
```bash
export LLADA_EXACT_BACKEND=lmdeploy
export LLADA_LMDEPLOY_FAST_MODE=full_window
export LLADA_LMDEPLOY_CUDAGRAPH=0
export LLADA_LMDEPLOY_VARLEN_FLASH=1
python eval_math500.py \
--batch_size 1 \
--nproc_per_node 1 \
--result_dir outputs/math500_44
```
To use an existing actor copy:
```bash
python eval_math500.py \
--base_model /absolute/path/to/LLaDA-8B-Instruct \
--batch_size 1 \
--nproc_per_node 1 \
--result_dir outputs/math500_44
```
The expected final summary is:
```text
guided 44.00% (220/500)
base 39.60% (198/500) delta=+4.40%
```
Every run writes:
```text
outputs/math500_44/eval_command.txt
outputs/math500_44/predictions/predictions_rank000.json
```
The prediction JSON contains the prompt, full guided sequence, full baseline
sequence, gold solution, extracted answers, correctness flags, level, and
per-sample ACDiR remask statistics. With multiple ranks, one file is produced
per rank; the reference 44.00% run uses one rank.
## Slurm
Portable Slurm helpers are included. Account, partition, environment-module,
and CUDA-module names are cluster-specific and should be supplied at submit
time. For example:
```bash
sbatch -A YOUR_ACCOUNT -p YOUR_GPU_PARTITION \
--export=ALL,CONDA_MODULE=miniconda3,CUDA_MODULE=cuda/12.6,RUN_FLASH_ATTN_BUILD=1 \
scripts/batch/setup_env.batch
sbatch -A YOUR_ACCOUNT -p YOUR_GPU_PARTITION \
--export=ALL,CONDA_MODULE=miniconda3,CUDA_MODULE=cuda/12.6,LLADA_LMDEPLOY_VARLEN_FLASH=1 \
scripts/batch/eval_math500.batch
```
If the cluster does not use environment modules, activate or expose `conda`,
`nvcc`, and the CUDA libraries before submission and omit the module variables.
## Regression checks
The CPU suite checks the release policy and rollout invariants without loading
the 8B actor:
```bash
CUDA_VISIBLE_DEVICES="" python -m unittest discover -s tests -v
```
These tests do not replace the full 500-example GPU reproduction.
## Serve locally
The same pinned actor download and critic can be exposed through a small
OpenAI-compatible endpoint:
```bash
python serve_openai.py \
--host 127.0.0.1 \
--port 23333
```
The endpoint is `/v1/chat/completions`.
## Artifact integrity
| Artifact | SHA256 |
| --- | --- |
| `weights/critic-ckpt-000040.pt` | `b8f86493bfd629968e18ed362f47614affc869af3ab01827255e4025ba26e68c` |
| `datasets/MATH500/test/data-00000-of-00001.arrow` | `ff2663846092b986df3026f53904030cbaf8e061c9f978d319a7bd86b3a04ea4` |
| `configs/math500_44.json` | `b430248e1199d8d0d27dbf73f277fe3d436a4a2dd4866e41615bea410c1828c9` |
`scripts/upload_to_hf.py` excludes local caches, generated outputs, temporary
files, and Slurm logs while retaining the portable batch scripts.
## License and upstream components
The ACDiR release code and critic are provided under the Apache License 2.0;
see `LICENSE`. Vendored LMDeploy code retains its Apache-2.0 license in
`lmdeploy/LICENSE`. The LLaDA base model is not redistributed here and remains
under its upstream MIT license. The included evaluation records originate from
HuggingFaceH4/MATH-500 and remain subject to the upstream dataset/source terms.
## Citation
Please cite the ACDiR release and LLaDA when using this checkpoint:
```bibtex
@misc{acdir2026,
title = {ACDiR-LLaDA-Math500},
author = {{ACDiR Project}},
year = {2026},
howpublished = {Hugging Face model release}
}
@article{nie2025large,
title = {Large Language Diffusion Models},
author = {Nie, Shen and Zhu, Fengqi and You, Zebin and Zhang, Xiaolu and
Ou, Jingyang and Hu, Jun and Zhou, Jun and Lin, Yankai and
Wen, Ji-Rong and Li, Chongxuan},
journal = {arXiv preprint arXiv:2502.09992},
year = {2025}
}
```