# Diagrams — Deep-Dive FTDD-02: OLMo 2/3 + Tülu 3 (Ai2)

**Deep-Dive**: FTDD-02 — OLMo 2/3 + Tülu 3 (Ai2)
**Diagram count**: 4
**Tool**: Mermaid (primary). Each diagram validated in [Mermaid Live Editor](https://mermaid.live).

---

## Diagram 1 — The Tülu 3 Post-Training Pipeline (three stages)

**Type**: Linear pipeline
**Purpose**: The single most important diagram in this deep-dive. Shows Tülu 3's three-stage post-training pipeline (SFT → DPO → RLVR) and maps each stage to the FT00 steering stack layer. This is what "open post-training recipe" looks like as a flow.
**Reading the diagram**: Top = the OLMo base (Layer 1). Each downward step is a Layer-3 steer. The right column names the FT module that teaches each stage. Everything is released — data, code, configs.

```mermaid
flowchart TB
  BASE["OLMO BASE MODEL\n(Layer 1 — pretrained weights)\nopen weights + data + code"]

  SFT["[1] SFT — Supervised Fine-Tuning\non curated instruction data\n(format, instruction-following)"]
  DPO["[2] DPO — Direct Preference Optimization\non preference pairs\n(preference alignment)"]
  RLVR["[3] RLVR — Reinforcement Learning\non Verifiable Rewards\n(reasoning: math, code, logic)"]

  RESULT["TÜLU 3 INSTRUCT MODEL\n(full post-training recipe, released)"]

  BASE --> SFT --> DPO --> RLVR --> RESULT

  style BASE fill:#14141f,stroke:rgba(255,255,255,0.12),color:#9494a0
  style SFT fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
  style DPO fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
  style RLVR fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
  style RESULT fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
```

---

## Diagram 2 — OLMo 3's Three Variants (the steer axis)

**Type**: Branching from a shared base
**Purpose**: Show why OLMo 3's base/instruct/think release is a pedagogical gift — the same base, three steers, directly comparable. Each variant is the base plus a Layer-3 steer (or none).
**Reading the diagram**: Center = the shared OLMo 3 base. Three branches = the three variants. Each branch annotates what was added. Contrast with MiniCPM, whose variants differ by *modality*, not by *steer*.

```mermaid
flowchart TB
  BASE["OLMO 3 BASE\n7B / 32B\n(Layer 1 — pretrained)"]

  V1["base variant\n(no post-training)\n= Layer 1 only"]
  V2["instruct variant\n+ SFT + DPO\n= Layer 3 (format + preference)"]
  V3["think variant\n+ RLVR\n= Layer 3 (+ reasoning)"]

  BASE --> V1
  BASE --> V2
  BASE --> V3

  style BASE fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
  style V1 fill:#14141f,stroke:rgba(255,255,255,0.12),color:#9494a0
  style V2 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
  style V3 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
```

---

## Diagram 3 — Fully-Open: What You Get (the five components)

**Type**: Stack of components
**Purpose**: Visualize what "fully-open" (the FT02 open-recipe tier, strictest end) actually delivers. Five components, each enabling a distinct property. This is the diagram that justifies why OLMo/Tülu satisfy air-gap/regulated requirements.
**Reading the diagram**: Bottom = weights (the minimum). Each layer above adds a component. The right column names the property each component enables. Drop any layer and the property it enables is lost.

```mermaid
flowchart TB
  W["WEIGHTS\nthe trained tensors"]
  D["+ DATA\nthe actual training corpus"]
  C["+ CODE\nthe training scripts & configs"]
  K["+ CHECKPOINTS\nintermediate training states"]
  E["+ EVAL\nthe evaluation suite"]

  W --> D --> C --> K --> E

  P1["use the model"]
  P2["audit what it saw"]
  P3["reproduce the run"]
  P4["study training dynamics"]
  P5["verify the benchmarks"]

  W -.-> P1
  D -.-> P2
  C -.-> P3
  K -.-> P4
  E -.-> P5

  style W fill:#14141f,stroke:rgba(255,255,255,0.12),color:#9494a0
  style D fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style C fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
  style K fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
  style E fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
  style P1 fill:#08080c,stroke:rgba(255,255,255,0.08),color:#9494a0
  style P2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style P3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style P4 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style P5 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
```

---

## Diagram 4 — OpenBMB vs Ai2 (two open philosophies)

**Type**: Side-by-side comparison
**Purpose**: The decision diagram for choosing between the two open families. Both are open-data/open-recipe, but their centers of gravity differ: MiniCPM is product/edge, OLMo/Tülu is research/audit.
**Reading the diagram**: Left = OpenBMB/MiniCPM. Right = Ai2/OLMo+Tülu. The rows compare orientation, sizes, variants, and default use case. The summary line captures the heuristic.

```mermaid
flowchart LR
  subgraph OPENBMB["OPENBMB / MiniCPM"]
    O1["ORIENTATION: product / edge"]
    O2["SIZES: 1B–4B + multimodal"]
    O3["VARIANTS: modality axis\n(text / vision / omni)"]
    O4["USE: ship a small model\non edge hardware"]
    O1 --> O2 --> O3 --> O4
  end
  subgraph AI2["AI2 / OLMo + TÜLU"]
    A1["ORIENTATION: research"]
    A2["SIZES: 7B–405B, text-focused"]
    A3["VARIANTS: steer axis\n(base / instruct / think)"]
    A4["USE: reproduce, audit,\nresearch the stack"]
    A1 --> A2 --> A3 --> A4
  end

  SUMMARY["SUMMARY:\nMiniCPM is what you SHIP.\nOLMo/Tülu is what you STUDY."]

  OPENBMB --> SUMMARY
  AI2 --> SUMMARY

  style OPENBMB fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style AI2 fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
  style SUMMARY fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
  style O1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style O2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style O3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style O4 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style A1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style A2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style A3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
  style A4 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
```

---

## Validation notes

- All four diagrams use the course design system colors: `#14141f` panel fill, `#5eead4` accent for primary, `rgba(255,255,255,0.12)` for secondary borders, `#e4e4e8` / `#9494a0` for text. The `base` variant and the `weights` component are deliberately dimmed (secondary border) to mark them as the un-steered / minimum tiers.
- Paste each into [Mermaid Live Editor](https://mermaid.live) to render. All use stable Mermaid syntax (`flowchart TB/LR`, `subgraph`) supported in current Mermaid (v10.4+).
- For the slide deck (artifact 03), these are rendered as static SVG/PNG captures from Mermaid Live, inlined into reveal.js.
