Files
open-1b-verify/docs/audit-open1b-init.md

133 lines
5.2 KiB
Markdown

# Audit: open-1b init unit on CPU
- Date: 2026-09-28
- Host: brainstation, Linux x86-64, kernel 7.3.0, no NVIDIA GPU
- Harness: `gensyn-ai/open-transformers` at `d7b7b674`
- Workdir: `audit/`
- Verdict: match on the `1b_repop_v2` init unit. No training interval was replayed.
## Kit
The audit app publishes the mapping at `https://open1b.gensyn.ai/manifest.json`:
```
run: 1b_repop_v2
initStateHash 16554a1119745f1b9bf4ac60b03226e5e9ca1247a2bd56169cd4c822fd457aed
audit: kit pt-f91110a0d0c8_rp-c9ca6e71e673
```
All four published kits declare the same init commitment, so the choice of kit
does not change the hash under test.
- pretrain commit: `f91110a0d0c84fa3bad808f365567d9c655d10b2`
- repop commit: `c9ca6e71e673660afc6c87de2592fa6f62c87b15`
- torch: `2.10.0`
## Toolchain
| Component | Version |
| --- | --- |
| Python | 3.11.16, via uv. System Python untouched. |
| uv | 0.12.17 |
| PyTorch | 2.10.0+cpu |
| repop | 0.1.5, build commit `c9ca6e71e673`, matches kit.json |
| pretrain | 0.1.0, kit wheel |
| Go | 1.27, for all glue and checks |
The runbook targets Linux with an NVIDIA GPU and points at the CUDA 12.9 index.
This host has no GPU. The README names CPU as the reference device, so the pinned
torch version was installed from the CPU index. Init is device-independent by
construction, so the result is unaffected.
## Commands
```bash
git clone --depth 1 https://github.com/gensyn-ai/open-transformers
go run ./tools/kitinspect kits/*/
go run ./tools/kitfetch kits/pt-f91110a0d0c8_rp-c9ca6e71e673 kit-pt-f91110a0d0c8_rp-c9ca6e71e673
uv venv --python 3.11 .venv
uv pip install --python .venv --index-url https://download.pytorch.org/whl/cpu "torch==2.10.0"
uv pip install --python .venv \
./kit-pt-f91110a0d0c8_rp-c9ca6e71e673/repop-0.1.5-cp311-cp311-linux_x86_64.whl \
./kit-pt-f91110a0d0c8_rp-c9ca6e71e673/pretrain-0.1.0-cp311-cp311-linux_x86_64.whl
.venv/bin/pretrain-audit-replay --from-init --until-step 0 \
--config-name 1b_repop_v2 --device cpu \
--expect-hash 16554a1119745f1b9bf4ac60b03226e5e9ca1247a2bd56169cd4c822fd457aed
```
## Checksums
All five kit files were hashed before install. The Go fetcher accepts a file only
on a full match and deletes rejected bytes. Expected values come from kit.json.
| File | SHA-256 | Result |
| --- | --- | --- |
| `pretrain-0.1.0-cp311-cp311-linux_x86_64.whl` | `ecc49d1c05c0e2876a59d98d877795769d6e9620eb66e4b4c866b16f695fb174` | match |
| `pretrain-0.1.0-cp311-cp311-macosx_14_0_arm64.whl` | `fbd23a54aa0bf87775e86493d67f759d1c1f4cc1dcd63ad991fba59dcb92491c` | match |
| `repop-0.1.5-cp311-cp311-linux_x86_64.whl` | `15f171643871211b2a772ee83c94833c0be2eef0495790cedc33813c95147ff0` | match |
| `repop-0.1.5-cp311-cp311-macosx_14_0_arm64.whl` | `d8658e0327c7278812ecb6dd455cd4cf8723a974a78788adba41d5f747289c69` | match |
| `trajectory.json` | `9435515c37d8956d0c81d5bc78c0a383bb6bf27c57b5dbaf1f8be564df0b324a` | match |
Only the two linux_x86_64 wheels were installed.
## Result
```json
{
"step": 0,
"state_hash": "16554a1119745f1b9bf4ac60b03226e5e9ca1247a2bd56169cd4c822fd457aed",
"mode": "init",
"device": "cpu",
"expected": "16554a1119745f1b9bf4ac60b03226e5e9ca1247a2bd56169cd4c822fd457aed",
"match": true
}
```
Log line: `from-init: regenerated init state_hash=16554a1119745f1b expected=16554a1119745f1b MATCH=True`.
Resources: 58.3 s wall, peak RSS 16.8 GB, no swap, exit 0.
## Limits
1. No training interval. An init-only unit says nothing about the forward pass,
the backward pass, the optimizer, or the data stream. The per-step claim is
not exercised.
2. repop is closed source. Only compiled wheels ship, under the Gensyn
Reproducibility Licence. The kernels that make training reproducible cannot be
read or checked. The init unit does not even run the kernels changed by the
recent repop repin.
3. Hash coverage. The v3 hash covers weights, optimizer state, gradients, and the
batch digest. It omits the RNG, the data-stream cursor, spike state, and the
meta.json descriptor keys.
4. Init is the easy case. init.py samples Philox on CPU and byte-copies, so it is
device-independent by design. The hard cross-device claim lives in the
training kernels, which this unit does not touch.
5. Provenance of the published run is not established. We only show that the
pinned artifacts reproduce the published commitment on this machine.
## Interval replay was not attempted
This is a decision, not a stall.
- Not defined by the kit. This kit's trajectory.json contains only three init
units (`100m_smoke_repop`, `1b_repop_run3`, `1b_repop_v2`). No interval unit
with a canonical target hash is published, so there is no commitment to check.
- Memory. A step replay needs about 24 GB. This host had about 11 GB free, and
the init unit already peaked at 16.8 GB.
- Disk. One checkpoint `ckpt/step_000000100/` is 19.31 GB; the full `ckpt/` tree
is 15.64 TB. With 39 GB free, a single checkpoint is tight.
Re-attempt on a host with 32 GB or more RAM and 60 GB or more disk, ideally with
a CUDA GPU.
## Files
- `open-transformers/`: harness clone
- `kits/`: manifests
- `kit-pt-f91110a0d0c8_rp-c9ca6e71e673/`: verified wheels
- `.venv/`: Python 3.11 audit environment
- `tools/`: Go glue (`kitinspect`, `trajinspect`, `kitfetch`, `gslist`)
- `init-replay.log`: full replay output