FORGE-Nano-Benchmark / FORGE_HERO.html
ilessio-aiflowlab's picture
Upload FORGE_HERO.html with huggingface_hub
4184cbe verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FORGE // Edge Robotics AI</title>
<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@300;400;700&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
:root {
--orange: #FF3B00;
--black: #050505;
--offwhite: #f3f3f3;
--dark: #0A0A0A;
--mid: #1A1A1A;
--green: #00CC66;
--blue: #0066FF;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: 'JetBrains Mono', monospace; background: var(--black); color: var(--offwhite); overflow-x: hidden; }
h1,h2,h3,.label { font-family: 'Oswald', sans-serif; text-transform: uppercase; font-weight: 700; }
/* HERO */
.hero {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
position: relative;
padding: 2rem;
}
.hero::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
background:
repeating-linear-gradient(0deg, transparent, transparent 49px, rgba(255,59,0,0.03) 50px),
repeating-linear-gradient(90deg, transparent, transparent 49px, rgba(255,59,0,0.03) 50px);
pointer-events: none;
}
.hero::after {
content: '';
position: absolute;
top: 50%; left: 50%;
width: 800px; height: 800px;
transform: translate(-50%, -50%);
background: radial-gradient(circle, rgba(255,59,0,0.06) 0%, transparent 70%);
pointer-events: none;
}
.hero-badge {
font-family: 'Oswald', sans-serif;
font-weight: 300;
font-size: 0.85rem;
letter-spacing: 8px;
color: var(--orange);
text-transform: uppercase;
border: 1px solid rgba(255,59,0,0.3);
padding: 0.5rem 2rem;
margin-bottom: 2rem;
position: relative;
z-index: 1;
}
.hero h1 {
font-size: 8rem;
letter-spacing: 20px;
line-height: 0.9;
position: relative;
z-index: 1;
}
.hero h1 span { color: var(--orange); }
.hero-tagline {
font-family: 'Oswald', sans-serif;
font-weight: 300;
font-size: 1.6rem;
letter-spacing: 6px;
color: #666;
margin-top: 1.5rem;
position: relative;
z-index: 1;
}
.hero-equation {
font-size: 1.1rem;
color: #555;
margin-top: 2.5rem;
position: relative;
z-index: 1;
}
.hero-equation span { color: var(--orange); font-weight: 700; }
.scroll-cue {
position: absolute;
bottom: 2rem;
font-size: 0.7rem;
letter-spacing: 4px;
color: #333;
text-transform: uppercase;
animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse { 0%,100% { opacity: 0.3; } 50% { opacity: 1; } }
/* IMPACT BAR */
.impact {
display: grid;
grid-template-columns: repeat(4, 1fr);
border-top: 6px solid var(--orange);
border-bottom: 6px solid var(--orange);
}
.impact-item {
text-align: center;
padding: 3rem 1rem;
border-right: 1px solid #222;
position: relative;
}
.impact-item:last-child { border-right: none; }
.impact-num {
font-family: 'Oswald', sans-serif;
font-size: 4.5rem;
font-weight: 700;
color: var(--orange);
line-height: 1;
}
.impact-unit {
font-family: 'Oswald', sans-serif;
font-size: 1.5rem;
font-weight: 300;
color: var(--orange);
}
.impact-label {
font-size: 0.65rem;
letter-spacing: 3px;
color: #666;
text-transform: uppercase;
margin-top: 0.5rem;
}
/* SECTION */
.section {
padding: 5rem 3rem;
max-width: 1200px;
margin: 0 auto;
}
.section-label {
font-family: 'Oswald', sans-serif;
font-weight: 300;
font-size: 0.75rem;
letter-spacing: 6px;
color: var(--orange);
text-transform: uppercase;
margin-bottom: 0.5rem;
}
.section-title {
font-size: 2.5rem;
letter-spacing: 6px;
color: var(--offwhite);
margin-bottom: 2rem;
}
/* ARCHITECTURE */
.arch-flow {
display: flex;
align-items: stretch;
gap: 0;
margin: 3rem 0;
}
.arch-block {
flex: 1;
background: var(--mid);
border: 2px solid #2A2A2A;
padding: 2rem 1.5rem;
text-align: center;
position: relative;
}
.arch-block.active { border-color: var(--orange); }
.arch-block .block-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.arch-block .block-name {
font-family: 'Oswald', sans-serif;
font-size: 1rem;
letter-spacing: 2px;
color: var(--orange);
text-transform: uppercase;
}
.arch-block .block-detail {
font-size: 0.7rem;
color: #888;
margin-top: 0.5rem;
}
.arch-block .block-params {
font-family: 'Oswald', sans-serif;
font-size: 1.5rem;
color: var(--offwhite);
margin-top: 0.8rem;
}
.arch-arrow {
display: flex;
align-items: center;
font-size: 1.5rem;
color: var(--orange);
padding: 0 0.3rem;
}
/* VS SECTION */
.vs-container {
display: grid;
grid-template-columns: 1fr 80px 1fr;
gap: 0;
align-items: stretch;
margin: 3rem 0;
}
.vs-card {
background: var(--mid);
border: 2px solid #2A2A2A;
padding: 3rem 2rem;
}
.vs-card.winner { border-color: var(--green); }
.vs-card .card-label {
font-family: 'Oswald', sans-serif;
font-size: 0.7rem;
letter-spacing: 4px;
text-transform: uppercase;
margin-bottom: 1.5rem;
}
.vs-card .card-label.old { color: #555; }
.vs-card .card-label.new { color: var(--green); }
.vs-metric {
display: flex;
justify-content: space-between;
align-items: baseline;
padding: 0.8rem 0;
border-bottom: 1px solid #222;
}
.vs-metric .metric-name { font-size: 0.75rem; color: #888; }
.vs-metric .metric-val { font-family: 'Oswald', sans-serif; font-size: 1.4rem; }
.vs-metric .metric-val.dim { color: #555; }
.vs-metric .metric-val.bright { color: var(--green); }
.vs-divider {
display: flex;
align-items: center;
justify-content: center;
font-family: 'Oswald', sans-serif;
font-size: 2rem;
color: var(--orange);
background: var(--dark);
border-top: 2px solid #2A2A2A;
border-bottom: 2px solid #2A2A2A;
}
/* RESULTS GRID */
.results-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
margin: 3rem 0;
}
.result-card {
background: var(--mid);
border: 2px solid #2A2A2A;
padding: 2rem;
border-left: 4px solid var(--orange);
}
.result-card .rc-title {
font-family: 'Oswald', sans-serif;
font-size: 0.8rem;
letter-spacing: 3px;
color: var(--orange);
text-transform: uppercase;
margin-bottom: 1rem;
}
.result-card .rc-num {
font-family: 'Oswald', sans-serif;
font-size: 3rem;
font-weight: 700;
color: var(--offwhite);
line-height: 1;
}
.result-card .rc-sub {
font-size: 0.7rem;
color: #666;
margin-top: 0.5rem;
}
/* CONFIG TABLE */
.config-box {
background: var(--mid);
border: 2px solid var(--orange);
padding: 2rem;
margin: 3rem 0;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
.config-box .config-header {
grid-column: 1 / -1;
font-family: 'Oswald', sans-serif;
font-size: 1.2rem;
letter-spacing: 4px;
color: var(--orange);
}
.config-row {
display: flex;
justify-content: space-between;
padding: 0.5rem 0;
border-bottom: 1px solid #222;
font-size: 0.8rem;
}
.config-row .ck { color: #888; }
.config-row .cv { color: var(--offwhite); font-weight: 700; }
/* TEACHERS */
.teacher-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 1rem;
margin: 2rem 0;
}
.teacher-card {
background: var(--mid);
border: 1px solid #2A2A2A;
padding: 1.5rem 1rem;
text-align: center;
}
.teacher-card .tc-name {
font-family: 'Oswald', sans-serif;
font-size: 0.85rem;
color: var(--orange);
letter-spacing: 1px;
}
.teacher-card .tc-params {
font-family: 'Oswald', sans-serif;
font-size: 1.5rem;
color: var(--offwhite);
margin: 0.5rem 0;
}
.teacher-card .tc-type { font-size: 0.65rem; color: #666; }
/* CTA */
.cta {
text-align: center;
padding: 5rem 2rem;
border-top: 6px solid var(--orange);
background: linear-gradient(180deg, var(--mid) 0%, var(--black) 100%);
}
.cta h2 {
font-size: 2.5rem;
letter-spacing: 8px;
margin-bottom: 1rem;
}
.cta h2 span { color: var(--orange); }
.cta-sub {
font-size: 0.85rem;
color: #666;
max-width: 600px;
margin: 0 auto 2rem;
}
.cta-links {
display: flex;
justify-content: center;
gap: 2rem;
}
.cta-link {
font-family: 'Oswald', sans-serif;
font-size: 0.9rem;
letter-spacing: 3px;
text-transform: uppercase;
color: var(--offwhite);
text-decoration: none;
padding: 1rem 2.5rem;
border: 2px solid var(--orange);
transition: all 0.2s;
}
.cta-link:hover { background: var(--orange); color: var(--black); }
.cta-link.primary { background: var(--orange); color: var(--black); }
.cta-link.primary:hover { background: var(--offwhite); border-color: var(--offwhite); }
/* FOOTER */
.footer {
text-align: center;
padding: 2rem;
font-size: 0.65rem;
color: #333;
letter-spacing: 2px;
}
.footer span { color: var(--orange); }
@media (max-width: 900px) {
.hero h1 { font-size: 4rem; letter-spacing: 10px; }
.impact { grid-template-columns: repeat(2, 1fr); }
.arch-flow { flex-direction: column; }
.arch-arrow { transform: rotate(90deg); justify-content: center; padding: 0.5rem; }
.vs-container { grid-template-columns: 1fr; }
.results-grid { grid-template-columns: 1fr; }
.config-box { grid-template-columns: 1fr; }
.teacher-grid { grid-template-columns: repeat(2, 1fr); }
.cta-links { flex-direction: column; align-items: center; }
}
</style>
</head>
<body>
<!-- ========== HERO ========== -->
<div class="hero">
<div class="hero-badge">Robot Flow Labs // ANIMA Stack</div>
<h1><span>FOR</span>GE</h1>
<div class="hero-tagline">Fast Optimized Robot Generation Engine</div>
<div class="hero-equation">
<span>7B</span> teacher &rarr; <span>&lt;1B</span> student &rarr; <span>14.1 fps</span> on edge GPU
</div>
<div class="scroll-cue">&darr; scroll &darr;</div>
</div>
<!-- ========== IMPACT ========== -->
<div class="impact">
<div class="impact-item">
<div class="impact-num">9<span class="impact-unit">x</span></div>
<div class="impact-label">Model Compression</div>
</div>
<div class="impact-item">
<div class="impact-num">14.1</div>
<div class="impact-label">FPS on NVIDIA L4 (FP16)</div>
</div>
<div class="impact-item">
<div class="impact-num">28<span class="impact-unit">x</span></div>
<div class="impact-label">Faster Than Teacher</div>
</div>
<div class="impact-item">
<div class="impact-num">&lt;600<span class="impact-unit">MB</span></div>
<div class="impact-label">INT4 Deploy Size</div>
</div>
</div>
<!-- ========== THE PROBLEM ========== -->
<div class="section">
<div class="section-label">The Problem</div>
<h2 class="section-title">VLAs Are Too Big for Robots</h2>
<p style="color:#888;font-size:0.85rem;max-width:800px;margin-bottom:2rem;">
Vision-Language-Action models (OpenVLA, RT-2, Pi0) achieve state-of-the-art robot manipulation
— but at 7B+ parameters, they run at 0.5 fps. Robots need 10+ fps for real-time control.
FORGE solves this with automated knowledge distillation.
</p>
<div class="vs-container">
<div class="vs-card">
<div class="card-label old">Before // OpenVLA-7B</div>
<div class="vs-metric"><span class="metric-name">Parameters</span><span class="metric-val dim">7,000M</span></div>
<div class="vs-metric"><span class="metric-name">Throughput</span><span class="metric-val dim">~0.5 fps</span></div>
<div class="vs-metric"><span class="metric-name">Latency</span><span class="metric-val dim">~2,000 ms</span></div>
<div class="vs-metric"><span class="metric-name">Model Size</span><span class="metric-val dim">~13 GB</span></div>
<div class="vs-metric"><span class="metric-name">Edge Deploy</span><span class="metric-val dim">No</span></div>
</div>
<div class="vs-divider">vs</div>
<div class="vs-card winner">
<div class="card-label new">After // FORGE-Nano</div>
<div class="vs-metric"><span class="metric-name">Parameters</span><span class="metric-val bright">774M</span></div>
<div class="vs-metric"><span class="metric-name">Throughput</span><span class="metric-val bright">14.1 fps</span></div>
<div class="vs-metric"><span class="metric-name">Latency</span><span class="metric-val bright">71 ms</span></div>
<div class="vs-metric"><span class="metric-name">Model Size</span><span class="metric-val bright">&lt;600 MB</span></div>
<div class="vs-metric"><span class="metric-name">Edge Deploy</span><span class="metric-val bright">Jetson + Apple Silicon</span></div>
</div>
</div>
</div>
<!-- ========== ARCHITECTURE ========== -->
<div class="section">
<div class="section-label">Architecture</div>
<h2 class="section-title">4-Stage Distillation Pipeline</h2>
<div class="arch-flow">
<div class="arch-block active">
<div class="block-icon">&#x1F441;</div>
<div class="block-name">SigLIP-SO400M</div>
<div class="block-detail">Vision Encoder (frozen)</div>
<div class="block-params">472M</div>
</div>
<div class="arch-arrow">&rarr;</div>
<div class="arch-block active">
<div class="block-icon">&#x1F310;</div>
<div class="block-name">Bridge Attention</div>
<div class="block-detail">64 queries, 4 layers</div>
<div class="block-params">40M</div>
</div>
<div class="arch-arrow">&rarr;</div>
<div class="arch-block active">
<div class="block-icon">&#x1F9E0;</div>
<div class="block-name">Qwen2.5-0.5B</div>
<div class="block-detail">LoRA rank=64</div>
<div class="block-params">494M</div>
</div>
<div class="arch-arrow">&rarr;</div>
<div class="arch-block active">
<div class="block-icon">&#x1F3AF;</div>
<div class="block-name">Flow Head</div>
<div class="block-detail">1-step inference</div>
<div class="block-params">1.7M</div>
</div>
</div>
<div style="text-align:center;font-size:0.8rem;color:#666;">
Total: <span style="color:var(--orange);font-weight:700;">967.9M</span> params &rarr;
Pruned: <span style="color:var(--green);font-weight:700;">774.1M</span> params &rarr;
INT4: <span style="color:var(--green);font-weight:700;">&lt;600 MB</span>
</div>
</div>
<!-- ========== BENCHMARK RESULTS ========== -->
<div class="section">
<div class="section-label">GPU Benchmarks // 4x NVIDIA L4</div>
<h2 class="section-title">Measured Performance</h2>
<div class="results-grid">
<div class="result-card">
<div class="rc-title">Best Speed</div>
<div class="rc-num">14.1 fps</div>
<div class="rc-sub">Flow + LoRA-64 + 60% prune, FP16</div>
</div>
<div class="result-card">
<div class="rc-title">Best Training</div>
<div class="rc-num">92.3%</div>
<div class="rc-sub">Loss reduction in 30 steps</div>
</div>
<div class="result-card">
<div class="rc-title">Most Compressed</div>
<div class="rc-num">739M</div>
<div class="rc-sub">50% pruned, functional model</div>
</div>
<div class="result-card">
<div class="rc-title">Multi-GPU</div>
<div class="rc-num">33.6 fps</div>
<div class="rc-sub">Single GPU, batch=32, FP16</div>
</div>
<div class="result-card">
<div class="rc-title">Multi-Teacher</div>
<div class="rc-num">5</div>
<div class="rc-sub">Teachers with learned routing</div>
</div>
<div class="result-card">
<div class="rc-title">Test Suite</div>
<div class="rc-num">524</div>
<div class="rc-sub">Tests passing, 0 failures</div>
</div>
</div>
<!-- Recommended Config -->
<div class="config-box">
<div class="config-header">Recommended Production Config</div>
<div>
<div class="config-row"><span class="ck">variant</span><span class="cv">nano</span></div>
<div class="config-row"><span class="ck">action_head</span><span class="cv">flow</span></div>
<div class="config-row"><span class="ck">lora_rank</span><span class="cv">64</span></div>
<div class="config-row"><span class="ck">prune_ratio</span><span class="cv">0.60</span></div>
</div>
<div>
<div class="config-row"><span class="ck">params</span><span class="cv">774.1M</span></div>
<div class="config-row"><span class="ck">fps (FP16)</span><span class="cv">14.1</span></div>
<div class="config-row"><span class="ck">deploy_size</span><span class="cv">&lt;600 MB</span></div>
<div class="config-row"><span class="ck">target</span><span class="cv">Jetson + Apple Silicon</span></div>
</div>
</div>
</div>
<!-- ========== TEACHERS ========== -->
<div class="section">
<div class="section-label">Compatibility</div>
<h2 class="section-title">Any Teacher, Any Robot</h2>
<div class="teacher-grid">
<div class="teacher-card">
<div class="tc-name">OpenVLA-7B</div>
<div class="tc-params">7.6B</div>
<div class="tc-type">Token-AR // H=1</div>
</div>
<div class="teacher-card">
<div class="tc-name">RDT2-FM</div>
<div class="tc-params">1.2B</div>
<div class="tc-type">Diffusion // H=8</div>
</div>
<div class="teacher-card">
<div class="tc-name">SmolVLA</div>
<div class="tc-params">0.5B</div>
<div class="tc-type">Parallel // H=1</div>
</div>
<div class="teacher-card">
<div class="tc-name">BitVLA</div>
<div class="tc-params">5.9B</div>
<div class="tc-type">Quantized // H=1</div>
</div>
<div class="teacher-card">
<div class="tc-name">Pi0</div>
<div class="tc-params">3.0B</div>
<div class="tc-type">Flow // H=4</div>
</div>
</div>
<div style="text-align:center;margin-top:1rem;">
<span style="font-size:0.75rem;color:#666;">Robots: </span>
<span style="font-size:0.8rem;color:var(--orange);">Franka</span>
<span style="font-size:0.75rem;color:#444;"> // </span>
<span style="font-size:0.8rem;color:var(--orange);">ALOHA</span>
<span style="font-size:0.75rem;color:#444;"> // </span>
<span style="font-size:0.8rem;color:var(--orange);">xArm</span>
<span style="font-size:0.75rem;color:#444;"> // </span>
<span style="font-size:0.8rem;color:var(--orange);">UR5e</span>
<span style="font-size:0.75rem;color:#444;"> // </span>
<span style="font-size:0.8rem;color:#888;">+ any 6-14 DoF arm</span>
</div>
</div>
<!-- ========== CTA ========== -->
<div class="cta">
<h2><span>FORGE</span> is Open Source</h2>
<div class="cta-sub">
Part of the ANIMA agentic robotics stack. Apache 2.0 licensed.
Built for production deployment on edge hardware.
</div>
<div class="cta-links">
<a href="https://github.com/RobotFlow-Labs/anima-forge-distillation-pipeline" class="cta-link primary">GitHub</a>
<a href="https://huggingface.co/robotflowlabs/FORGE-Nano-Benchmark" class="cta-link">HuggingFace</a>
<a href="https://robotflowlabs.com" class="cta-link">Robot Flow Labs</a>
</div>
</div>
<div class="footer">
FORGE v2 // <span>All metrics measured on real NVIDIA L4 hardware</span> // March 2026 // Robot Flow Labs
</div>
</body>
</html>