ForgeSight / frontend /src /pages /Blueprint.jsx
rasAli02's picture
🐛 Fix: Resolve backend 500 on Vercel by implementing FastAPI and syncing dependencies
1035089
import { useEffect, useState, useRef } from "react";
import mermaid from "mermaid";
import { forgesight } from "@/lib/api";
import { Cpu, HardDrive, Server, BookOpen, Bot, Rocket, ArrowRight, Terminal, Zap, ShieldCheck } from "lucide-react";
const LAYER_ICONS = {
Hardware: Cpu, Runtime: HardDrive, Serving: Server,
Model: BookOpen, Agents: Bot, Product: Rocket,
};
export default function Blueprint() {
const [data, setData] = useState(null);
const mermaidRef = useRef(null);
useEffect(() => {
forgesight.getBlueprint().then((d) => setData(d)).catch(() => {});
mermaid.initialize({
theme: "dark",
startOnLoad: true,
securityLevel: "loose",
themeVariables: {
primaryColor: "#ED1C24",
primaryTextColor: "#fff",
primaryBorderColor: "#ED1C24",
lineColor: "#333",
secondaryColor: "#141416",
tertiaryColor: "#0A0A0A",
fontSize: "12px",
fontFamily: "JetBrains Mono",
},
});
}, []);
useEffect(() => {
if (data && mermaidRef.current) {
mermaid.contentLoaded();
}
}, [data]);
const pipelineDiagram = `
graph TD
subgraph "Data Acquisition"
IMG[Image Feed]
end
subgraph "AMD MI300X Cluster"
VLLM[vLLM Engine]
QWEN[Qwen2-VL-7B]
VLLM --- QWEN
end
subgraph "Agentic Pipeline"
I[Inspector Agent]
D[Diagnose Agent]
A[Action Agent]
R[Report Agent]
I --> D --> A --> R
end
IMG --> I
I -.-> VLLM
D -.-> VLLM
A -.-> VLLM
R -.-> VLLM
classDef device font-family:Inter,fill:#0d0d10,stroke:#333,color:#888
classDef compute fill:#ED1C24,stroke:#ED1C24,color:#fff,stroke-width:2px
classDef agent fill:#141416,stroke:#ED1C24,color:#fff,padding:10px
class IMG device
class VLLM,QWEN compute
class I,D,A,R agent
`;
return (
<div className="mx-auto max-w-[1400px] px-6 py-10 space-y-20" data-testid="blueprint-page">
{/* HERO SECTION */}
<header className="relative py-10 overflow-hidden">
<div className="absolute top-0 right-0 w-[600px] h-[600px] bg-[#ED1C24]/5 blur-[120px] rounded-full -translate-y-1/2 translate-x-1/4 -z-10" />
<div className="grid lg:grid-cols-2 gap-16 items-center">
<div className="space-y-6">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-[#ED1C24]/30 bg-[#ED1C24]/5 text-[#ED1C24] font-mono text-[10px] tracking-widest uppercase">
<Zap className="w-3 h-3" /> System Architecture
</div>
<h1 className="font-display font-black tracking-tighter text-5xl md:text-7xl leading-[0.9]">
Built for <span className="text-[#ED1C24]">Pure Performance.</span>
</h1>
<p className="text-zinc-400 text-lg max-w-lg leading-relaxed">
ForgeSight is architected to leverage the massive memory bandwidth of the AMD MI300X.
A six-layer stack designed for zero-latency industrial inference.
</p>
<div className="flex items-center gap-8 pt-4">
<Stat label="Hardware" value="MI300X" />
<Stat label="VRAM" value="192GB" />
<Stat label="Bandwidth" value="5.3 TB/s" />
</div>
</div>
<div className="glass p-8 fs-glow border-white/5 relative group">
<div className="absolute inset-0 bg-gradient-to-br from-[#ED1C24]/10 to-transparent opacity-0 group-hover:opacity-100 transition-opacity" />
<div className="mermaid w-full overflow-hidden" ref={mermaidRef}>
{pipelineDiagram}
</div>
</div>
</div>
</header>
{/* STACK LAYERS */}
<section>
<div className="flex items-end justify-between mb-10">
<div>
<div className="fs-label mb-2">The Stack</div>
<h2 className="font-display font-black text-3xl tracking-tight">Top-to-Bottom Integration</h2>
</div>
<div className="text-zinc-500 font-mono text-xs hidden md:block">06 TOTAL LAYERS</div>
</div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{data?.stack?.map((layer, i) => {
const Icon = LAYER_ICONS[layer.layer] || Cpu;
return (
<div key={i} className="glass p-6 group hover:border-[#ED1C24]/50 transition-all duration-500 fs-glow">
<div className="flex items-start justify-between mb-6">
<div className="w-10 h-10 border border-[#ED1C24]/30 group-hover:border-[#ED1C24] text-[#ED1C24] flex items-center justify-center transition-colors">
<Icon className="w-5 h-5" />
</div>
<span className="font-mono text-[10px] text-zinc-600">L{String(i + 1).padStart(2, "0")}</span>
</div>
<div className="space-y-2">
<div className="fs-label text-zinc-500">{layer.layer}</div>
<h3 className="font-display font-black text-xl group-hover:text-[#ED1C24] transition-colors">{layer.title}</h3>
<p className="text-sm text-zinc-400 leading-relaxed min-h-[60px]">{layer.why}</p>
</div>
<div className="mt-6 pt-6 border-t border-white/5">
<div className="font-mono text-[10px] text-zinc-500 mb-2 uppercase">Tech Spec</div>
<div className="text-xs text-white font-mono bg-white/5 px-2 py-1 inline-block">{layer.detail}</div>
</div>
</div>
);
})}
</div>
</section>
{/* FINETUNE RECIPE */}
{data?.finetune_recipe && (
<section className="relative">
<div className="absolute inset-0 bg-[#ED1C24]/5 blur-[100px] -z-10" />
<div className="glass p-10 border-white/5 space-y-10">
<div className="flex items-start justify-between flex-wrap gap-6">
<div>
<div className="fs-label mb-2 flex items-center gap-2">
<Terminal className="w-3 h-3" /> Training Protocol
</div>
<h2 className="font-display font-black tracking-tighter text-4xl">QLoRA Optimization</h2>
<p className="text-zinc-400 mt-2">Maximum efficiency training recipe for Qwen2-VL-7B.</p>
</div>
<div className="flex items-center gap-3">
<div className="px-4 py-2 bg-[#ED1C24] text-white font-display font-black text-sm tracking-tight">8× MI300X</div>
<div className="px-4 py-2 border border-white/10 text-white font-mono text-xs">BF16 MIXED</div>
</div>
</div>
<div className="grid md:grid-cols-3 gap-8">
<SpecItem icon={BookOpen} label="Base Model" value={data.finetune_recipe.base_model} />
<SpecItem icon={Server} label="Serving Engine" value={data.finetune_recipe.serve_with} />
<SpecItem icon={ShieldCheck} label="Compute Platform" value={data.finetune_recipe.hardware} />
</div>
<div className="relative">
<div className="absolute top-4 right-4 flex gap-2">
<div className="w-2 h-2 rounded-full bg-zinc-700" />
<div className="w-2 h-2 rounded-full bg-zinc-700" />
<div className="w-2 h-2 rounded-full bg-zinc-700" />
</div>
<pre className="font-mono text-[13px] leading-relaxed text-zinc-300 bg-[#050505] border border-white/10 p-8 pt-12 overflow-x-auto custom-scrollbar shadow-2xl">
<code className="text-blue-400"># ForgeSight ROCm Optimized Fine-tune</code>{"\n"}
<code className="text-[#ED1C24]">accelerate launch</code> --mixed_precision bf16 train_qlora.py \{"\n"}
{" "}--base <span className="text-green-400">Qwen/Qwen2-VL-7B-Instruct</span> \{"\n"}
{" "}--data <span className="text-green-400">forgesight/qc-industrial-v1</span> \{"\n"}
{" "}--lora_r 64 --lora_alpha 128 \{"\n"}
{" "}--epochs 3 --batch_size 4 --grad_accum 8{"\n\n"}
<code className="text-blue-400"># Production Inference</code>{"\n"}
<code className="text-[#ED1C24]">vllm serve</code> forgesight/qwen2-vl-mi300x \{"\n"}
{" "}--enforce-eager --no-enable-chunked-prefill \{"\n"}
{" "}--dtype bfloat16 --port 8000
</pre>
</div>
</div>
</section>
)}
</div>
);
}
function Stat({ label, value }) {
return (
<div className="space-y-1">
<div className="fs-label">{label}</div>
<div className="font-display font-black text-2xl text-white tracking-tighter">{value}</div>
</div>
);
}
function SpecItem({ icon: Icon, label, value }) {
return (
<div className="flex gap-4 items-center p-4 bg-white/[0.02] border border-white/5">
<Icon className="w-5 h-5 text-[#ED1C24]" />
<div>
<div className="fs-label mb-0.5 text-zinc-500">{label}</div>
<div className="font-mono text-xs text-white">{value}</div>
</div>
</div>
);
}