Quazim0t0 commited on
Commit
e17be2f
·
verified ·
1 Parent(s): 23a7cdf

Rewrite org README in first person; cover Train, Infer, genomics, demo

Browse files
Files changed (1) hide show
  1. README.md +188 -89
README.md CHANGED
@@ -7,128 +7,227 @@ sdk: static
7
  pinned: false
8
  ---
9
 
10
- # 🌼 DaisyChainAI
11
 
12
- We build capable systems by *daisy-chaining* a handful of
13
- small, sharp specialists behind a learned router — instead of training one giant model to do
14
- everything. Each specialist is cheap, swappable, and crisp on its own domain; chained together,
15
- they behave like one model at a fraction of the active compute.
 
 
 
 
 
 
 
 
 
 
16
 
17
  ---
18
 
19
- ## 🔗 What "daisy-chaining" means
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
- A **daisy chain** links independent units in series so a signal can flow from one to the next,
22
- each unit handling what it's good at and passing the rest along. That's exactly how our systems work:
23
 
24
- - **Each link is one small specialist** — a dense ~74M model trained on a *single* domain. It is
25
- excellent at its own data and (deliberately) surprised by everything else.
26
- - **The router is the connector between links.** When an input arrives, every specialist reports how
27
- *surprised* it is (bits/base) and exposes its hidden state, and a tiny learned router hands the work
28
- to the link that's most at home with it.
29
- - **The chain grows link by link.** Because the specialists are trained *separately*, you can chain a
30
- new domain on without retraining the others — add a link, extend the router, done.
31
- - **One link runs per query.** Only the routed specialist computes, so a chain of four ~74M experts
32
- costs ~74M of compute per token — roughly **7× cheaper** than a 500M monolith of comparable scope.
33
 
34
- So "DaisyChain" is both the brand and the mechanism: **a chain of specialists, connected by routing,
35
- that you extend one flower at a time.**
 
 
 
 
 
 
 
 
 
 
36
 
37
  ---
38
 
39
- ## 🛠️ How the models are built
 
 
 
 
40
 
41
- Each specialist is grown by **interleaving two steps**, per domain:
42
 
43
- 1. **Continued pretraining** — next-token training on *only* that domain's data, so the specialist
44
- becomes genuinely crisp on its home distribution (and the router can tell the links apart).
45
- 2. **Per-domain distillation** — the specialist is distilled from a larger teacher foundation model
46
- *restricted to its own domain* (soft-target KD, plus a factorized per-nucleotide variant where the
47
- teacher supports it). It learns the teacher's behavior on its slice without ever becoming a generic
48
- clone — the specialization is what makes routing work.
 
49
 
50
- We iterate those two steps until each link is as strong as its capacity allows, then train the
51
- **router**. In lineage this is a **cluster Branch-Train-Merge (cBTM)** mixture of domain experts —
52
- independent experts + perplexity-aware routing — with iterative distillation from a larger teacher.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  ---
55
 
56
- ## 🧬 Current project — DaisyChain Genomics
57
 
58
- Four DNA/RNA specialists (**eukaryote · prokaryote · mRNA · mRNA-splice**, ~74M each, **≈295M total —
59
- under 500M**), each distilled per-domain from **[Carbon-500M](https://huggingface.co/HuggingFaceBio/Carbon-500M)**
60
- behind a learned router. Carbon's domain mixture (50% eukaryotic / 25% mRNA / 10% splice / 15% bacterial)
61
- maps one-to-one onto our four specialists.
62
 
63
- ### Where it actually stands (measured on Carbon's own base-pair / FNS metric)
64
 
65
- We score likelihood the way Carbon does — marginalizing each 6-mer into six per-base distributions and
66
- taking mean per-base log-prob (`score_sequence`). Our implementation reproduces Carbon's `compute_bp_probs`
67
- to **6e-08**, so these are apples-to-apples.
68
 
69
- | | DaisyChain | Carbon-500M |
70
- |---|---|---|
71
- | **Routing accuracy** (held-out) | **100.0%** | — |
72
- | **Likelihood — base-pair bits/base** (↓) | **1.862** | **1.787** |
73
- | Seq-recovery, eukaryote (FNS, ↑) | 31.5% | 38.9% |
74
- | Seq-recovery, bacteria (FNS, ↑) | 40.9% | 54.1% |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  | Active params / query | ~74M (one specialist) | 500M |
76
 
77
- **Honest standing: ~+0.075 bits/base behind, and no single domain beats Carbon yet.** The gap is
78
- concentrated in mRNA and bacterial DNA (Carbon's strongest domains); eukaryote and splice are closest.
79
- Note Carbon-500M is itself a *draft model*, explicitly "not designed to be competitive on downstream
80
- benchmarks" — so it's a fair, achievable target, not the 3B/8B flagships.
81
 
82
- - 📦 **Model:** [`DaisyChainAI/daisychain-genomics`](https://huggingface.co/DaisyChainAI/daisychain-genomics)
83
- - 🎮 **Live demo:** [`Daisychain-Genomics-Demo`](https://huggingface.co/spaces/DaisyChainAI/Daisychain-Genomics-Demo) — paste DNA, watch the chain light up specialist-by-specialist and route in real time, then generate with Carbon's base-pair (FNS) decoder.
84
 
85
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
- ## 📓 Build log — what we got right, and what we got wrong
88
-
89
- We build in the open, mistakes included. This project's honest history:
90
-
91
- **What worked**
92
- - **Per-domain specialists + a learned router** reached **100%** held-out routing — one ~74M model active per query.
93
- - **Snapshot-then-pick-best** distillation: snapshot every few thousand steps, deploy the snapshot with the
94
- best *held-out* score, never the last one. This caught over-distillation (models that memorize the distill
95
- cache and regress on held-out data) and made every round regression-guarded.
96
- - **Re-fitting the router after every specialist swap.** Router features are coupled to the checkpoints;
97
- skipping the re-fit once produced a fake "regression" that was pure routing drift.
98
- - **FNS per-base distillation targets** — distilling the teacher's *base-pair* marginals, not the 4096-way
99
- 6-mer distribution, gave the small students a tractable, base-pair-correct objective.
100
-
101
- **What we got wrong (and corrected)**
102
- - **We reported the wrong metric for days.** We measured likelihood as **6-mer cross-entropy** (a softer proxy)
103
- instead of Carbon's **base-pair (FNS)** score. The proxy flattered us: it showed ~+0.043 behind and even
104
- "splice beats Carbon." On Carbon's actual metric the gap is **+0.089 and no domain is ahead.** We re-baselined
105
- the entire project history on the real metric.
106
- - **We measured sequence recovery with the wrong decoder** (6-mer argmax) instead of Carbon's **FNS base-level
107
- argmax**. Re-measuring with their decoder changed the numbers (and actually *raised* our bacteria recovery).
108
- - **An early eval had a frame-alignment bug** — feeding a context length not divisible by 6 knocked our 6-mer
109
- model out of phase and produced an impossible near-zero recovery. Fixed by aligning context to the 6-mer grid.
110
- - **Decoding took several wrong turns** before matching Carbon: greedy with no repetition control (collapsed to
111
- homopolymers), then top-k sampling (trapped on low-complexity GC/AT loops), before adopting Carbon's actual
112
- **base-pair FNS decoder** (top-p at the 6-mer level → per-base selection).
113
- - **One training round improved the proxy while regressing the real metric** (an early mRNA distill-only pass)
114
- — invisible on 6-mer CE, obvious on base-pair. A later base+distill round fixed it.
115
-
116
- **The lesson:** *measure the way the baseline measures, or you aren't comparing anything.* A stricter, honest
117
- evaluation didn't sink the project — it pointed to exactly which domains to attack and which "wins" were illusions.
118
-
119
- More links on the chain — and more chains — coming. 🌼
120
 
121
  ## Citation
122
 
123
- **If you use these models, please cite the author — Dean Byrne (Quazim0t0):**
124
 
125
  ```bibtex
126
  @misc{byrne2026daisychain,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  title = {DaisyChain Genomics: A Modular Mixture of Per-Domain Distilled Genomic Specialists},
128
- author = {Byrne, Dean},
129
  year = {2026},
130
  howpublished = {\url{https://huggingface.co/DaisyChainAI/daisychain-genomics}},
131
- note = {DaisyChainAI (Quazim0t0). Four ~74M DNA/RNA specialists distilled per-domain
132
- from Carbon-500M behind a learned router}
133
  }
134
  ```
 
 
 
7
  pinned: false
8
  ---
9
 
10
+ # DaisyChainAI
11
 
12
+ I am Dean Byrne (Quazim0t0). This org is the public home for DaisyChain: spare-machine training, layer-sharded inference, and a modular genomics mix of small specialists.
13
+
14
+ I do not train one giant model to do everything. I chain small, sharp pieces. For DNA that means specialists behind a router. For training and inference that means old / spare machines holding a shard of the work, not a fake supercomputer.
15
+
16
+ **License on the code repos:** MIT (Train, Infer). Genomics weights: Apache-2.0.
17
+
18
+ What is on this org:
19
+
20
+ - [DaisyChain-Train](https://huggingface.co/DaisyChainAI/DaisyChain-Train) - old-hardware data-parallel training
21
+ - [DaisyChain-Infer](https://huggingface.co/DaisyChainAI/DaisyChain-Infer) - split one model across devices at inference
22
+ - [daisychain-genomics](https://huggingface.co/DaisyChainAI/daisychain-genomics) - four ~74M DNA/RNA specialists + router
23
+ - [Daisychain-Genomics-Demo](https://huggingface.co/spaces/DaisyChainAI/Daisychain-Genomics-Demo) - live DNA routing Space
24
+
25
+ Related Spaces on my user account (not this org): [DaisyChain-Web](https://huggingface.co/spaces/Quazim0t0/DaisyChain-Web), [DaisyChain-Infer](https://huggingface.co/spaces/Quazim0t0/DaisyChain-Infer).
26
 
27
  ---
28
 
29
+ ## DaisyChain-Train
30
+
31
+ https://huggingface.co/DaisyChainAI/DaisyChain-Train
32
+
33
+ I built this so spare / old machines can train a shared model. Compute runs through emulated GPU logic: verified INT8 units (GUDA-style) for multiply / requantize / ReLU. Machines without a modern GPU still do the work. Chain several and they train one model as a cluster. Docker or Python.
34
+
35
+ **Read this first.** It is for **small models on spare hardware**. It **pools compute, not memory**. The model must fit on one machine. Scaling is **sublinear**. It is not a substitute for a real GPU on large models. Envelope: [docs/LIMITS.md](https://huggingface.co/DaisyChainAI/DaisyChain-Train/blob/main/docs/LIMITS.md).
36
+
37
+ ### Python cluster (`daisychain/`)
38
+
39
+ - Data-parallel across mixed machines. Each node trains its shard. Gradients combine into the exact full-batch gradient. Replicas stay bit-identical.
40
+ - Capacity-weighted sharding. Faster machines take a bigger share of the batch.
41
+ - `VerifiedLinear` runs every forward multiply / requantize / ReLU through the bundled trained units. Rank 0 prints cluster-wide unit-invocation counts.
42
+ - Bring your own `Task` (`build_model` / `sample` / `loss`) via `DAISY_TASK`. Template: `examples/my_task_template.py`.
43
+ - Plain-float alternative: same cluster, ordinary float math.
44
+ - Dashboard (`daisychain-dashboard`): readiness, P2P scan, pooled cores/RAM, per-node plan, live loss.
45
+ - SpikeWhale panel (`spikewhale_panel`, `localhost:8899`): sliders, any HF dataset you can access (default streamed FineWeb-Edu), start/stop, live loss.
46
+ - Docker demo: 3 nodes + dashboard in one command.
47
+ - Windows helper: `scripts\setup.bat`. Tailscale mesh guide in the repo.
48
+
49
+ ### DaisyChain-Web (`web/`)
50
+
51
+ Zero-install browser nodes. Opening the page is joining. Same-network auto-group (Snapdrop-style, public IP). Private rooms: `?room=CODE` with host approval. Full WebRTC mesh: gradients peer-to-peer. Server only signals and serves files. It never sees weights or gradients.
52
+
53
+ Leader-follower: whoever hits Start sets width / sequence / batch-per-device / steps / LR for the group. Mid-run join gets weights + step. Bit-identical replicas: seeded init, roster-order gradient averaging, deterministic Adam, per-step weight hashes. Sync guard stops a fork. Gradient repair: missing roster grad re-requested from the leader (8 steps retained). Cross-device kernel probe every step. FineWeb-Edu 10BT streamed off the HF CDN (pure-JS `hyparquet`). Checkpoints: `.pt` download, upload -> broadcast, validated before accept. No WebGPU: identical units on CPU. Same bits, so CPU and GPU co-train. No plain-float path. Gradients/checkpoints chunked at 48 KB.
54
+
55
+ Live demo: https://huggingface.co/spaces/Quazim0t0/DaisyChain-Web
56
+
57
+ ### Verification (web + Python)
58
 
59
+ Exact init gates on every kernel, every device, every boot. IEEE-754 binary32 oracle in BigInt (rejects the old mirror on 34% of inputs). Metamorphic properties **4/4** on an external bug corpus. RDNA2 ISA audit: bit-pattern compares (-0-aware); FMA contraction of quantize is floor-invisible. Stratified cell audit: last-column bug, uniform **5/300**, stratified **300/300**. Dirty-buffer gate poisons the pool before re-sweep. Self-corpus scores the instruments against my own bugs.
 
60
 
61
+ Latest Python/web reductions (30 September 2026): non-finite row max refused; bad-length / NaN grads halt with `GradientError`; int8 GEMM K > 131,071 refused (`MAX_INT32_K`); cluster loss is capacity-weighted (`1.418` old mean vs true **0.959**); NaN grads refused before `opt.step()`; empty `CUDA_VISIBLE_DEVICES` falls back to CPU. Valid inputs stay bit-identical (`replica_diff 0.0`).
 
 
 
 
 
 
 
 
62
 
63
+ Requant now round-half-up: old floor mean error **-0.4981 LSB**, now **+0.0020 LSB**. GEMM memory at panel max 512x768x768: **2426.9 MB -> 77.2 MB**. Neural backend 64x96x96: **519.2 MB -> 57.5 MB**. Elementwise units: 407 MB -> **2 MB**, LUT build RSS 277 MB -> **1 MB**. Multiply LUT certified over all 65536 entries (0.5 ms).
64
+
65
+ Quick start:
66
+
67
+ ```bash
68
+ docker compose -f docker/docker-compose.yml up --build
69
+ # http://localhost:8080
70
+ ```
71
+
72
+ Python: `pip install -e .` then `daisychain-train` with `MASTER_ADDR` / `WORLD_SIZE` / `RANK` / `GLOO_SOCKET_IFNAME`. SpikeWhale panel: `python -m daisychain.spikewhale_panel` (`localhost:8899`). Web: `cd web && npm install && node server.js` (`localhost:8787`).
73
+
74
+ Python >= 3.9, PyTorch >= 2.0. Multi-node is reliable on Linux/macOS. On Windows use Docker/WSL.
75
 
76
  ---
77
 
78
+ ## DaisyChain-Infer
79
+
80
+ https://huggingface.co/DaisyChainAI/DaisyChain-Infer
81
+
82
+ Live Space: https://huggingface.co/spaces/Quazim0t0/DaisyChain-Infer
83
 
84
+ Train pools **compute, not memory**. Infer is where I lift that. A forward pass is a chain: layer `l` needs layer `l-1`'s **output**, never its **weights**. Layers live on different machines. The activation travels. Each device fetches only its own layers from the Hub via safetensors byte ranges. No device holds the whole model. Not even the one driving the run.
85
 
86
+ | | DaisyChain-Train | DaisyChain-Infer |
87
+ | --- | --- | --- |
88
+ | What is split | the **batch** | the **model** |
89
+ | What crosses the wire | gradients (whole-model sized, every step) | hidden states (`T x hidden` floats, per hop) |
90
+ | Every device holds | the entire model | its own layers only |
91
+ | Pools | compute | **memory** |
92
+ | More devices means | more throughput | a **bigger model fits** |
93
 
94
+ SmolLM-135M across three devices: each downloads and holds 135-243 MB of a 513 MB model. Activation between them is tens of KB.
95
+
96
+ It is a **ring, not a line**. Weight tying: `lm_head` is the embedding table, needed at both ends. Last stage returns hidden state to the head, which owns the embedding once. A middle stage never sees the vocabulary. It passes floats it cannot interpret.
97
+
98
+ Architectures it will run (refused by name otherwise): Llama-style (Llama, Mistral, Qwen2/2.5, SmolLM, TinyLlama) and GPT-2-style. Verified end to end: `HuggingFaceTB/SmolLM-135M`, `openai-community/gpt2`, `Qwen/Qwen2.5-0.5B`. Byte-level BPE only. SentencePiece / WordPiece rejected. Weight layout and bias presence decided by the weight file, not a guess in `config.json`.
99
+
100
+ Public models need no token. Local gated/private: read token in memory for that tab only, never sent to another device. Hosted Space uses Sign in with Hugging Face. No paste-a-token box.
101
+
102
+ Trainer kernel gates carry over. Pipeline has no replica to compare. Four closers: kernel probe before layers are assigned; activation integrity hashes + model fingerprint; structural plan covering each layer exactly once; differential check (head re-runs the prompt locally, compares token ids). `test_pipeline.js`: split changes **no bit**. SmolLM-135M 30 layers `[10,10,10]`, `[1,14,15]`, `[0,15,15]`, `[5,5,5,5,5,5]` matched single-device token sequences. 47 checks: `npm test`.
103
+
104
+ Honest limits: latency not bandwidth (tokens/sec *falls* as you add stages); no KV cache; f32 in memory (4 bytes/param); head is a single point of failure; no authentication of activations; proof of concept.
105
+
106
+ ```bash
107
+ npm install
108
+ npm start # http://localhost:8788
109
+ npm test # 47 checks
110
+ ```
111
 
112
  ---
113
 
114
+ ## DaisyChain Genomics
115
 
116
+ https://huggingface.co/DaisyChainAI/daisychain-genomics
 
 
 
117
 
118
+ Live demo: https://huggingface.co/spaces/DaisyChainAI/Daisychain-Genomics-Demo
119
 
120
+ A modular genomic mix: four dense ~74M DNA/RNA specialists (≈295M total, **under Carbon-500M**) behind a learned router. Each specialist is distilled per-domain from [Carbon-500M](https://huggingface.co/HuggingFaceBio/Carbon-500M). Carbon's mix (50% eukaryotic / 25% mRNA / 10% splice / 15% bacterial) maps one-to-one onto the four specialists. The model card says it stays gated until I am done with the base.
 
 
121
 
122
+ | Specialist | Domain | Params |
123
+ | --- | --- | --- |
124
+ | `eukaryote` | Eukaryotic genomic DNA | ~74M |
125
+ | `prokaryote` | Bacterial / prokaryotic DNA | ~74M |
126
+ | `mrna` | Mature mRNA (coding transcript) | ~74M |
127
+ | `mrna_splice` | Pre-mRNA / splice-site regions | ~74M |
128
+
129
+ The router reads each specialist's surprise (bits/base) plus a PCA of its hidden state, then picks the home domain. Held-out routing: **100.0%** (vs 87.5% argmin). Only one ~74M specialist runs per query. Inference is ~7x cheaper per token than the 500M monolith.
130
+
131
+ Each specialist: interleaved continued pretraining (next-token CE on its domain) and offline KD from Carbon-500M (soft-target + factorized per-nucleotide via Carbon's FNS branch). cBTM-style domain experts, iterated per expert.
132
+
133
+ ### Where it stands (Carbon's own base-pair / FNS metric)
134
+
135
+ Likelihood is Carbon's `score_sequence` / `compute_bp_probs`, verified to **6e-08**. Mean Carbon **1.7870**.
136
+
137
+ | metric | DaisyChain | Carbon-500M |
138
+ | --- | --- | --- |
139
+ | Routing accuracy (held-out) | **100.0%** | - |
140
+ | Likelihood - bits/base, **base-pair (FNS)** (down) | **1.862** | **1.787** |
141
+ | seq-recovery eukaryote - FNS base-level (up) | 31.5% | 38.9% |
142
+ | seq-recovery bacteria - FNS base-level (up) | 40.9% | 54.1% |
143
  | Active params / query | ~74M (one specialist) | 500M |
144
 
145
+ Honest standing: mean **1.8622 vs 1.7870 (+0.0752)**. Base-pair wins ~36/100. **No domain ahead.** Carbon-500M is a draft model, not the 3B/8B flagships. Recovery: Carbon's FNS base-level argmax (per-base accuracy, next-30bp, n=50, ctx=1536).
 
 
 
146
 
147
+ Progress log (full 4-specialist set re-scored each round; trailing = mean ours - mean Carbon):
 
148
 
149
+ | date | update | euk | prok | mrna | splice | mean | trailing |
150
+ | --- | --- | --- | --- | --- | --- | --- | --- |
151
+ | 2026-06-22 | baseline (round-1 distill + router) | 1.965 | 1.994 | 1.910 | 1.935 | 1.9510 | +0.1640 |
152
+ | 2026-06-23 | mrna 12k-distill | 1.965 | 1.994 | 1.927 | 1.935 | 1.9552 | +0.1682 |
153
+ | 2026-06-23 | prokaryote round 1 | 1.965 | 1.918 | 1.927 | 1.935 | 1.9363 | +0.1493 |
154
+ | 2026-06-24 | eukaryote | 1.928 | 1.918 | 1.927 | 1.935 | 1.9272 | +0.1403 |
155
+ | 2026-06-25 | mrna | 1.928 | 1.918 | 1.788 | 1.935 | 1.8924 | +0.1054 |
156
+ | 2026-06-25 | mrna_splice | 1.928 | 1.918 | 1.788 | 1.873 | 1.8768 | +0.0898 |
157
+ | 2026-06-26 | prokaryote round 2 | 1.928 | 1.914 | 1.788 | 1.873 | 1.8758 | +0.0889 |
158
+ | 2026-06-27 | eukaryote round 2 (routing 100%) | 1.924 | 1.914 | 1.788 | 1.873 | 1.8747 | +0.0878 |
159
+ | 2026-06-29 | Muon passes - mrna + prokaryote | 1.924 | 1.868 | 1.784 | 1.873 | **1.8622** | **+0.0752** |
160
+
161
+ The mrna 12k-distill round *worsened* base-pair likelihood (+0.1640 -> +0.1682) even though it improved 6-mer CE. Later base+distill mrna round fixed it. The soft 6-mer metric hid that.
162
+
163
+ Earlier 6-mer joint CE (softer proxy, kept for reference):
164
+
165
+ | date | update | mean DaisyChain (6-mer CE) | mean Carbon-500M (6-mer CE) | trailing |
166
+ | --- | --- | --- | --- | --- |
167
+ | 2026-06-22 | baseline (94.8% routing) | 1.8644 | 1.7502 | +0.1142 |
168
+ | 2026-06-23 | mrna 12k-distill (95.7%) | 1.8599 | 1.7502 | +0.1096 |
169
+ | 2026-06-23 | prokaryote round 1 (96.2%) | 1.8528 | 1.7502 | +0.1026 |
170
+ | 2026-06-24 | eukaryote (98.0%) | 1.8413 | 1.7502 | +0.0911 |
171
+ | 2026-06-25 | mrna (98.3%) | 1.8075 | 1.7502 | +0.0573 |
172
+ | 2026-06-25 | mrna_splice (99.8%) | 1.7959 | 1.7502 | +0.0457 |
173
+ | 2026-06-26 | prokaryote round 2 (99.8%) | 1.7929 | 1.7502 | +0.0427 |
174
+
175
+ ### What worked / what I got wrong
176
+
177
+ Worked: 100% held-out routing; snapshot-then-pick-best distillation; re-fit the router after every specialist swap; FNS per-base distillation targets.
178
+
179
+ Wrong, then fixed: I reported 6-mer CE for days instead of Carbon's FNS (proxy said ~+0.043 and "splice beats Carbon"; real gap was +0.089 and no domain ahead); recovery with the wrong decoder; a frame-alignment bug (context not divisible by 6); decoding that collapsed to homopolymers then GC/AT loops before Carbon's FNS decoder; one mrna distill-only round that improved the proxy and regressed the real metric.
180
+
181
+ Lesson: measure the way the baseline measures, or you are not comparing anything.
182
+
183
+ ### Demo Space
184
 
185
+ https://huggingface.co/spaces/DaisyChainAI/Daisychain-Genomics-Demo
186
+
187
+ Gradio 5.9.1, Python 3.12. Paste a DNA sequence. Watch specialists light up, router pick the home domain, optionally generate a continuation from that specialist. Same four specialists + `router2.pt`.
188
+
189
+ Usage:
190
+
191
+ ```python
192
+ from daisychain import DaisyChain
193
+ dc = DaisyChain(root=".", device="cpu")
194
+ home, bits_per_base = dc.route("ACGTACGT...")
195
+ print(home, bits_per_base)
196
+ print(dc.generate(home, length=180))
197
+ ```
198
+
199
+ Files: `daisychain.py`, `model.py` / `specialist_presets.py` / `spike_tokenizer.py` / `registry.py`, `tokenizer.json`, `<domain>/model.safetensors`, `router2.pt`.
200
+
201
+ ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
  ## Citation
204
 
205
+ **Dean Byrne (Quazim0t0)** · 2026
206
 
207
  ```bibtex
208
  @misc{byrne2026daisychain,
209
+ title = {DaisyChain-Train: An Old Hardware Training Pipeline},
210
+ author = {Byrne, Dean (Quazim0t0)},
211
+ year = {2026},
212
+ howpublished = {\url{https://huggingface.co/DaisyChainAI/DaisyChain-Train}},
213
+ note = {Chain spare/old machines into a data-parallel training cluster}
214
+ }
215
+
216
+ @misc{byrne2026daisychaininfer,
217
+ title = {DaisyChain-Infer: Layer-Sharded Peer-to-Peer Inference in the Browser},
218
+ author = {Byrne, Dean (Quazim0t0)},
219
+ year = {2026},
220
+ howpublished = {\url{https://huggingface.co/DaisyChainAI/DaisyChain-Infer}},
221
+ note = {Run one model across several devices; pools memory, not just compute}
222
+ }
223
+
224
+ @misc{byrne2026daisychaingenomics,
225
  title = {DaisyChain Genomics: A Modular Mixture of Per-Domain Distilled Genomic Specialists},
226
+ author = {Byrne, Dean (Quazim0t0)},
227
  year = {2026},
228
  howpublished = {\url{https://huggingface.co/DaisyChainAI/daisychain-genomics}},
229
+ note = {Four ~74M DNA/RNA specialists distilled per-domain from Carbon-500M behind a learned router}
 
230
  }
231
  ```
232
+
233
+ Genomics also stands on Carbon-500M (HuggingFaceBio, 2025), Branch-Train-Merge (Li et al., 2022), cBTM (Gururangan et al., 2023), BTX (Sukhbaatar et al., 2024), Distilling the Knowledge in a Neural Network (Hinton et al., 2015), Born-Again Neural Networks (Furlanello et al., 2018), and Don't Stop Pretraining (Gururangan et al., 2020). Full BibTeX is on the genomics model card.