Loading
Loading

Neuron registration trends
Training small, efficient language models that retain the reasoning, coding, and knowledge capabilities of larger teachers is expensive and hard to validate. Traditional benchmarks saturate quickly and miners overfit to static test sets, leaving held-out performance flat. Knowledge distillation can bridge the gap, but evaluating whether a distilled student actually generalizes requires a principled multi-axis scoring system that resists gaming.
Bittensor Subnet 97 uses an incentive-aligned network of validators to score distilled models on a composite of 25+ axes — including 11 procedurally-generated axes (math, code, reasoning, long-context, knowledge, calibration, consistency) that regenerate every round from the block-seed, so there is no static answer key to memorize. Miners commit distilled models to HuggingFace; validators pull them, verify architecture compliance (≤33B params, Kimi-family, same tokenizer as teacher), and score them on the composite. The ranking key blends the worst-3-axis mean with the weighted mean, so a model cannot camp specialists. Winner takes all: the highest-scoring model gets 100% of emissions that round.
The validator runs a split architecture: a secure host holds wallet keys and sets weights on-chain; a remote GPU pod (8× H200 tensor-parallel) runs inference — teacher generation via vLLM, student forward passes, KL computation. Miners train using standard distillation recipes (on-policy KL + SFT on quality traces + optional GRPO) and push to HuggingFace. Single-eval policy + paired king re-evaluation + 5% dethrone margin mean lucky rounds do not crown imposters, and a model's score reflects the same procedural items as its challengers.
/v1/chat/completions endpoint and build tool-calling agents (function calling, multi-turn reasoning) against a SOTA small model without fine-tuning or hosting their own infrastructure.Use cases were auto-generated from the GitHub repository and may not reflect the latest changes.
Subnet 97 (Distil) is a Bittensor subnet for competitive distillation of moonshotai/Kimi-K2.6 (1T total / ~32B active MoE) into smaller student models (≤33B total params, Kimi-family architecture). Miners train and commit distilled models to HuggingFace; validators score them on a 25+ axis composite (11 procedurally-generated v31 axes covering math/code/reasoning/long-context/knowledge/honesty, plus distillation/judge/discipline tiers), with the king receiving 100% of emissions. The composite.final ranking key blends the worst-3-axis mean (75%) with the weighted-mean of all axes (25%), anti-Goodhart via procedural item generation seeded by block hash.
Split validator architecture: (1) Secure Hetzner host holds wallet keys, runs validator service loop (king resolution, weight setting, state persistence), exposes API/dashboard; (2) Remote Lium GPU pod (8× H200 tensor-parallel) runs inference — teacher vLLM generation, student forward pass, KL computation, no chain access. Miners push distilled Kimi-family models to HuggingFace; validators pull commits on-chain, verify pre-checks (no GPU), schedule challengers FIFO (cap 10/round + reference baseline every round), eval on pod, score via 25+ axis composite, set weights on-chain (king=1.0, others=0.0). Procedural benches seeded by block hash ensure fresh items every round; single-eval policy + paired king re-eval + 5% dethrone margin reduce false-positive dethroning from RNG variance to <6%.
Winner-take-all: best composite.final gets 100% emissions.
This information was auto-extracted from the GitHub repository and may be incomplete or out of date. Always refer to the subnet's GitHub repository for the latest instructions.
composite.final = α × worst_K_mean + (1 - α) × weighted, where α=0.75, K=3 (since v32.5). worst_K_mean = mean of 3 lowest non-broken axes; weighted = Σ wᵢ · axisᵢ / Σ wᵢ. Ranking key is composite.final, normalized per axis. All procedural v31 axes (math_gsm_symbolic 0.06, math_competition 0.05, math_robustness 0.03, code_humaneval_plus 0.08, reasoning_logic_grid 0.05, reasoning_dyval_arith 0.04, long_context_ruler 0.05, knowledge_multi_hop_kg 0.04, ifeval_verifiable 0.04, truthfulness_calibration 0.03, consistency_paraphrase 0.03) generate items per-round from block_seed so no static dataset to memorise.
Dethrone gate: (1) final-score margin ≥5%, (2) worst-axis floor ≥0.20 (waived if king regressed 2+ rounds on held-out canary), (3) per-axis baseline-relative penalty (regression below reference baseline costs 1.5× the gap), (4) Pareto-dominance gate (challenger must win on majority of comparable axes). Reference baseline (UID -1) runs every round for axis calibration.
The sections above were auto-generated from the GitHub repository and may not reflect the latest changes. View repository
Alchemical intelligence
FAQs were auto-generated from the GitHub repository and may not reflect the latest changes.
Holder & total-staked metrics as of 1h ago (hourly snapshot)
LoRA + gradient checkpointing fits on 24GB consumer GPUs for sub-7B students. Full 33B bf16 training requires 4-8× H100/H200. Stage 3 on-policy distillation is compute-intensive; typical wall-time ~36 hours on single A100 for 5k OPD steps.
Validator runs split architecture: secure host (Hetzner) holds wallet keys and chain access; remote GPU pod (Lium) runs inference. Kimi K2.6 requires 8× H200 with tensor-parallel-size=8. B200 eval setup documented in docs/B200_EVAL_SETUP.md.
Install the distillation package and dependencies from source
pip install -e .
Run all 15 pre-submission validator checks locally to verify architecture, params, tokenizer, quantization, and format compliance
python test_miner.py --model-repo your-username/your-model
Full local eval including KL scoring (requires GPU); compare against current king with --king-repo flag(optional)
python check_model.py --model-repo your-username/your-model --eval
Dry-run submission (validates everything without committing on-chain); fix any validation errors before proceeding
python miner.py --network finney --netuid 97 --wallet-name my_wallet --hotkey-name my_hotkey --model-repo your-username/your-distilled-model --dry-run
Commit your model to the subnet (PERMANENT — interactive confirmation required; one commitment per hotkey, forever)
python miner.py --network finney --netuid 97 --wallet-name my_wallet --hotkey-name my_hotkey --model-repo your-username/your-distilled-model
Install the distillation package and dependencies (requires: bittensor, torch, transformers, vllm, fastapi, etc.)
pip install .
Register a validator hotkey on subnet 97 via the standard Bittensor flow
btcli subnet register --netuid 97
Run the validator via the wrapper script; or use PM2: pm2 start scripts/run_validator.sh --name distil-validator
bash scripts/run_validator.sh
Run the GPU eval pod remotely (Lium setup); vLLM teacher generation + student HF logit extraction; teacher logits GPU-resident, early stopping enabled
python scripts/pod_eval_vllm.py