DNA-DiskChat-2B

A 2.24B-parameter disk-routed language model whose 2.15B-parameter memory table is stored natively compressed ("codons": 128 bytes/row, 75% smaller than int8) and trained from scratch on a single 16 GB RTX 5060 Ti. It runs inference on CPU + SSD only, reading a constant 256 bytes/token from disk.

Think of it as a zip file you never unzip: the memory stays compressed 4x and the model still learns and infers in that form. A small "librarian" (96.8M-param controller) fetches exactly 2 rows out of 4.19M per token from a 512 MB table that can live on SSD.

Model

Field Value
Total params 2.24B (96.8M controller + 2.15B memory table)
d / layers / ff 512 / 16 / 1536
Product-key rows 2048 x 2048 = 4.19M
Codon storage 128 B/row (vs 512 B int8) -> 512 MB table on disk
Positional codebooks 4 reading-frames x 256 codewords x 4-dim
Tokenizer 32k BPE (FineWeb)
Per-token SSD I/O 256 bytes (2 routed rows)

Training (RTX 5060 Ti 16 GB, vast.ai)

  • ~45,600 tok/s, GPU 100% util, 15.7/16.3 GB VRAM
  • Stopped at the 6B-token budget -> step 419,346
  • Final valid CE 3.5719 (valid ppl ~35.6); curve CE 9.83 -> 3.57
  • Optimizer: fused AdamW + Muon (Newton-Schulz) + sparse shadow + codon mutation + WSD
  • Cost: ~$3 total on a $0.13/hr instance

Inference - CPU vs SSD-only (10 runs each, 12-core CPU, no GPU)

Metric CPU (table warm in RAM) CPU + SSD (table on disk)
Throughput 48.95 tok/s (+/-0.42) 47.47 tok/s (+/-2.15)
C runtime (direct_dna.c) - ~92 tok/s (O_DIRECT, 310 MB RSS)
Per-token I/O cached in RAM 256 B real SSD
Table location RAM (512 MB) SSD (0 in RAM)
GPU none none

Inference is compute-bound, so putting the 512 MB table on SSD costs only ~3% throughput while reading a constant 256 B/token regardless of table size - 32x less per-token I/O than the earlier DiskChat-0.5B-v2 (8 KiB/token).

throughput comparison cpu throughput ssd throughput

Instruction-tuned (SFT) checkpoint

An SFT pass on 200k UltraChat dialogues (assistant-only loss, chat format <s><|user|>...<\/s><|assistant|>...) gives a chat model at sft/sft.pt. It now follows the instruction format (a clear shift from the base continuation model):

  • "What is the capital of France?" -> "The capital of France is ... Paris."
  • "Give me one tip for learning to code." -> "...1. Learn a few basic programming languages: - Python ..."
  • "Say hello." -> "Sure, I'm glad you're here."

Honest ceiling: it learns the format and answers on-topic, but content is often shallow or hallucinated (e.g. arithmetic, exact facts) - the expected limit of a ~97M active-parameter controller. See sft_quality.json. The roadmap to raise this at fixed inference cost is a ternary + PEER expert controller (grow effective capacity toward ~500M while holding active FLOPs and per-token bytes ~flat).

Ready-to-run C runtime (CPU + SSD, no GPU)

Prebuilt artifacts live in c-runtime/ - drop-in for the MONKE flash-drive runtime:

file what
c-runtime/controller.bin chat (SFT) controller, ~322 MB, loaded into RAM
c-runtime/controller_base.bin base LM controller (text continuation)
c-runtime/codons.u8 512 MB codon memory table, stays on SSD (256 B/token)
c-runtime/tokenizer.json 32k ByteLevel-BPE
c-runtime/monke_runtime_dna.c O_DIRECT streaming runtime source
huggingface-cli download jaivial/dna-diskchat-2b-v1 c-runtime/controller.bin \
  c-runtime/codons.u8 c-runtime/tokenizer.json c-runtime/monke_runtime_dna.c --local-dir .
gcc -O3 -march=native -fopenmp c-runtime/monke_runtime_dna.c -o monke_runtime_dna -lm
printf 'PROMPT 1 459 3411 284 3771 316\nGEN 24 316\n' | \
  ./monke_runtime_dna c-runtime/controller.bin c-runtime/codons.u8 1 8
# -> streams T <id> tokens then: E 86.29 8192 309.8   (tok_s, bytes/token, RSS MB)

Bit-exact with PyTorch; ~86-92 tok/s, ~310 MB RSS.

Base-model quality (honest)

Base LM (FineWeb pretraining only, no SFT). Greedy continuations are coherent, grammatical English and often factually correct, but repetitive - expected for a 2B base model at greedy decoding. It is a systems/efficiency artifact, not a chat assistant.

  • "The capital of France is" -> "the French capital, Paris. It is the capital of France..."
  • "The three primary colors are" -> "red, green, and blue."
  • "Water is important because" -> "it is the most important source of water for all life on Earth..."
  • "The sun is a star that" -> "is the source of all life on earth..."

Full samples in quality_samples.json; raw numbers in cpu_bench.json / ssd_bench.json. Latest checkpoint: checkpoints/ckpt_419346.pt.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support