biptv3 / code /min_repro_server_pack /MIN_REPRO_README.md
YYYYYYUUU's picture
Add core reproduction code (binarization layers, PTv3, superpoint ops, min-repro pack)
7b95dc2 verified
|
Raw
History Blame Contribute Delete
4.58 kB
# BiPTV3 Minimal Reproduction
This package is the lightest paper-relevant experiment bundle for the server.
- Server path: `/mnt/t2-6tb/Linpeikai/BiPTV3_CVPR`
- Default env: `Aoduo`
- Default GPU: `GPU 1`
- Goal: get FBPT vs BiPT comparison results without consuming large training resources
- Principle: reuse existing checkpoints first, evaluate only what is necessary
## 1. Smallest useful experiment
The minimum path is:
1. Do not retrain from scratch
2. Reuse existing checkpoints already on the server
3. Run one single-scene sanity check first
4. Run `Area_5` only if the single-scene outputs are normal
This gives:
- Fastest sanity check: `Area_5/office_9` only
- Smallest quantitative check: `Area_5` only
- No need to retrain `FBPT`, `BiPT`, or `FP32`
## 2. Existing checkpoints to reuse
Root:
`/mnt/t2-6tb/Linpeikai/BiPTV3_CVPR/code/pointcept_framework`
Recommended four-way comparison:
- FP32 teacher
- config: `exp/default/config.py`
- weight: `exp/default/model/model_last.pth`
- FBPT reproduced baseline
- config: `exp/s3dis/rebuttal_fbpt_baseline/config.py`
- weight: `exp/s3dis/rebuttal_fbpt_baseline/model/model_last.pth`
- BiPT W1A1
- config: `exp/bi_ptv3_qat_long_run/config.py`
- weight: `exp/bi_ptv3_qat_long_run/model/model_best.pth`
- BiPT W2A8
- config: `exp/s3dis/qat0920_w2a8_from_fp32/config.py`
- weight: `exp/s3dis/qat0920_w2a8_from_fp32/model/model_best.pth`
## 3. Recommended execution order
### Stage A: single-scene quick check
Use `tools/test_wc1.py`.
Why:
- lowest GPU cost
- fastest way to verify model loading
- easiest way to inspect FBPT failure mode vs BiPT outputs
- enough for the first pass
Important:
- the current server data layout does not contain `WC_1`
- the working light scene is `Area_5/office_9`
- run `patch_min_repro_server.sh` once before the first test
Run:
```bash
bash patch_min_repro_server.sh
bash run_wc1_quick.sh
```
Expected output:
`code/pointcept_framework/exp/min_repro_wc1/*`
### Stage B: Area_5 quantitative evaluation
Only run this after Stage A works.
Run:
```bash
bash run_area5_eval.sh
```
Expected output:
`code/pointcept_framework/exp/min_repro_area5/*`
This is the smallest quantitative experiment that is still directly useful for the paper.
## 4. Environment
Default choice:
- `conda activate Aoduo`
- use `GPU 1`
Quick verification:
```bash
conda activate Aoduo
python -c "import torch; print(torch.__version__)"
python -c "import torch_scatter; print('torch_scatter ok')"
```
If `Aoduo` is broken, use the fallback env:
- `pointcept-torch2.5.0-cu12.4`
Repair command for the fallback env:
```bash
bash repair_env.sh
```
If `Aoduo` reports a `torch_scatter` ABI error, fix it with:
```bash
conda activate Aoduo
python -m pip install --no-cache-dir --force-reinstall torch-scatter -f https://data.pyg.org/whl/torch-2.6.0+cu124.html
```
If more PyG ABI errors appear, align the whole stack with the matching wheels:
```bash
python -m pip install --no-cache-dir --no-deps --force-reinstall \
https://data.pyg.org/whl/torch-2.6.0%2Bcu124/pyg_lib-0.5.0%2Bpt26cu124-cp310-cp310-linux_x86_64.whl \
https://data.pyg.org/whl/torch-2.6.0%2Bcu124/torch_cluster-1.6.3%2Bpt26cu124-cp310-cp310-linux_x86_64.whl \
https://data.pyg.org/whl/torch-2.6.0%2Bcu124/torch_sparse-0.6.18%2Bpt26cu124-cp310-cp310-linux_x86_64.whl \
https://data.pyg.org/whl/torch-2.6.0%2Bcu124/torch_spline_conv-1.2.2%2Bpt26cu124-cp310-cp310-linux_x86_64.whl
```
## 5. If new data is still needed
If existing checkpoints are insufficient, use the smallest extra experiment:
1. train only one baseline
2. train only on S3DIS
3. run only 3 to 5 epochs
4. validate on `Area_5`
Recommended order:
1. FBPT short smoke run
2. BiPT W1A1 short smoke run
3. only then consider W2A8
Do not start from the full rebuttal training script.
## 6. Practical conclusion
For minimum cost and still-usable output:
- best choice: reuse existing checkpoints
- fastest script: `run_wc1_quick.sh`
- smallest paper-grade quantitative script: `run_area5_eval.sh`
- training is the fallback, not the first move
- verified quick result on server:
- `FBPT repr.` on `Area_5/office_9`: `mIoU 0.0244`, `mAcc 0.0770`, `allAcc 0.2826`
- `BiPT W1A1` on `Area_5/office_9`: `mIoU 0.1972`, `mAcc 0.2987`, `allAcc 0.5459`
- `BiPT W2A8` on `Area_5/office_9`: `mIoU 0.0137`, `mAcc 0.0769`, `allAcc 0.1775`
- `FP32` quick path is not directly usable with the current `test_wc1.py` monkeypatch because that script force-converts the model through the binary path and produces checkpoint shape mismatch