Quazim0t0 commited on
Commit
1d109c7
·
verified ·
1 Parent(s): f3d8380

Add GitHub link

Browse files
Files changed (1) hide show
  1. README.md +156 -154
README.md CHANGED
@@ -1,154 +1,156 @@
1
- ---
2
- license: mit
3
- tags:
4
- - distributed-training
5
- - old-hardware
6
- - cluster
7
- - verified-units
8
- - pytorch
9
- ---
10
-
11
- # 🌼 DaisyChain — Old Hardware Training Pipeline
12
-
13
- > **In plain terms:** DaisyChain lets you use **old / spare machines** to train
14
- > neural networks. The training runs through **emulated GPU logic** — verified
15
- > INT8 units (GUDA-style) that stand in for a GPU's math — so machines *without*
16
- > a modern GPU can still do the work. Chain several together and they train one
17
- > shared model as a cluster.
18
- > Before you rely on it, see what it **can't** do → [Limitations](docs/LIMITS.md).
19
-
20
- **Use the hardware you already have to train.** Each machine runs the emulated
21
- GPU logic (verified INT8 units — multiply / requantize / ReLU) to compute the
22
- model, and DaisyChain pools the machines data-parallel: device selection,
23
- capacity-weighted sharding, gradient sync, a P2P setup, and a live dashboard.
24
- Two ways to run — **Docker** or **Python**.
25
-
26
- > Built by **DaisyChainAI**. Point it at your model + data and it trains across
27
- > whatever old machines you have, through the emulated GPU logic.
28
-
29
- ---
30
-
31
- ## ⚠️ Read this first
32
- DaisyChain is for **small models on spare hardware**. It **pools compute, not
33
- memory** (the model must fit on one node), scaling is **sublinear**, and it is
34
- **not** a substitute for a real GPU on real models. Full envelope in
35
- **[docs/LIMITS.md](docs/LIMITS.md)** please read it before relying on it.
36
-
37
- ---
38
-
39
- ## Quick start
40
-
41
- ### Docker (most reliable — one command)
42
- ```bash
43
- docker compose -f docker/docker-compose.yml up --build
44
- # open http://localhost:8080
45
- ```
46
- Brings up a 3-node demo cluster + dashboard on one machine.
47
-
48
- ### Python (real machines)
49
- On every machine (`pip install daisychain` or `pip install -e .`):
50
- ```bash
51
- export MASTER_ADDR=100.101.102.10 # coordinator IP (Tailscale 100.x recommended)
52
- export MASTER_PORT=29560
53
- export WORLD_SIZE=3
54
- export RANK=0 # 1, 2, ... on the others
55
- export GLOO_SOCKET_IFNAME=tailscale0 # your mesh / LAN NIC
56
- daisychain-train
57
- ```
58
-
59
- ### Windows helper
60
- ```bat
61
- scripts\setup.bat
62
- ```
63
- An interactive menu: Docker, Python node, or just install deps.
64
-
65
- Full walkthrough: **[docs/QUICKSTART.md](docs/QUICKSTART.md)**.
66
-
67
- ---
68
-
69
- ## How it works
70
-
71
- Each machine runs the **same** command; they form a cluster and train one shared
72
- model. Two things happen:
73
-
74
- 1. **The compute runs through the emulated GPU logic.** By default the model is
75
- built from `VerifiedLinear` layers, so every forward multiply / requantize /
76
- ReLU is done by the **bundled verified INT8 units** (`daisychain/verified/`)
77
- the emulated GPU math. Rank 0 prints **cluster-wide unit-invocation counts**
78
- so you can see the emulated logic doing the work.
79
- 2. **The machines are pooled data-parallel.** Each node trains on its own shard;
80
- gradients are capacity-weighted and combined into the exact full-batch
81
- gradient, so replicas stay **bit-identical**. Faster machines automatically
82
- take a bigger share.
83
-
84
- ```
85
- old machine A ─┐
86
- old machine B ─┼─► each runs the emulated GPU logic on its shard ─► one model
87
- old machine C┘ (gradients combined across the cluster)
88
- ```
89
-
90
- ## Bring your own model
91
- DaisyChain trains any **Task** (`build_model` / `sample` / `loss`). Copy
92
- `examples/my_task_template.py`, set `DAISY_TASK=your_module:YourTask`. Use
93
- `VerifiedLinear` (see `daisychain/verified_task.py`) to run your model's compute
94
- through the emulated units. See **[docs/CUSTOM_TASK.md](docs/CUSTOM_TASK.md)**.
95
-
96
- ## Plain-float alternative
97
- If you'd rather skip the emulated units and just train with normal float math on
98
- each machine, set `DAISY_TASK=daisychain.example_task:ExampleTask`. Same cluster,
99
- same pooling the model math just runs as ordinary float instead of through the
100
- verified units.
101
-
102
- ## The dashboard
103
- `daisychain-dashboard` (or the Docker service) serves a Tailwind page at
104
- `:8080` readiness banner, P2P connectivity scan, pooled cores/RAM + capacity
105
- plan (per-node device, weight, batch), and live training loss.
106
-
107
- ## Networking
108
- Use **Tailscale** for a P2P mesh so machines on different networks get stable
109
- IPs on one interface — **[docs/TAILSCALE.md](docs/TAILSCALE.md)**.
110
-
111
- ---
112
-
113
- ## Layout
114
- ```
115
- daisychain/cluster.py capacity-weighted CPU/GPU data-parallel trainer
116
- daisychain/task.py the Task interface + loader
117
- daisychain/train.py entry point (daisychain-train)
118
- daisychain/example_task.py default runnable task (plain float)
119
- daisychain/verified/ bundled trained N/N units + VerifiedLinear (train through them)
120
- daisychain/verified_task.py example task whose forward runs on the verified units
121
- daisychain/dashboard/ agent + P2P scanner + Tailwind server
122
- docker/ Dockerfile, dashboard image, compose (demo cluster)
123
- scripts/setup.bat / setup.sh interactive setup helpers
124
- config/ nodes + cluster env examples
125
- examples/my_task_template.py starting point for your own model
126
- docs/ QUICKSTART, LIMITS, CUSTOM_TASK, TAILSCALE
127
- ```
128
-
129
- ## Install
130
- ```bash
131
- pip install torch numpy psutil
132
- pip install -e . # exposes: daisychain-train, daisychain-agent, daisychain-dashboard
133
- ```
134
-
135
- Requires Python ≥ 3.9, PyTorch ≥ 2.0. Multi-node is reliable on **Linux/macOS**;
136
- on **Windows use Docker/WSL** (see LIMITS).
137
-
138
- ---
139
-
140
- **License:** MIT · **Author:** Dean Byrne (Quazim0t0) · **Org:** DaisyChainAI
141
-
142
- ## Citation
143
-
144
- ```bibtex
145
- @misc{byrne2026daisychain,
146
- title = {DaisyChain: An Old Hardware Training Pipeline},
147
- author = {Byrne, Dean (Quazim0t0)},
148
- year = {2026},
149
- howpublished = {\url{https://huggingface.co/DaisyChainAI/old-hw-train}},
150
- note = {Chain spare/old machines into a data-parallel training cluster}
151
- }
152
- ```
153
-
154
- **Dean Byrne (Quazim0t0)** · 2026
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - distributed-training
5
+ - old-hardware
6
+ - cluster
7
+ - verified-units
8
+ - pytorch
9
+ ---
10
+
11
+ # 🌼 DaisyChain — Old Hardware Training Pipeline
12
+
13
+ > **In plain terms:** DaisyChain lets you use **old / spare machines** to train
14
+ > neural networks. The training runs through **emulated GPU logic** — verified
15
+ > INT8 units (GUDA-style) that stand in for a GPU's math — so machines *without*
16
+ > a modern GPU can still do the work. Chain several together and they train one
17
+ > shared model as a cluster.
18
+ > Before you rely on it, see what it **can't** do → [Limitations](docs/LIMITS.md).
19
+
20
+ **Use the hardware you already have to train.** Each machine runs the emulated
21
+ GPU logic (verified INT8 units — multiply / requantize / ReLU) to compute the
22
+ model, and DaisyChain pools the machines data-parallel: device selection,
23
+ capacity-weighted sharding, gradient sync, a P2P setup, and a live dashboard.
24
+ Two ways to run — **Docker** or **Python**.
25
+
26
+ > Built by **DaisyChainAI**. Point it at your model + data and it trains across
27
+ > whatever old machines you have, through the emulated GPU logic.
28
+
29
+ **Repositories:** [GitHub](https://github.com/quzi93/old-hw-train) · [🤗 HuggingFace](https://huggingface.co/DaisyChainAI/old-hw-train)
30
+
31
+ ---
32
+
33
+ ## ⚠️ Read this first
34
+ DaisyChain is for **small models on spare hardware**. It **pools compute, not
35
+ memory** (the model must fit on one node), scaling is **sublinear**, and it is
36
+ **not** a substitute for a real GPU on real models. Full envelope in
37
+ **[docs/LIMITS.md](docs/LIMITS.md)** — please read it before relying on it.
38
+
39
+ ---
40
+
41
+ ## Quick start
42
+
43
+ ### Docker (most reliable one command)
44
+ ```bash
45
+ docker compose -f docker/docker-compose.yml up --build
46
+ # open http://localhost:8080
47
+ ```
48
+ Brings up a 3-node demo cluster + dashboard on one machine.
49
+
50
+ ### Python (real machines)
51
+ On every machine (`pip install daisychain` or `pip install -e .`):
52
+ ```bash
53
+ export MASTER_ADDR=100.101.102.10 # coordinator IP (Tailscale 100.x recommended)
54
+ export MASTER_PORT=29560
55
+ export WORLD_SIZE=3
56
+ export RANK=0 # 1, 2, ... on the others
57
+ export GLOO_SOCKET_IFNAME=tailscale0 # your mesh / LAN NIC
58
+ daisychain-train
59
+ ```
60
+
61
+ ### Windows helper
62
+ ```bat
63
+ scripts\setup.bat
64
+ ```
65
+ An interactive menu: Docker, Python node, or just install deps.
66
+
67
+ Full walkthrough: **[docs/QUICKSTART.md](docs/QUICKSTART.md)**.
68
+
69
+ ---
70
+
71
+ ## How it works
72
+
73
+ Each machine runs the **same** command; they form a cluster and train one shared
74
+ model. Two things happen:
75
+
76
+ 1. **The compute runs through the emulated GPU logic.** By default the model is
77
+ built from `VerifiedLinear` layers, so every forward multiply / requantize /
78
+ ReLU is done by the **bundled verified INT8 units** (`daisychain/verified/`)
79
+ the emulated GPU math. Rank 0 prints **cluster-wide unit-invocation counts**
80
+ so you can see the emulated logic doing the work.
81
+ 2. **The machines are pooled data-parallel.** Each node trains on its own shard;
82
+ gradients are capacity-weighted and combined into the exact full-batch
83
+ gradient, so replicas stay **bit-identical**. Faster machines automatically
84
+ take a bigger share.
85
+
86
+ ```
87
+ old machine A
88
+ old machine B ─┼─► each runs the emulated GPU logic on its shard ─► one model
89
+ old machine C ─┘ (gradients combined across the cluster)
90
+ ```
91
+
92
+ ## Bring your own model
93
+ DaisyChain trains any **Task** (`build_model` / `sample` / `loss`). Copy
94
+ `examples/my_task_template.py`, set `DAISY_TASK=your_module:YourTask`. Use
95
+ `VerifiedLinear` (see `daisychain/verified_task.py`) to run your model's compute
96
+ through the emulated units. See **[docs/CUSTOM_TASK.md](docs/CUSTOM_TASK.md)**.
97
+
98
+ ## Plain-float alternative
99
+ If you'd rather skip the emulated units and just train with normal float math on
100
+ each machine, set `DAISY_TASK=daisychain.example_task:ExampleTask`. Same cluster,
101
+ same pooling — the model math just runs as ordinary float instead of through the
102
+ verified units.
103
+
104
+ ## The dashboard
105
+ `daisychain-dashboard` (or the Docker service) serves a Tailwind page at
106
+ `:8080` �� readiness banner, P2P connectivity scan, pooled cores/RAM + capacity
107
+ plan (per-node device, weight, batch), and live training loss.
108
+
109
+ ## Networking
110
+ Use **Tailscale** for a P2P mesh so machines on different networks get stable
111
+ IPs on one interface — **[docs/TAILSCALE.md](docs/TAILSCALE.md)**.
112
+
113
+ ---
114
+
115
+ ## Layout
116
+ ```
117
+ daisychain/cluster.py capacity-weighted CPU/GPU data-parallel trainer
118
+ daisychain/task.py the Task interface + loader
119
+ daisychain/train.py entry point (daisychain-train)
120
+ daisychain/example_task.py default runnable task (plain float)
121
+ daisychain/verified/ bundled trained N/N units + VerifiedLinear (train through them)
122
+ daisychain/verified_task.py example task whose forward runs on the verified units
123
+ daisychain/dashboard/ agent + P2P scanner + Tailwind server
124
+ docker/ Dockerfile, dashboard image, compose (demo cluster)
125
+ scripts/setup.bat / setup.sh interactive setup helpers
126
+ config/ nodes + cluster env examples
127
+ examples/my_task_template.py starting point for your own model
128
+ docs/ QUICKSTART, LIMITS, CUSTOM_TASK, TAILSCALE
129
+ ```
130
+
131
+ ## Install
132
+ ```bash
133
+ pip install torch numpy psutil
134
+ pip install -e . # exposes: daisychain-train, daisychain-agent, daisychain-dashboard
135
+ ```
136
+
137
+ Requires Python ≥ 3.9, PyTorch ≥ 2.0. Multi-node is reliable on **Linux/macOS**;
138
+ on **Windows use Docker/WSL** (see LIMITS).
139
+
140
+ ---
141
+
142
+ **License:** MIT · **Author:** Dean Byrne (Quazim0t0) · **Org:** DaisyChainAI
143
+
144
+ ## Citation
145
+
146
+ ```bibtex
147
+ @misc{byrne2026daisychain,
148
+ title = {DaisyChain: An Old Hardware Training Pipeline},
149
+ author = {Byrne, Dean (Quazim0t0)},
150
+ year = {2026},
151
+ howpublished = {\url{https://huggingface.co/DaisyChainAI/old-hw-train}},
152
+ note = {Chain spare/old machines into a data-parallel training cluster}
153
+ }
154
+ ```
155
+
156
+ **Dean Byrne (Quazim0t0)** · 2026