Deep-Dive: FTDD-01 — MiniCPM Family (OpenBMB) Diagram count: 4 Tool: Mermaid (primary). Each diagram validated in Mermaid Live Editor.
Type: Linear family tree Purpose: The single diagram that maps the four MiniCPM variants to the modality gap each fills. Read it as a progression: text → denser text → +vision → +audio/full-duplex. Reading the diagram: Left = the 1B on-ramp. Each step right adds either capability or modality. SigLip-400M is the load-bearing component that turns a text base into MiniCPM-V.
flowchart LR
A["MiniCPM5-1B\n~1.08B · text\non-ramp hero"]
B["MiniCPM3-4B\n4B · text\nmid-size reasoning"]
C["MiniCPM-V 4.6\n+ SigLip-400M\nvision-language"]
D["MiniCPM-o 4.5\nomni-modal\nfull-duplex streaming"]
A -->|"adds: density"| B
B -->|"adds: vision encoder"| C
C -->|"adds: audio + duplex"| D
style A fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
style B fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style C fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style D fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
Type: Mapping (dataset → stack layer → course module) Purpose: Show why the Ultra* datasets are the course's data reference. Each dataset maps to a specific steering layer (FT00's stack) and a specific course module — open data lets you point at the signal. Reading the diagram: Three rows, one per dataset. Each row names the dataset, the steering technique it enables, and the course module that uses it as the worked example.
flowchart TB
subgraph DATA["THE Ultra* OPEN DATASETS"]
UC["UltraChat\nmulti-turn dialogue"]
UF["UltraFeedback\npreference / feedback pairs\n(arXiv:2310.01377)"]
UFW["Ultra-FineWeb\ncurated web pretraining mix"]
end
subgraph STEER["STEERING LAYER (FT00 stack)"]
S1["Layer 3 — SFT\ninstruction format"]
S2["Layer 3 — DPO\npreference signal"]
S3["Layer 1 / CPT\nbase distribution"]
end
subgraph MOD["COURSE MODULE"]
M1["FT04, FT12"]
M2["FT05, FT13"]
M3["FT06"]
end
UC --> S1 --> M1
UF --> S2 --> M2
UFW --> S3 --> M3
style DATA fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style STEER fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
style MOD fill:#08080c,stroke:rgba(255,255,255,0.12),color:#9494a0
style UC fill:#08080c,stroke:rgba(94,234,212,0.4),color:#e4e4e8
style UF fill:#08080c,stroke:rgba(94,234,212,0.4),color:#e4e4e8
style UFW fill:#08080c,stroke:rgba(94,234,212,0.4),color:#e4e4e8
Type: Three-pillar Purpose: The three properties that make MiniCPM the course's default base, each mapped to the course need it satisfies. This is the diagram that justifies the choice of base pedagogically. Reading the diagram: Three pillars supporting one claim — "the ideal teaching base." Each pillar is a property (cheap iteration, auditable, Apache-2.0) and each maps to a concrete course requirement.
flowchart TB
P1["CHEAP ITERATION\n1B fine-tunes in minutes\non a consumer GPU"]
P2["AUDITABLE PROVENANCE\nopen weights + data + recipe\npoint at every byte"]
P3["APACHE-2.0\nno MAU / field-of-use\nno license friction"]
CLAIM["THE IDEAL TEACHING BASE\na model you can break,\nreset, and break again"]
P1 --> CLAIM
P2 --> CLAIM
P3 --> CLAIM
style P1 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style P2 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style P3 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style CLAIM fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
Type: Two-track comparison Purpose: The decision diagram for choosing a MiniCPM fine-tuning framework. The deciding factor is modality — text models are a toss-up; vision/omni models favor SWIFT. Reading the diagram: Top track = SWIFT (first-party). Bottom track = LLaMA-Factory (general). The annotation marks the deciding factor.
flowchart TB
subgraph SWIFT["SWIFT (ModelBest / OpenBMB — first-party)"]
direction TB
S1["Native support for ALL MiniCPM variants"]
S2["First-party chat templates & modality handlers"]
S3["Center of gravity = OpenBMB ecosystem"]
S1 --> S2 --> S3
end
subgraph LF["LLaMA-Factory (general-purpose)"]
direction TB
L1["Unified interface for dozens of model families"]
L2["Add MiniCPM as a config change in a multi-model pipeline"]
L3["Vision/omni support lags SWIFT by weeks-months"]
L1 --> L2 --> L3
end
DECISION{"Base modality?\ntext vs vision/omni"}
DECISION -->|"MiniCPM-V / MiniCPM-o\n(first-party modality)"| SWIFT
DECISION -->|"MiniCPM5-1B / 3-4B\n(multi-model pipeline)"| LF
style SWIFT fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
style LF fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style DECISION fill:#08080c,stroke:rgba(240,168,104,0.5),stroke-dasharray: 4 2,color:#f0a868
style S1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style S2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style S3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style L1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style L2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style L3 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
#14141f panel fill, #5eead4 accent for primary, rgba(255,255,255,0.12) for secondary borders, #e4e4e8 / #9494a0 for text. The warn tone (#f0a868) marks the decision node and the lagging-support caveat.flowchart LR/TB, subgraph) supported in current Mermaid (v10.4+).# Diagrams — Deep-Dive FTDD-01: MiniCPM Family (OpenBMB)
**Deep-Dive**: FTDD-01 — MiniCPM Family (OpenBMB)
**Diagram count**: 4
**Tool**: Mermaid (primary). Each diagram validated in [Mermaid Live Editor](https://mermaid.live).
---
## Diagram 1 — The MiniCPM Family (modality axis)
**Type**: Linear family tree
**Purpose**: The single diagram that maps the four MiniCPM variants to the modality gap each fills. Read it as a progression: text → denser text → +vision → +audio/full-duplex.
**Reading the diagram**: Left = the 1B on-ramp. Each step right adds either capability or modality. SigLip-400M is the load-bearing component that turns a text base into MiniCPM-V.
```mermaid
flowchart LR
A["MiniCPM5-1B\n~1.08B · text\non-ramp hero"]
B["MiniCPM3-4B\n4B · text\nmid-size reasoning"]
C["MiniCPM-V 4.6\n+ SigLip-400M\nvision-language"]
D["MiniCPM-o 4.5\nomni-modal\nfull-duplex streaming"]
A -->|"adds: density"| B
B -->|"adds: vision encoder"| C
C -->|"adds: audio + duplex"| D
style A fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
style B fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style C fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style D fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
```
---
## Diagram 2 — The Ultra\* Datasets → Steering Layer Map
**Type**: Mapping (dataset → stack layer → course module)
**Purpose**: Show why the Ultra\* datasets are the course's data reference. Each dataset maps to a specific steering layer (FT00's stack) and a specific course module — open data lets you point at the signal.
**Reading the diagram**: Three rows, one per dataset. Each row names the dataset, the steering technique it enables, and the course module that uses it as the worked example.
```mermaid
flowchart TB
subgraph DATA["THE Ultra* OPEN DATASETS"]
UC["UltraChat\nmulti-turn dialogue"]
UF["UltraFeedback\npreference / feedback pairs\n(arXiv:2310.01377)"]
UFW["Ultra-FineWeb\ncurated web pretraining mix"]
end
subgraph STEER["STEERING LAYER (FT00 stack)"]
S1["Layer 3 — SFT\ninstruction format"]
S2["Layer 3 — DPO\npreference signal"]
S3["Layer 1 / CPT\nbase distribution"]
end
subgraph MOD["COURSE MODULE"]
M1["FT04, FT12"]
M2["FT05, FT13"]
M3["FT06"]
end
UC --> S1 --> M1
UF --> S2 --> M2
UFW --> S3 --> M3
style DATA fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style STEER fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
style MOD fill:#08080c,stroke:rgba(255,255,255,0.12),color:#9494a0
style UC fill:#08080c,stroke:rgba(94,234,212,0.4),color:#e4e4e8
style UF fill:#08080c,stroke:rgba(94,234,212,0.4),color:#e4e4e8
style UFW fill:#08080c,stroke:rgba(94,234,212,0.4),color:#e4e4e8
```
---
## Diagram 3 — Why MiniCPM Is the Teaching Vehicle (three properties)
**Type**: Three-pillar
**Purpose**: The three properties that make MiniCPM the course's default base, each mapped to the course need it satisfies. This is the diagram that justifies the choice of base pedagogically.
**Reading the diagram**: Three pillars supporting one claim — "the ideal teaching base." Each pillar is a property (cheap iteration, auditable, Apache-2.0) and each maps to a concrete course requirement.
```mermaid
flowchart TB
P1["CHEAP ITERATION\n1B fine-tunes in minutes\non a consumer GPU"]
P2["AUDITABLE PROVENANCE\nopen weights + data + recipe\npoint at every byte"]
P3["APACHE-2.0\nno MAU / field-of-use\nno license friction"]
CLAIM["THE IDEAL TEACHING BASE\na model you can break,\nreset, and break again"]
P1 --> CLAIM
P2 --> CLAIM
P3 --> CLAIM
style P1 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style P2 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style P3 fill:#14141f,stroke:rgba(94,234,212,0.6),color:#e4e4e8
style CLAIM fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#5eead4
```
---
## Diagram 4 — SWIFT vs LLaMA-Factory (the fine-tuning decision)
**Type**: Two-track comparison
**Purpose**: The decision diagram for choosing a MiniCPM fine-tuning framework. The deciding factor is modality — text models are a toss-up; vision/omni models favor SWIFT.
**Reading the diagram**: Top track = SWIFT (first-party). Bottom track = LLaMA-Factory (general). The annotation marks the deciding factor.
```mermaid
flowchart TB
subgraph SWIFT["SWIFT (ModelBest / OpenBMB — first-party)"]
direction TB
S1["Native support for ALL MiniCPM variants"]
S2["First-party chat templates & modality handlers"]
S3["Center of gravity = OpenBMB ecosystem"]
S1 --> S2 --> S3
end
subgraph LF["LLaMA-Factory (general-purpose)"]
direction TB
L1["Unified interface for dozens of model families"]
L2["Add MiniCPM as a config change in a multi-model pipeline"]
L3["Vision/omni support lags SWIFT by weeks-months"]
L1 --> L2 --> L3
end
DECISION{"Base modality?\ntext vs vision/omni"}
DECISION -->|"MiniCPM-V / MiniCPM-o\n(first-party modality)"| SWIFT
DECISION -->|"MiniCPM5-1B / 3-4B\n(multi-model pipeline)"| LF
style SWIFT fill:#14141f,stroke:#5eead4,stroke-width:1.5px,color:#e4e4e8
style LF fill:#14141f,stroke:rgba(94,234,212,0.5),color:#e4e4e8
style DECISION fill:#08080c,stroke:rgba(240,168,104,0.5),stroke-dasharray: 4 2,color:#f0a868
style S1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style S2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style S3 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style L1 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style L2 fill:#08080c,stroke:rgba(94,234,212,0.3),color:#e4e4e8
style L3 fill:#08080c,stroke:rgba(240,168,104,0.3),color:#f0a868
```
---
## 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 warn tone (`#f0a868`) marks the decision node and the lagging-support caveat.
- Paste each into [Mermaid Live Editor](https://mermaid.live) to render. All use stable Mermaid syntax (`flowchart LR/TB`, `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.