File size: 2,341 Bytes
309b968
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Honest limits — read before you rely on DaisyChain

DaisyChain is a real tool for a **specific** job: chaining spare/old machines to
train **small** models faster by pooling their compute. It is not magic, and it
is easy to misapply. Here's the honest envelope.

## What it does
- **Data-parallel** training: every node holds a full copy of the model and
  trains on its slice of the data; gradients are averaged across the network.
- **Capacity-weighted**: each node measures its own speed (CPU or GPU) and takes
  a proportional batch, so a faster machine does more. GPU nodes auto-join and
  carry more load; CPU-only nodes still participate.

## What it does NOT do (expect these)
-**Not GPU-class training.** N pooled old CPUs/GPUs are still that class of
  hardware. A single modern GPU will beat the whole cluster for real models.
-**Pools compute, not memory.** Every node needs the *whole* model in RAM
  (or VRAM). You **cannot** train a model bigger than a single node can hold.
  Chaining 5 laptops does not give you one big machine.
-**Sublinear scaling.** Gradient sync over WiFi is bandwidth-bound, and the
  **slowest node paces every step** (synchronous). Each added node helps less
  than the last; a slow link can erase the benefit.
-**Not for huge/modern models.** Transformers/large CNNs at CPU (or old-GPU)
  speed are impractically slow.

## The sweet spot
Small models (small MLPs, tabular/classifier tasks, small fine-tunes),
a handful of machines, model fits on each, you want more throughput and don't
have a GPU handy. Education, research, retro/old-hardware hobby clusters.

## Hardware / OS
- **Multi-node reliably runs on Linux/macOS.** On **Windows**, gloo tensor
  collectives are unstable — use **Docker** or **WSL**. Single-machine use is
  fine on Windows.
- **Old GPUs** must be new enough for current PyTorch (compute capability ≳ 5.0,
  roughly GTX 900 / Maxwell and up). Kepler/Fermi-era cards won't work with
  modern torch.
- Put all nodes on the same **interface** (Tailscale `tailscale0`, or a real LAN
  NIC) via `GLOO_SOCKET_IFNAME` — not a VPN/Docker/WSL virtual NIC.

## The one-line version
You can chain old machines to train a **small** model together, faster by
throughput, with honest sublinear scaling — and DaisyChain won't pretend to be
more than that.