πΌ DaisyChain β Old Hardware Training Pipeline
In plain terms: DaisyChain lets you use old / spare machines to train neural networks. The training runs through emulated GPU logic β verified INT8 units (GUDA-style) that stand in for a GPU's math β so machines without a modern GPU can still do the work. Chain several together and they train one shared model as a cluster. Before you rely on it, see what it can't do β Limitations.
Use the hardware you already have to train. Each machine runs the emulated GPU logic (verified INT8 units β multiply / requantize / ReLU) to compute the model, and DaisyChain pools the machines data-parallel: device selection, capacity-weighted sharding, gradient sync, a P2P setup, and a live dashboard. Two ways to run β Docker or Python.
Built by DaisyChainAI. Point it at your model + data and it trains across whatever old machines you have, through the emulated GPU logic.
Repositories: GitHub Β· π€ HuggingFace
β οΈ Read this first
DaisyChain is for small models on spare hardware. It pools compute, not memory (the model must fit on one node), scaling is sublinear, and it is not a substitute for a real GPU on real models. Full envelope in docs/LIMITS.md β please read it before relying on it.
Quick start
Docker (most reliable β one command)
docker compose -f docker/docker-compose.yml up --build
# open http://localhost:8080
Brings up a 3-node demo cluster + dashboard on one machine.
Python (real machines)
On every machine (pip install daisychain or pip install -e .):
export MASTER_ADDR=100.101.102.10 # coordinator IP (Tailscale 100.x recommended)
export MASTER_PORT=29560
export WORLD_SIZE=3
export RANK=0 # 1, 2, ... on the others
export GLOO_SOCKET_IFNAME=tailscale0 # your mesh / LAN NIC
daisychain-train
Windows helper
scripts\setup.bat
An interactive menu: Docker, Python node, or just install deps.
Full walkthrough: docs/QUICKSTART.md.
How it works
Each machine runs the same command; they form a cluster and train one shared model. Two things happen:
- The compute runs through the emulated GPU logic. By default the model is
built from
VerifiedLinearlayers, so every forward multiply / requantize / ReLU is done by the bundled verified INT8 units (daisychain/verified/) β the emulated GPU math. Rank 0 prints cluster-wide unit-invocation counts so you can see the emulated logic doing the work. - The machines are pooled data-parallel. Each node trains on its own shard; gradients are capacity-weighted and combined into the exact full-batch gradient, so replicas stay bit-identical. Faster machines automatically take a bigger share.
old machine A ββ
old machine B ββΌββΊ each runs the emulated GPU logic on its shard ββΊ one model
old machine C ββ (gradients combined across the cluster)
Bring your own model
DaisyChain trains any Task (build_model / sample / loss). Copy
examples/my_task_template.py, set DAISY_TASK=your_module:YourTask. Use
VerifiedLinear (see daisychain/verified_task.py) to run your model's compute
through the emulated units. See docs/CUSTOM_TASK.md.
Plain-float alternative
If you'd rather skip the emulated units and just train with normal float math on
each machine, set DAISY_TASK=daisychain.example_task:ExampleTask. Same cluster,
same pooling β the model math just runs as ordinary float instead of through the
verified units.
The dashboard
daisychain-dashboard (or the Docker service) serves a Tailwind page at
:8080 β readiness banner, P2P connectivity scan, pooled cores/RAM + capacity
plan (per-node device, weight, batch), and live training loss.
Networking
Use Tailscale for a P2P mesh so machines on different networks get stable IPs on one interface β docs/TAILSCALE.md.
Layout
daisychain/cluster.py capacity-weighted CPU/GPU data-parallel trainer
daisychain/task.py the Task interface + loader
daisychain/train.py entry point (daisychain-train)
daisychain/example_task.py default runnable task (plain float)
daisychain/verified/ bundled trained N/N units + VerifiedLinear (train through them)
daisychain/verified_task.py example task whose forward runs on the verified units
daisychain/dashboard/ agent + P2P scanner + Tailwind server
docker/ Dockerfile, dashboard image, compose (demo cluster)
scripts/setup.bat / setup.sh interactive setup helpers
config/ nodes + cluster env examples
examples/my_task_template.py starting point for your own model
docs/ QUICKSTART, LIMITS, CUSTOM_TASK, TAILSCALE
Install
pip install torch numpy psutil
pip install -e . # exposes: daisychain-train, daisychain-agent, daisychain-dashboard
Requires Python β₯ 3.9, PyTorch β₯ 2.0. Multi-node is reliable on Linux/macOS; on Windows use Docker/WSL (see LIMITS).
License: MIT Β· Author: Dean Byrne (Quazim0t0) Β· Org: DaisyChainAI
Citation
@misc{byrne2026daisychain,
title = {DaisyChain: An Old Hardware Training Pipeline},
author = {Byrne, Dean (Quazim0t0)},
year = {2026},
howpublished = {\url{https://huggingface.co/DaisyChainAI/DaisyChain-Train}},
note = {Chain spare/old machines into a data-parallel training cluster}
}
Dean Byrne (Quazim0t0) Β· 2026