File size: 2,122 Bytes
9f1076a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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.