Add presentation materials for technical talk on transformer training
Five standalone HTML visuals covering the RSA pipeline, training pipeline, gate decomposition, dataset anatomy, and model tier sizing. Slide deck brief describing a 35-slide two-act deck for a data science audience. Handoff note documenting what was created this session. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
145
presentations/visual_training_pipeline.html
Normal file
145
presentations/visual_training_pipeline.html
Normal file
@@ -0,0 +1,145 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Training Pipeline</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
body { background: #0f1117; font-family: 'Segoe UI', system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; }
|
||||
.slide { width: 1000px; padding: 56px 72px; }
|
||||
h2 { color: #e2e8f0; font-size: 1.5rem; font-weight: 400; letter-spacing: 0.05em; text-transform: uppercase; margin-bottom: 52px; text-align: center; }
|
||||
|
||||
.pipeline { display: flex; flex-direction: column; gap: 0; }
|
||||
.row { display: flex; align-items: stretch; gap: 0; }
|
||||
.step { flex: 1; background: #161b27; border-radius: 10px; padding: 22px 20px; border: 1.5px solid #2d3748; }
|
||||
.step-num { font-size: 0.65rem; letter-spacing: 0.14em; text-transform: uppercase; color: #4a5568; margin-bottom: 6px; }
|
||||
.step-title { font-size: 1rem; font-weight: 600; color: #e2e8f0; margin-bottom: 8px; }
|
||||
.step-detail { font-size: 0.8rem; color: #6b7280; line-height: 1.6; }
|
||||
.step-detail code { color: #94a3b8; background: #1e2433; padding: 1px 5px; border-radius: 3px; font-family: 'Courier New', monospace; font-size: 0.78rem; }
|
||||
.step-stat { display: inline-block; margin-top: 8px; font-size: 0.78rem; padding: 3px 10px; border-radius: 20px; font-weight: 600; }
|
||||
|
||||
.step.s1 { border-color: #4a5568; }
|
||||
.step.s2 { border-color: #7c3aed; }
|
||||
.step.s3 { border-color: #3b82f6; }
|
||||
.step.s4 { border-color: #06b6d4; }
|
||||
.step.s5 { border-color: #f59e0b; }
|
||||
.step.s6 { border-color: #22c55e; }
|
||||
|
||||
.s1 .step-title { color: #9ca3af; }
|
||||
.s2 .step-title { color: #a78bfa; }
|
||||
.s3 .step-title { color: #60a5fa; }
|
||||
.s4 .step-title { color: #22d3ee; }
|
||||
.s5 .step-title { color: #fbbf24; }
|
||||
.s6 .step-title { color: #4ade80; }
|
||||
|
||||
.stat-purple { background: #2e1065; color: #a78bfa; }
|
||||
.stat-blue { background: #1e3a5f; color: #60a5fa; }
|
||||
.stat-cyan { background: #0c2a3a; color: #22d3ee; }
|
||||
.stat-amber { background: #2d1a00; color: #fbbf24; }
|
||||
.stat-green { background: #052e16; color: #4ade80; }
|
||||
|
||||
.vgap { height: 12px; display: flex; justify-content: center; align-items: center; }
|
||||
.vgap svg { display: block; }
|
||||
|
||||
.hgap { width: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
||||
.hgap svg { display: block; }
|
||||
|
||||
.note { margin-top: 40px; background: #1a1f2e; border-left: 3px solid #f59e0b; border-radius: 0 8px 8px 0; padding: 16px 20px; }
|
||||
.note-text { font-size: 0.83rem; color: #94a3b8; line-height: 1.6; }
|
||||
.note-text strong { color: #fbbf24; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="slide">
|
||||
<h2>From Run Artifacts to Trained Specialist</h2>
|
||||
<div class="pipeline">
|
||||
|
||||
<div class="row">
|
||||
<div class="step s1">
|
||||
<div class="step-num">Step 1</div>
|
||||
<div class="step-title">whetstone_DSL Run Corpus</div>
|
||||
<div class="step-detail">
|
||||
Real pipeline runs stored as JSON log artifacts.<br>
|
||||
Each run records taskitem decisions, prerequisite ops, worker routing.
|
||||
<span class="step-stat stat-purple">1000 runs extracted</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hgap">
|
||||
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</div>
|
||||
<div class="step s2">
|
||||
<div class="step-num">Step 2</div>
|
||||
<div class="step-title">Gate Extraction</div>
|
||||
<div class="step-detail">
|
||||
<code>extract_gate_rows.py</code> parses each run.<br>
|
||||
Isolates one gate's decision context and label per row.<br>
|
||||
Rejects rows with schema drift or sibling-uniform labels.
|
||||
<span class="step-stat stat-purple">1297 accepted / 24 schema-drift rejected</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hgap">
|
||||
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</div>
|
||||
<div class="step s3">
|
||||
<div class="step-num">Step 3</div>
|
||||
<div class="step-title">Gate Decomposition</div>
|
||||
<div class="step-detail">
|
||||
Analysis revealed <code>needs_validate_intake</code> is always True — not a decision surface.<br>
|
||||
Gate reduces to <strong style="color:#60a5fa">two independent binary classifiers</strong>.
|
||||
<span class="step-stat stat-blue">2 gates from 1</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="vgap">
|
||||
<svg width="860" height="12"><path d="M430 2 L430 10 M426 6 L430 10 L434 6" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="step s4">
|
||||
<div class="step-num">Step 4</div>
|
||||
<div class="step-title">TSV Generation</div>
|
||||
<div class="step-detail">
|
||||
<code>gen_prereq_op_rsa_data.py</code> converts rows to Fabricate TSV format.<br>
|
||||
Format: <code>label <TAB> 0 <TAB> text</code><br>
|
||||
Text composed from: title · reasons · acceptance criteria · constraints.
|
||||
<span class="step-stat stat-cyan">85% train / 15% eval split · seed=42</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hgap">
|
||||
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</div>
|
||||
<div class="step s5">
|
||||
<div class="step-num">Step 5</div>
|
||||
<div class="step-title">Fabricate Training</div>
|
||||
<div class="step-detail">
|
||||
Tiny transformer framework. GPU training on dedicated desktop.<br>
|
||||
~213K parameter model architecture.<br>
|
||||
Binary classification head per gate.
|
||||
<span class="step-stat stat-amber">4000 steps per specialist</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hgap">
|
||||
<svg width="12" height="40"><path d="M6 4 L6 36 M2 28 L6 36 L10 28" stroke="#4a5568" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</div>
|
||||
<div class="step s6">
|
||||
<div class="step-num">Step 6</div>
|
||||
<div class="step-title">Specialist Checkpoint</div>
|
||||
<div class="step-detail">
|
||||
Serialized model: ~800KB on disk.<br>
|
||||
Loaded at runtime by the RSA gate layer.<br>
|
||||
Returns: label · confidence · abstain flag.
|
||||
<span class="step-stat stat-green">~800KB per specialist</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="note">
|
||||
<div class="note-text">
|
||||
<strong>Corpus caveat:</strong> The 1000-run dataset contains only ~17 unique text templates — the taskitem schema was designed to record outputs, not discriminative inputs. These baselines are intentionally weak. The pipeline is correct; the signal improves when the taskitem schema carries RSA-native fields.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user