Upload 4 files
Browse files- blog-built-with-curiosity-over-compute.html +165 -0
- blog.html +4 -5
blog-built-with-curiosity-over-compute.html
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Built with curiosity over compute. | FMN-GPT - CompactAI</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
| 8 |
+
<style>
|
| 9 |
+
/* FMN-GPT Website Styles */
|
| 10 |
+
:root {
|
| 11 |
+
--color-bg: #faf8f5;
|
| 12 |
+
--color-bg-alt: #f5f0e8;
|
| 13 |
+
--color-bg-dark: #1a1815;
|
| 14 |
+
--color-bg-dark-alt: #252220;
|
| 15 |
+
--color-accent: #e85d3b;
|
| 16 |
+
--color-accent-light: #ff8a6b;
|
| 17 |
+
--color-accent-dark: #c44a2d;
|
| 18 |
+
--color-secondary: #d4a853;
|
| 19 |
+
--color-secondary-light: #e8c87a;
|
| 20 |
+
--color-text: #2d2a26;
|
| 21 |
+
--color-text-light: #6b6560;
|
| 22 |
+
--color-text-muted: #9a948d;
|
| 23 |
+
--color-border: #e5e0d8;
|
| 24 |
+
--color-border-dark: #3d3a36;
|
| 25 |
+
--gradient-warm: linear-gradient(135deg, #e85d3b 0%, #d4a853 100%);
|
| 26 |
+
--gradient-dark: linear-gradient(135deg, #1a1815 0%, #2d2a26 100%);
|
| 27 |
+
--shadow-sm: 0 2px 8px rgba(45, 42, 38, 0.08);
|
| 28 |
+
--shadow-md: 0 4px 20px rgba(45, 42, 38, 0.12);
|
| 29 |
+
--shadow-lg: 0 8px 40px rgba(45, 42, 38, 0.16);
|
| 30 |
+
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
| 31 |
+
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
| 32 |
+
--container-max: 1200px;
|
| 33 |
+
--section-padding: 100px;
|
| 34 |
+
}
|
| 35 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 36 |
+
html { scroll-behavior: smooth; font-size: 16px; }
|
| 37 |
+
html, body { height: 100%; }
|
| 38 |
+
body { font-family: var(--font-sans); background-color: var(--color-bg); color: var(--color-text); line-height: 1.7; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: flex; flex-direction: column; min-height: 100vh; }
|
| 39 |
+
main { flex: 1; }
|
| 40 |
+
.container { max-width: var(--container-max); margin: 0 auto; padding: 0 24px; }
|
| 41 |
+
h1, h2, h3, h4, h5, h6 { font-weight: 600; line-height: 1.2; color: var(--color-text); }
|
| 42 |
+
h1 { font-size: clamp(2.5rem, 6vw, 4.5rem); }
|
| 43 |
+
h2 { font-size: clamp(2rem, 4vw, 3rem); }
|
| 44 |
+
h3 { font-size: clamp(1.5rem, 3vw, 2rem); }
|
| 45 |
+
h4 { font-size: 1.25rem; }
|
| 46 |
+
p { margin-bottom: 1.5rem; color: var(--color-text-light); }
|
| 47 |
+
a { color: var(--color-accent); text-decoration: none; transition: color 0.2s ease; }
|
| 48 |
+
a:hover { color: var(--color-accent-dark); }
|
| 49 |
+
code { font-family: var(--font-mono); background: var(--color-bg-alt); padding: 0.2em 0.5em; border-radius: 4px; font-size: 0.9em; color: var(--color-accent-dark); }
|
| 50 |
+
pre { font-family: var(--font-mono); background: var(--color-bg-dark); color: #f5f0e8; padding: 1.5rem; border-radius: 12px; overflow-x: auto; font-size: 0.875rem; line-height: 1.6; }
|
| 51 |
+
pre code { background: none; padding: 0; color: inherit; }
|
| 52 |
+
blockquote { border-left: 4px solid var(--color-accent); padding-left: 1.5rem; margin: 2rem 0; font-style: italic; font-size: 1.25rem; color: var(--color-text); }
|
| 53 |
+
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
|
| 54 |
+
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
|
| 55 |
+
.fade-in-up { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; }
|
| 56 |
+
.fade-in-up.visible { opacity: 1; transform: translateY(0); }
|
| 57 |
+
.main-nav { position: fixed; top: 0; left: 0; right: 0; background: rgba(26, 24, 21, 0.95); backdrop-filter: blur(10px); z-index: 1000; padding: 1rem 0; }
|
| 58 |
+
.main-nav .container { display: flex; justify-content: space-between; align-items: center; }
|
| 59 |
+
.nav-brand { color: white; font-size: 1.25rem; font-weight: 600; text-decoration: none; }
|
| 60 |
+
.nav-links { display: flex; gap: 2rem; }
|
| 61 |
+
.nav-links a { color: var(--color-text-muted); text-decoration: none; font-size: 0.9375rem; transition: color 0.2s ease; }
|
| 62 |
+
.nav-links a:hover { color: var(--color-accent); }
|
| 63 |
+
.footer { padding: 3rem 0; background: var(--color-bg-dark); text-align: center; }
|
| 64 |
+
.footer-text { color: white; font-size: 1.125rem; margin-bottom: 0.5rem; }
|
| 65 |
+
.footer-subtext { color: var(--color-text-muted); font-size: 0.875rem; margin: 0; }
|
| 66 |
+
.blog-post-section { padding: var(--section-padding) 0; background: var(--color-bg); flex: 1; }
|
| 67 |
+
.blog-post-content { max-width: 700px; margin: 0 auto; }
|
| 68 |
+
.blog-back { display: inline-block; color: var(--color-accent); font-weight: 500; margin-bottom: 2rem; text-decoration: none; }
|
| 69 |
+
.blog-back:hover { color: var(--color-accent-dark); }
|
| 70 |
+
.blog-post-header { margin-bottom: 3rem; }
|
| 71 |
+
.blog-post-header h1 { margin-top: 1rem; }
|
| 72 |
+
.blog-post-body p { font-size: 1.125rem; line-height: 1.8; margin-bottom: 1.75rem; color: var(--color-text); }
|
| 73 |
+
.blog-post-body p:first-of-type { font-size: 1.25rem; }
|
| 74 |
+
.blog-post-body h1 { font-size: 2rem; margin: 2.5rem 0 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--color-border); }
|
| 75 |
+
.blog-post-body h2 { font-size: 1.6rem; margin: 2rem 0 0.8rem; color: var(--color-accent); }
|
| 76 |
+
.blog-post-body h3 { font-size: 1.3rem; margin: 1.5rem 0 0.6rem; color: var(--color-text); }
|
| 77 |
+
.blog-post-body blockquote { border-left: 4px solid var(--color-accent); padding: 1rem 1.5rem; margin: 2rem 0; background: var(--color-bg-alt); border-radius: 0 8px 8px 0; font-style: italic; font-size: 1.1rem; color: var(--color-text); }
|
| 78 |
+
.blog-post-body blockquote p { margin: 0; }
|
| 79 |
+
.blog-post-body ul, .blog-post-body ol { margin: 1.5rem 0; padding-left: 1.5rem; }
|
| 80 |
+
.blog-post-body li { margin-bottom: 0.75rem; color: var(--color-text); line-height: 1.7; }
|
| 81 |
+
.blog-post-body ul li { list-style-type: disc; }
|
| 82 |
+
.blog-post-body ol li { list-style-type: decimal; }
|
| 83 |
+
.blog-post-body hr { border: none; height: 2px; background: linear-gradient(to right, transparent, var(--color-border), transparent); margin: 3rem 0; }
|
| 84 |
+
.blog-post-body pre { background: var(--color-bg-dark); color: #f5f0e8; padding: 1.5rem; border-radius: 12px; overflow-x: auto; margin: 1.5rem 0; font-family: var(--font-mono); font-size: 0.9rem; line-height: 1.6; }
|
| 85 |
+
.blog-post-body pre code { background: none; padding: 0; color: inherit; font-size: inherit; }
|
| 86 |
+
.blog-post-body code { font-family: var(--font-mono); background: var(--color-bg-alt); padding: 0.2em 0.5em; border-radius: 4px; font-size: 0.85em; color: var(--color-accent-dark); }
|
| 87 |
+
.blog-post-body a { color: var(--color-accent); text-decoration: underline; text-underline-offset: 2px; }
|
| 88 |
+
.blog-post-body a:hover { color: var(--color-accent-dark); }
|
| 89 |
+
.blog-post-body strong { color: var(--color-text); font-weight: 600; }
|
| 90 |
+
.blog-post-body em { color: var(--color-text); }
|
| 91 |
+
.blog-post-body img { max-width: 100%; height: auto; border-radius: 12px; margin: 2rem 0; }
|
| 92 |
+
.blog-meta { display: flex; gap: 1rem; margin-bottom: 1rem; }
|
| 93 |
+
.blog-date { color: var(--color-text-muted); font-size: 0.875rem; }
|
| 94 |
+
.blog-tag { background: rgba(232, 93, 59, 0.1); color: var(--color-accent); font-size: 0.75rem; font-weight: 600; padding: 0.25rem 0.75rem; border-radius: 50px; text-transform: uppercase; letter-spacing: 0.05em; }
|
| 95 |
+
@media (max-width: 768px) { :root { --section-padding: 60px; } }
|
| 96 |
+
</style>
|
| 97 |
+
</head>
|
| 98 |
+
<body>
|
| 99 |
+
<nav class="main-nav">
|
| 100 |
+
<div class="container">
|
| 101 |
+
<a href="index.html" class="nav-brand">FMN-GPT</a>
|
| 102 |
+
<div class="nav-links">
|
| 103 |
+
<a href="blog.html">Blog</a>
|
| 104 |
+
<a href="status.html">Model Status</a>
|
| 105 |
+
<a href="https://huggingface.co/CompactAI" target="_blank">HuggingFace</a>
|
| 106 |
+
</div>
|
| 107 |
+
</div>
|
| 108 |
+
</nav>
|
| 109 |
+
|
| 110 |
+
<main>
|
| 111 |
+
<article class="blog-post-section" id="blog-post">
|
| 112 |
+
<div class="container">
|
| 113 |
+
<div class="blog-post-content">
|
| 114 |
+
<a href="blog.html" class="blog-back">← Back to Blog</a>
|
| 115 |
+
<header class="blog-post-header">
|
| 116 |
+
<div class="blog-meta">
|
| 117 |
+
<span class="blog-date">2026-02-15</span>
|
| 118 |
+
<span class="blog-tag">Philosophy</span>
|
| 119 |
+
</div>
|
| 120 |
+
<h1>Built with curiosity over compute.</h1>
|
| 121 |
+
</header>
|
| 122 |
+
<div class="blog-post-body">
|
| 123 |
+
<p>There's a strange pressure in tech circles. Every idea must be revolutionary. Every project must be scalable. Every experiment must lead somewhere worth going. If it's going to change the world, why build it? If it's going to beat the state of the art, why publish it? If it's going to get thousands of GitHub stars, why open source it?</p>
|
| 124 |
+
|
| 125 |
+
<p>We've internalized this idea that only "good" ideas deserve to exist. That only projects with clear paths to success are worth starting. That only experiments with predictable outcomes are worth running.</p>
|
| 126 |
+
|
| 127 |
+
<p>But here's the thing: FMN-GPT started as a weird question. What if a model could be small by design, avoiding compression entirely?</p>
|
| 128 |
+
|
| 129 |
+
<p>Was that a good idea? Honestly, we still don't know. The model has ~100K parameters. It might fail. It might be a dead end. It might teach us something unexpected. And that's exactly the point.</p>
|
| 130 |
+
|
| 131 |
+
<p>The phrase 'Built with curiosity over compute' goes beyond a tagline. A philosophy drives our work. We build because we're curious, without needing infinite resources to throw at problems. A half-baked idea explored on a single GPU matters more than a perfect idea that never leaves the whiteboard.</p>
|
| 132 |
+
|
| 133 |
+
<p>This project exists because someone got curious. They lacked funding. They lacked a roadmap to success. They lacked certainty it would work. They just wanted to see what would happen.</p>
|
| 134 |
+
|
| 135 |
+
<p>When I wiped my HuggingFace profile clean and started over, people probably thought I was crazy. Dozens of compressed models, gone. Why? Because quantity was masking the real problem. I was cloning and shrinking other people's work, avoiding building anything new. The work lacked genuine exploration. It was pure optimization.</p>
|
| 136 |
+
|
| 137 |
+
<p>And optimization without exploration is just a race to the bottom.</p>
|
| 138 |
+
|
| 139 |
+
<p>Bad ideas teach us. Weird experiments surprise us. Small projects accumulate into something bigger.</p>
|
| 140 |
+
|
| 141 |
+
<p>The character-level tokenization in FMN-GPT might be inefficient compared to BPE. The recurrent mixer might add unnecessary complexity. The dynamic routing might be computationally expensive for minimal gain. But we're building it anyway, because we want to see what happens.</p>
|
| 142 |
+
|
| 143 |
+
<p>So here's our invitation to you: build the weird thing. Run the silly experiment. Ask the naive question. Not everything needs to be production-ready. Not everything needs to beat a baseline. Sometimes the journey itself is the point.</p>
|
| 144 |
+
|
| 145 |
+
<p>Curiosity is undervalued. Compute is overvalued. Let's fix that balance.</p>
|
| 146 |
+
|
| 147 |
+
<hr>
|
| 148 |
+
|
| 149 |
+
<p><em>This is the first in a series of posts about the philosophy behind FMN-GPT. Next time, we'll talk about why character-level tokenization is both terrible and fascinating.</em></p>
|
| 150 |
+
</div>
|
| 151 |
+
</div>
|
| 152 |
+
</div>
|
| 153 |
+
</article>
|
| 154 |
+
</main>
|
| 155 |
+
|
| 156 |
+
<footer class="footer">
|
| 157 |
+
<div class="container">
|
| 158 |
+
<div class="footer-content">
|
| 159 |
+
<p class="footer-text">Built with curiosity over compute.</p>
|
| 160 |
+
<p class="footer-subtext">FMN-GPT by <a href="https://huggingface.co/CompactAI" target="_blank">CompactAI</a> - 2026</p>
|
| 161 |
+
</div>
|
| 162 |
+
</div>
|
| 163 |
+
</footer>
|
| 164 |
+
</body>
|
| 165 |
+
</html>
|
blog.html
CHANGED
|
@@ -123,14 +123,13 @@ blockquote { border-left: 4px solid var(--color-accent); padding-left: 1.5rem; m
|
|
| 123 |
</footer>
|
| 124 |
|
| 125 |
<script>
|
| 126 |
-
|
| 127 |
{
|
| 128 |
-
"
|
| 129 |
"date": "2026-02-15",
|
| 130 |
"tag": "Philosophy",
|
| 131 |
"title": "Built with curiosity over compute.",
|
| 132 |
-
"excerpt": "There's a strange pressure in tech circles that every idea must be revolutionary, every project must be scalable, every experiment must lead somewhere. We disagree. Ideas don't have to be good to exist. They just have to exist."
|
| 133 |
-
"content": "There's a strange pressure in tech circles. Every idea must be revolutionary. Every project must be scalable. Every experiment must lead somewhere worth going. If it's going to change the world, why build it? If it's going to beat the state of the art, why publish it? If it's going to get thousands of GitHub stars, why open source it?\n\nWe've internalized this idea that only \"good\" ideas deserve to exist. That only projects with clear paths to success are worth starting. That only experiments with predictable outcomes are worth running.\n\nBut here's the thing: FMN-GPT started as a weird question. What if a model could be small by design, avoiding compression entirely?\n\nWas that a good idea? Honestly, we still don't know. The model has ~100K parameters. It might fail. It might be a dead end. It might teach us something unexpected. And that's exactly the point.\n\nThe phrase 'Built with curiosity over compute' goes beyond a tagline. A philosophy drives our work. We build because we're curious, without needing infinite resources to throw at problems. A half-baked idea explored on a single GPU matters more than a perfect idea that never leaves the whiteboard.\n\nThis project exists because someone got curious. They lacked funding. They lacked a roadmap to success. They lacked certainty it would work. They just wanted to see what would happen.\n\nWhen I wiped my HuggingFace profile clean and started over, people probably thought I was crazy. Dozens of compressed models, gone. Why? Because quantity was masking the real problem. I was cloning and shrinking other people's work, avoiding building anything new. The work lacked genuine exploration. It was pure optimization.\n\nAnd optimization without exploration is just a race to the bottom.\n\nBad ideas teach us. Weird experiments surprise us. Small projects accumulate into something bigger.\n\nThe character-level tokenization in FMN-GPT might be inefficient compared to BPE. The recurrent mixer might add unnecessary complexity. The dynamic routing might be computationally expensive for minimal gain. But we're building it anyway, because we want to see what happens.\n\nSo here's our invitation to you: build the weird thing. Run the silly experiment. Ask the naive question. Not everything needs to be production-ready. Not everything needs to beat a baseline. Sometimes the journey itself is the point.\n\nCuriosity is undervalued. Compute is overvalued. Let's fix that balance.\n\n---\n\n*This is the first in a series of posts about the philosophy behind FMN-GPT. Next time, we'll talk about why character-level tokenization is both terrible and fascinating.*"
|
| 134 |
}
|
| 135 |
];
|
| 136 |
|
|
@@ -143,7 +142,7 @@ blockquote { border-left: 4px solid var(--color-accent); padding-left: 1.5rem; m
|
|
| 143 |
}
|
| 144 |
|
| 145 |
container.innerHTML = posts.map(post => `
|
| 146 |
-
<a href="
|
| 147 |
<div class="blog-meta">
|
| 148 |
<span class="blog-date">${post.date}</span>
|
| 149 |
<span class="blog-tag">${post.tag}</span>
|
|
|
|
| 123 |
</footer>
|
| 124 |
|
| 125 |
<script>
|
| 126 |
+
const posts = [
|
| 127 |
{
|
| 128 |
+
"file": "blog-built-with-curiosity-over-compute.html",
|
| 129 |
"date": "2026-02-15",
|
| 130 |
"tag": "Philosophy",
|
| 131 |
"title": "Built with curiosity over compute.",
|
| 132 |
+
"excerpt": "There's a strange pressure in tech circles that every idea must be revolutionary, every project must be scalable, every experiment must lead somewhere. We disagree. Ideas don't have to be good to exist. They just have to exist."
|
|
|
|
| 133 |
}
|
| 134 |
];
|
| 135 |
|
|
|
|
| 142 |
}
|
| 143 |
|
| 144 |
container.innerHTML = posts.map(post => `
|
| 145 |
+
<a href="${post.file}" class="blog-card">
|
| 146 |
<div class="blog-meta">
|
| 147 |
<span class="blog-date">${post.date}</span>
|
| 148 |
<span class="blog-tag">${post.tag}</span>
|