pactbench / docs /REPRODUCE.md
BBoran's picture
Publish current portable PACTBench release
f1fc3a0 verified
|
Raw
History Blame Contribute Delete
4.36 kB
# Reproducing the Published PACTBench Snapshot
Run all commands from the `pactbench` directory.
## 1. Environment
```bash
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
```
The checked-in environment was validated with Python 3.13 and CUDA 12.x. The
L1 path uses the versions pinned in `requirements.txt`.
Gemma serving uses a separate environment because the server requires a newer
Transformers release than the L1 environment:
```bash
python3 -m venv .venv-gemma
.venv-gemma/bin/python -m pip install \
"transformers==5.13.0" "torch==2.5.1" accelerate pillow
```
## 2. Data and caches
Make `data` point to the directory containing the processed layouts documented
in `docs/DATA.md`. The repository currently uses:
```text
data -> ../data
out -> ../out
```
Audit the available datasets before evaluation:
```bash
bash games/vrising/data/audit_dataset.sh
bash games/hk/data/audit_dataset.sh
bash games/isaac/data/audit_dataset.sh
```
RGB caches are rebuildable from processed videos:
```bash
python3 pact/build_rgb_frame_cache.py --workers 32
```
The canonical cache paths and their content identities are recorded in the
published registry. The full gate rejects missing, stale, or mismatched caches.
## 3. L1 evaluation
Evaluate the published checkpoints:
```bash
bash games/vrising/l1/eval_official_from_ckpt.sh
bash games/hk/l1/eval_official_from_ckpt.sh
bash games/isaac/l1/eval_official_from_ckpt.sh
```
Run the matched frozen-foundation comparisons:
```bash
bash games/vrising/l1/run_foundation_baselines.sh
bash games/hk/l1/run_foundation_baselines.sh
bash games/hk/l1/run_matched_foundation10k.sh
bash games/isaac/l1/run_foundation_baselines.sh
```
Run the accepted V Rising end-to-end DINOv2-S L1 comparison experiment:
```bash
bash games/vrising/l1/run_dinov2_end_to_end.sh
```
The wrapper preserves accepted artifacts unless `FORCE_RERUN=1` is set and
writes the canonical metrics, batch-1 latency, and comparison summary under
`results/vrising/eval_runs/L1-DINOV2-END-TO-END-MATCHED20/`.
Isaac's matched PACT checkpoint is produced by
`pipelines/l1/train/run_isaac_matched_after_weight_selection.sh` after the
validation-only distance-weight selection. Published checkpoints and metrics
can be validated without retraining them.
The image-input controls are:
```bash
bash games/vrising/l1/run_img_ablation.sh
bash games/hk/l1/run_img_ablation.sh
bash games/isaac/l1/run_img_ablation.sh
```
## 4. L2 service and evaluation
Start the pinned Gemma service with a local path or compatible model ID:
```bash
export GEMMA_MODEL_PATH=/path/to/gemma-4-E2B-it/revision-70af34e
export GEMMA_PORT=8018
.venv-gemma/bin/python pact/gemma_server.py
```
In another shell:
```bash
export GEMMA_OPENAI_BASE_URL=http://127.0.0.1:8018/v1
export GEMMA_MODEL=gemma-4-E2B-it
export GEMMA_TEMPERATURE=0
bash games/vrising/l2/run_semantic_views.sh
bash games/hk/l2/run_semantic_views.sh
bash games/isaac/l2/run_semantic_views.sh
```
Rationale correspondence and paired image-modality runs use:
```bash
bash games/vrising/l2/run_rationale_consistency.sh
bash games/hk/l2/run_rationale_consistency.sh
bash games/isaac/l2/run_rationale_consistency.sh
bash games/vrising/l2/run_image_modality_ablation.sh
bash games/hk/l2/run_image_modality_ablation.sh
bash games/isaac/l2/run_image_modality_ablation.sh
```
The Hollow Knight and Isaac fixed two-choice controls are selected through the
game wrapper environment variables documented in their game READMEs.
## 5. Verify the release
```bash
python3 registry/status.py
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -v
python3 pact/validate_pactbench.py --require_v5
```
The current published snapshot passes 46 regression tests and 7,382 full-gate
checks. To rebuild the machine-readable registry after an accepted change:
```bash
python3 registry/build_registry.py
```
The builder reruns the full gate before atomically replacing
`registry/registry.json`. Do not edit the registry by hand.
## 6. External decision-quality judge
The external LLM judge is intentionally excluded from the local deterministic
queue. Use `pipelines/l2/llm_judge/README.md` with explicit rows, beliefs, and
skill-library paths. Judge outputs remain review-isolated until accepted by the
maintainer.