Quazim0t0 commited on
Commit
34908b0
Β·
verified Β·
1 Parent(s): d9dc39a

Rename to DaisyChain-Train; link GitHub

Browse files
Files changed (1) hide show
  1. README.md +156 -156
README.md CHANGED
@@ -1,156 +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
- **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
 
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/DaisyChain-Train) Β· [πŸ€— HuggingFace](https://huggingface.co/DaisyChainAI/DaisyChain-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/DaisyChain-Train}},
152
+ note = {Chain spare/old machines into a data-parallel training cluster}
153
+ }
154
+ ```
155
+
156
+ **Dean Byrne (Quazim0t0)** Β· 2026