Mehdi commited on
Commit Β·
757dfee
1
Parent(s): 3f8b85e
chore: update blog to MiniCPM4.1-8B fine-tune + Sharing is Caring badge earned
Browse files- BLOG.md +2 -2
- blog/index.html +12 -12
BLOG.md
CHANGED
|
@@ -26,7 +26,7 @@ Everything runs on free infrastructure with zero external API calls. No OpenAI k
|
|
| 26 |
4. **A score ring** tracks your session in real time.
|
| 27 |
5. **End the session** and FLUX.2-klein generates a unique image inspired by the topics you just studied β a small visual reward for showing up.
|
| 28 |
|
| 29 |
-
The whole question-answer-feedback loop runs on **MiniCPM4-8B**,
|
| 30 |
|
| 31 |
```
|
| 32 |
PDF upload
|
|
@@ -153,7 +153,7 @@ Small prompt details made the difference between "tech demo" and "usable study t
|
|
| 153 |
|
| 154 |
| Layer | Choice |
|
| 155 |
|---|---|
|
| 156 |
-
| Q&A + evaluation | MiniCPM4-8B (openbmb), bfloat16, transformers 4.57.1 |
|
| 157 |
| Session images | FLUX.2-klein-4B (Black Forest Labs), diffusers |
|
| 158 |
| PDF parsing | PyMuPDF |
|
| 159 |
| Backend / hosting | Gradio 6 on Hugging Face Spaces, ZeroGPU |
|
|
|
|
| 26 |
4. **A score ring** tracks your session in real time.
|
| 27 |
5. **End the session** and FLUX.2-klein generates a unique image inspired by the topics you just studied β a small visual reward for showing up.
|
| 28 |
|
| 29 |
+
The whole question-answer-feedback loop runs on **MiniCPM4.1-8B**, our QLoRA fine-tune of openbmb's latest 8B model, loaded once and shared between question generation and answer evaluation.
|
| 30 |
|
| 31 |
```
|
| 32 |
PDF upload
|
|
|
|
| 153 |
|
| 154 |
| Layer | Choice |
|
| 155 |
|---|---|
|
| 156 |
+
| Q&A + evaluation | MiniCPM4.1-8B (openbmb), QLoRA fine-tune, bfloat16, transformers 4.57.1 |
|
| 157 |
| Session images | FLUX.2-klein-4B (Black Forest Labs), diffusers |
|
| 158 |
| PDF parsing | PyMuPDF |
|
| 159 |
| Backend / hosting | Gradio 6 on Hugging Face Spaces, ZeroGPU |
|
blog/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
<title>How We Fought Gradio and Won. PaperProf Field Notes</title>
|
| 7 |
-
<meta name="description" content="Field notes from the Build Small Hackathon: building PaperProf, an AI study buddy running MiniCPM4-8B and FLUX.2-klein on ZeroGPU with a fully custom UI over a hidden-Gradio bridge.">
|
| 8 |
<meta property="og:title" content="PaperProf Field Notes. How We Fought Gradio and Won">
|
| 9 |
<meta property="og:description" content="68 commits, 10 days, zero external APIs. What we built and what we learned.">
|
| 10 |
<meta property="og:type" content="article">
|
|
@@ -405,15 +405,15 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 405 |
<div class="hero-meta">
|
| 406 |
<span>READ <b>9 min</b></span>
|
| 407 |
<span>TEAM <b>PaperProf Β· EPITA</b></span>
|
| 408 |
-
<span>STACK <b>MiniCPM4-8B / FLUX.2 / ZeroGPU</b></span>
|
| 409 |
</div>
|
| 410 |
<span class="scroll-hint">SCROLL</span>
|
| 411 |
</header>
|
| 412 |
|
| 413 |
<div class="marquee" aria-hidden="true">
|
| 414 |
<div class="marquee-track">
|
| 415 |
-
<span>MiniCPM4-8B</span><span>FLUX.2-klein</span><span>ZeroGPU</span><span>PyMuPDF</span><span>Gradio 6</span><span>Zero external APIs</span><span>68 commits</span><span>10 days</span>
|
| 416 |
-
<span>MiniCPM4-8B</span><span>FLUX.2-klein</span><span>ZeroGPU</span><span>PyMuPDF</span><span>Gradio 6</span><span>Zero external APIs</span><span>68 commits</span><span>10 days</span>
|
| 417 |
</div>
|
| 418 |
</div>
|
| 419 |
|
|
@@ -436,13 +436,13 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 436 |
<div class="badge earned reveal">
|
| 437 |
<span class="badge-icon">π</span>
|
| 438 |
<strong class="badge-name">Off the Grid</strong>
|
| 439 |
-
<span class="badge-desc">Zero external APIs. MiniCPM4-8B and FLUX.2-klein run entirely on ZeroGPU β no OpenAI key, no rate limits, no data leaving the machine.</span>
|
| 440 |
<span class="badge-chip">β Earned</span>
|
| 441 |
</div>
|
| 442 |
<div class="badge earned reveal">
|
| 443 |
<span class="badge-icon">π―</span>
|
| 444 |
<strong class="badge-name">Well-Tuned</strong>
|
| 445 |
-
<span class="badge-desc">QLoRA fine-tune on SQuAD via Modal. Model published
|
| 446 |
<span class="badge-chip">β Earned</span>
|
| 447 |
</div>
|
| 448 |
<div class="badge earned reveal">
|
|
@@ -454,7 +454,7 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 454 |
<div class="badge earned reveal">
|
| 455 |
<span class="badge-icon">π¦</span>
|
| 456 |
<strong class="badge-name">Llama Champion</strong>
|
| 457 |
-
<span class="badge-desc">GGUF published at <code>build-small-hackathon/MiniCPM4-8B-PaperProf-GGUF</code>. llama.cpp CPU runtime wired in via <code>PAPERPROF_RUNTIME=llamacpp</code>.</span>
|
| 458 |
<span class="badge-chip">β Earned</span>
|
| 459 |
</div>
|
| 460 |
<div class="badge earned reveal">
|
|
@@ -536,7 +536,7 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 536 |
<div class="card"><div class="glare"></div><span class="idx">REWARD</span><h4>Session image</h4><p>End the session and FLUX.2-klein generates a unique image from the topics you just studied.</p></div>
|
| 537 |
</div>
|
| 538 |
|
| 539 |
-
<p class="reveal">The whole loop runs on <strong>MiniCPM4-8B</strong>,
|
| 540 |
|
| 541 |
<section class="chapter reveal" id="real-story">
|
| 542 |
<span class="ghost" aria-hidden="true">03</span>
|
|
@@ -553,9 +553,9 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 553 |
|
| 554 |
<h3 class="reveal" id="lesson-1">Model choice is a compatibility problem, not a benchmark problem</h3>
|
| 555 |
|
| 556 |
-
<p class="reveal">We started with MiniCPM3-4B, upgraded to MiniCPM4-8B for better reasoning, and immediately hit the classic open-model trap: the model card says one thing, the <code>transformers</code> version on your machine says another.</p>
|
| 557 |
|
| 558 |
-
<span class="commit reveal">fix: pin transformers==4.57.1 for MiniCPM4-8B compatibility</span>
|
| 559 |
|
| 560 |
<p class="reveal">The follow-up lesson came from quantization. Bitsandbytes 4-bit is great on a 16 GB local GPU and completely unnecessary on ZeroGPU hardware, so we made it conditional:</p>
|
| 561 |
|
|
@@ -660,7 +660,7 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 660 |
<table>
|
| 661 |
<thead><tr><th scope="col">Layer</th><th scope="col">Choice</th></tr></thead>
|
| 662 |
<tbody>
|
| 663 |
-
<tr><td><strong>Q&A + evaluation</strong></td><td>MiniCPM4-8B (
|
| 664 |
<tr><td><strong>Session images</strong></td><td>FLUX.2-klein-4B (Black Forest Labs) Β· diffusers</td></tr>
|
| 665 |
<tr><td><strong>PDF parsing</strong></td><td>PyMuPDF</td></tr>
|
| 666 |
<tr><td><strong>Backend / hosting</strong></td><td>Gradio 6 on Hugging Face Spaces Β· ZeroGPU</td></tr>
|
|
@@ -682,7 +682,7 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 682 |
|
| 683 |
<footer>
|
| 684 |
<span>Build Small Hackathon Β· June 5β15, 2026</span>
|
| 685 |
-
<span>MiniCPM4-8B / FLUX.2-klein / ZeroGPU / 0 external APIs</span>
|
| 686 |
</footer>
|
| 687 |
|
| 688 |
<script>
|
|
|
|
| 4 |
<meta charset="UTF-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
<title>How We Fought Gradio and Won. PaperProf Field Notes</title>
|
| 7 |
+
<meta name="description" content="Field notes from the Build Small Hackathon: building PaperProf, an AI study buddy running MiniCPM4.1-8B and FLUX.2-klein on ZeroGPU with a fully custom UI over a hidden-Gradio bridge.">
|
| 8 |
<meta property="og:title" content="PaperProf Field Notes. How We Fought Gradio and Won">
|
| 9 |
<meta property="og:description" content="68 commits, 10 days, zero external APIs. What we built and what we learned.">
|
| 10 |
<meta property="og:type" content="article">
|
|
|
|
| 405 |
<div class="hero-meta">
|
| 406 |
<span>READ <b>9 min</b></span>
|
| 407 |
<span>TEAM <b>PaperProf Β· EPITA</b></span>
|
| 408 |
+
<span>STACK <b>MiniCPM4.1-8B fine-tune / FLUX.2 / ZeroGPU</b></span>
|
| 409 |
</div>
|
| 410 |
<span class="scroll-hint">SCROLL</span>
|
| 411 |
</header>
|
| 412 |
|
| 413 |
<div class="marquee" aria-hidden="true">
|
| 414 |
<div class="marquee-track">
|
| 415 |
+
<span>MiniCPM4.1-8B fine-tune</span><span>FLUX.2-klein</span><span>ZeroGPU</span><span>PyMuPDF</span><span>Gradio 6</span><span>Zero external APIs</span><span>68 commits</span><span>10 days</span>
|
| 416 |
+
<span>MiniCPM4.1-8B fine-tune</span><span>FLUX.2-klein</span><span>ZeroGPU</span><span>PyMuPDF</span><span>Gradio 6</span><span>Zero external APIs</span><span>68 commits</span><span>10 days</span>
|
| 417 |
</div>
|
| 418 |
</div>
|
| 419 |
|
|
|
|
| 436 |
<div class="badge earned reveal">
|
| 437 |
<span class="badge-icon">π</span>
|
| 438 |
<strong class="badge-name">Off the Grid</strong>
|
| 439 |
+
<span class="badge-desc">Zero external APIs. MiniCPM4.1-8B and FLUX.2-klein run entirely on ZeroGPU β no OpenAI key, no rate limits, no data leaving the machine.</span>
|
| 440 |
<span class="badge-chip">β Earned</span>
|
| 441 |
</div>
|
| 442 |
<div class="badge earned reveal">
|
| 443 |
<span class="badge-icon">π―</span>
|
| 444 |
<strong class="badge-name">Well-Tuned</strong>
|
| 445 |
+
<span class="badge-desc">QLoRA fine-tune on SQuAD + SciQ via Modal. Model published at <code>build-small-hackathon/MiniCPM4.1-8B-PaperProf</code>.</span>
|
| 446 |
<span class="badge-chip">β Earned</span>
|
| 447 |
</div>
|
| 448 |
<div class="badge earned reveal">
|
|
|
|
| 454 |
<div class="badge earned reveal">
|
| 455 |
<span class="badge-icon">π¦</span>
|
| 456 |
<strong class="badge-name">Llama Champion</strong>
|
| 457 |
+
<span class="badge-desc">GGUF published at <code>build-small-hackathon/MiniCPM4.1-8B-PaperProf-GGUF</code>. llama.cpp CPU runtime wired in via <code>PAPERPROF_RUNTIME=llamacpp</code>.</span>
|
| 458 |
<span class="badge-chip">β Earned</span>
|
| 459 |
</div>
|
| 460 |
<div class="badge earned reveal">
|
|
|
|
| 536 |
<div class="card"><div class="glare"></div><span class="idx">REWARD</span><h4>Session image</h4><p>End the session and FLUX.2-klein generates a unique image from the topics you just studied.</p></div>
|
| 537 |
</div>
|
| 538 |
|
| 539 |
+
<p class="reveal">The whole loop runs on <strong>MiniCPM4.1-8B</strong>, our QLoRA fine-tune of openbmb's latest 8B model, loaded once and shared between question generation and answer evaluation. PyMuPDF extracts the text, a chunker splits it into thematic sections, and the model picks up from there.</p>
|
| 540 |
|
| 541 |
<section class="chapter reveal" id="real-story">
|
| 542 |
<span class="ghost" aria-hidden="true">03</span>
|
|
|
|
| 553 |
|
| 554 |
<h3 class="reveal" id="lesson-1">Model choice is a compatibility problem, not a benchmark problem</h3>
|
| 555 |
|
| 556 |
+
<p class="reveal">We started with MiniCPM3-4B, upgraded to MiniCPM4.1-8B for better reasoning, and immediately hit the classic open-model trap: the model card says one thing, the <code>transformers</code> version on your machine says another.</p>
|
| 557 |
|
| 558 |
+
<span class="commit reveal">fix: pin transformers==4.57.1 for MiniCPM4.1-8B compatibility</span>
|
| 559 |
|
| 560 |
<p class="reveal">The follow-up lesson came from quantization. Bitsandbytes 4-bit is great on a 16 GB local GPU and completely unnecessary on ZeroGPU hardware, so we made it conditional:</p>
|
| 561 |
|
|
|
|
| 660 |
<table>
|
| 661 |
<thead><tr><th scope="col">Layer</th><th scope="col">Choice</th></tr></thead>
|
| 662 |
<tbody>
|
| 663 |
+
<tr><td><strong>Q&A + evaluation</strong></td><td>MiniCPM4.1-8B Β· QLoRA fine-tune (build-small-hackathon/MiniCPM4.1-8B-PaperProf) Β· bfloat16 Β· transformers 4.57.1</td></tr>
|
| 664 |
<tr><td><strong>Session images</strong></td><td>FLUX.2-klein-4B (Black Forest Labs) Β· diffusers</td></tr>
|
| 665 |
<tr><td><strong>PDF parsing</strong></td><td>PyMuPDF</td></tr>
|
| 666 |
<tr><td><strong>Backend / hosting</strong></td><td>Gradio 6 on Hugging Face Spaces Β· ZeroGPU</td></tr>
|
|
|
|
| 682 |
|
| 683 |
<footer>
|
| 684 |
<span>Build Small Hackathon Β· June 5β15, 2026</span>
|
| 685 |
+
<span>MiniCPM4.1-8B / FLUX.2-klein / ZeroGPU / 0 external APIs</span>
|
| 686 |
</footer>
|
| 687 |
|
| 688 |
<script>
|