atom-ai / docs /CPU_PERF.md
thefinalboss's picture
ATOM (atom-ai): code snapshot (100fae0 + batched-train), README with measured numbers, curated checkpoints
9f1076a verified
|
Raw History Blame Contribute Delete
2.12 kB
# CPU performance helpers (serialize + prefetch)
Lightweight box hygiene for ATOM training. **No science changes** — same
packets, same field, same loss. These knobs only reduce accidental CPU
contention and hide shard I/O latency.
## 1. Serialize trains (default ON)
Two `tools/run_atom_native.py` processes on one machine will thrash the same
CPU cores. By default the runner takes an **advisory exclusive flock** and
**fails fast** if another train already holds it (no infinite wait; does not
touch the other process).
| Item | Value |
|------|--------|
| Default lock path | `checkpoints/atom-ai-train.lock` (cwd-relative) |
| Fallback | `/tmp/atom-ai-train.lock` if `checkpoints/` cannot be created |
| Opt out | `--allow-parallel-train` |
| Override path | `--train-lock-path /path/to/lock` |
On conflict the process prints the lock path and holder PID (when available)
and exits non-zero. Lock is released on process exit.
## 2. Stream prefetch (default ON for `--stream`)
In `src/io/stream_corpus.py`, `StreamingPacketSource` can read the **next**
UTF-8-safe byte chunk on a background thread while the current chunk is
atomized / trained. One-ahead buffer only; same concatenation order and
bytes as without prefetch.
| Item | Value |
|------|--------|
| Default | ON when `--stream` |
| Disable | `--no-stream-prefetch` |
| Semantics | Identical packet payloads / order; no field reset |
## What NOT to do
These helpers are **not** a substitute for model or systems work you should
avoid on the ATOM path:
- **Do not** introduce DDP / multi-process data-parallel training as the
“speed” fix — ATOM’s continuum is single-box structured matter, not a
sharded parameter farm.
- **Do not** add attention stacks or other architecture rewrites under the
banner of CPU perf.
- **Do not** wipe the toroidal field (or reset atomizer context) to “make
steps cheaper” unless you explicitly want `--episode-reset` behaviour.
- **Do not** change L_ign / MERGE / dynamics / loss / thresholds here —
science stays elsewhere.
Use serialize + prefetch first; profile before larger changes.