rhysbot
An open model experiment

A corpus is the beginning.
A model is what learns from it.

Rhysbot explores the whole pipeline: collect public material, review it, train models, measure them, and let people try the results. Its different chat modes use different models and different paths through that pipeline.

Three ways to make a reply.

Fast chat · source-grounded

Qwen + Rhys sources

An existing Qwen3-30B-A3B model receives relevant excerpts from Rhys’s writing, How Everything Evolved, podcasts, X and curated notes with your question.

The excerpts are looked up at inference time. This mode does not change Qwen’s weights. In side-by-side comparison, the other Qwen answer receives no Rhys corpus and keeps its own conversation.

Open the default chat ↗
Saved adaptation · trained weights

Qwen3.5-4B + CPT/SFT

Start from existing Qwen3.5-4B base weights. Continued pretraining (CPT) on Rhys’s corpus ran for 1,000 updates, then supervised fine-tuning (SFT) ran for 400 updates.

A saved LoRA adapter contains the learned changes. The checkpoint comparison runs that adaptation beside the same 4B base with its adapter disabled. It receives no retrieved corpus excerpts.

Choose “Trained 4B vs Qwen 4B base” ↗
Pure nanochat Rhys · from scratch

A tiny model, built from zero

nanochat began with random weights: 4 layers, an 8,192-token vocabulary and a 512-token sequence length. It ran 2,000 pretraining updates, then a short 80-update SFT run.

This mode uses only that saved scratch checkpoint. No Qwen, retrieved passages or hidden fallback answer for it. Every valid reply shows its checkpoint run, weights hash and token counts.

It is a tiny learning experiment. Current samples are often incoherent; SFT logged NaNs from update 44. Finishing a training run is not evidence that it became a useful chatbot.

Choose “Pure nanochat Rhys” when available ↗

What each stage changes.

  1. Data

    The corpus is reviewed text with source and speaker metadata. It contains examples a model could learn from; it is not itself a model.

    Inspect the corpus
  2. Pretraining

    Predict the next token in text. Nanochat learns its weights from scratch. Qwen CPT adapts an already-trained model through a small trainable adapter.

  3. Post-training

    Train on question/answer or other supervised examples. The initial SFT set contained 18,363 Anki question/answer examples and 723 public-writing continuations, rather than a broad set of Rhys’s first-person conversations or personal opinions. Those are dataset counts across train, validation and test; split membership does not prove an optimizer consumed every example.

  4. Inference

    Use saved weights to generate a new reply. Retrieval can supply extra passages at this stage. It gives the model context without another training run.

More corpus does not automatically mean new weights. The speaker-separated podcast and YouTube corpus was added after the original training runs. The frozen checkpoints have not magically learned that update. Fast chat can retrieve the newer indexed sources; a model needs an explicit new training run to learn from them.

Natural conversation is also an inference choice.

A prompt can ask for a direct first-person reply as AI Rhys, grounded in relevant sources, with citations and clear uncertainty. That can improve conversational style without training new weights. Studying an Anki card does not establish Rhys’s belief, and a podcast guest’s statement does not become his opinion.

The synthetic voice is a separate speech model using Rhys’s authorized voice reference. It reads generated text; it does not give the language model new knowledge or turn a reply into a statement by the human Rhys.

Look at the measurements.

These figures come from the saved training logs and held-out measurements. Lower loss means better performance on that measured objective; it does not establish factual accuracy, personal fidelity or good conversation.

Measured training losses, separated by model and objective
Actual optimization logs. Different objectives have separate panels. Open chart ↗
Nanochat held-out validation measurements
Scratch-model validation, including the limits of its short SFT run. Open chart ↗
Held-out comparison of Qwen base, adapted and instruction models
Qwen baselines and saved adaptations on held-out objectives. Open chart ↗
Corpus text bytes by collection
Corpus size by text bytes. Text, JSONL metadata, audio and model weights have different sizes. Explore source details ↗

Open the evaluation page ↗ · Explore the experiment lab ↗