<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: qianchuan meng (qianchuan)</title>
    <description>The latest articles on DEV Community by qianchuan meng (qianchuan) (@qianchuan).</description>
    <link>https://dev.to/qianchuan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4244078%2Fea115cd9-f647-4403-ae5d-964d07c9234c.png</url>
      <title>DEV Community: qianchuan meng (qianchuan)</title>
      <link>https://dev.to/qianchuan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/qianchuan"/>
    <language>en</language>
    <item>
      <title>Everyone Is Benchmarking Edge0-145B on RTX 4090s — I Ran the 35B Tier on a $220 Used Mini PC</title>
      <dc:creator>qianchuan meng (qianchuan)</dc:creator>
      <pubDate>Sat, 14 Nov 2026 08:02:26 +0000</pubDate>
      <link>https://dev.to/qianchuan/everyone-is-benchmarking-edge0-145b-on-rtx-4090s-i-ran-the-35b-tier-on-a-220-used-mini-pc-5a3c</link>
      <guid>https://dev.to/qianchuan/everyone-is-benchmarking-edge0-145b-on-rtx-4090s-i-ran-the-35b-tier-on-a-220-used-mini-pc-5a3c</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;All numbers in this post are my own measurements, not official data.&lt;br&gt;
Hardware: &lt;strong&gt;Beelink SER (1st gen)&lt;/strong&gt; mini PC / AMD Ryzen 5 5600H (6C/12T) / &lt;strong&gt;16GB DDR4-3200 single-channel&lt;/strong&gt; / Vega iGPU / 512G NVMe / Windows 11 x64.&lt;br&gt;
Second-hand price for this exact class (Xianyu listings checked 2026-11-14): &lt;strong&gt;¥1,550–1,590 ≈ $215–220&lt;/strong&gt; for a complete unit, ¥1,159 ≈ $160 barebones.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;On Nov 12, Edge0 open-sourced Edge0-145B and Edge0-120B with very provocative numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;145B params&lt;/strong&gt;, 29GB peak memory, &lt;strong&gt;80+ tokens/s&lt;/strong&gt; decode&lt;/li&gt;
&lt;li&gt;Runs on "a suitable laptop", no server needed&lt;/li&gt;
&lt;li&gt;Coding, reasoning and agent capability "comparable to frontier cloud models"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three days in, I went looking for real hands-on tests. There are only a handful, and they're all on RTX 4090/5090 or M2 Ultra (jansverre, goremy, etc.). Chinese platforms are nothing but press rewrites — zero real deployments. Even better: a Japanese blogger already debunked the headline memory claim — &lt;strong&gt;the advertised "29GB peak" counts active memory only; real footprint is 54GiB&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Meanwhile, if you're on AMD or an iGPU, this party was never for you: the 145B tier requires NVIDIA CUDA. Your ceiling in the Edge0 family is the 35B tier — the one the official docs say runs on plain CPU.&lt;/p&gt;

&lt;p&gt;Cold water first: Edge0-35B is a September &lt;strong&gt;preview&lt;/strong&gt; checkpoint. The model card itself admits weak agent capability, and 145B/120B are the main event. So why bother? Because between "runs on CPU" and "actually usable" sits an order-of-magnitude experience gap, and nobody has quantified it on cheap hardware.&lt;/p&gt;

&lt;p&gt;So I did. Here are real numbers from a &lt;strong&gt;$220 used mini PC with single-channel RAM and no discrete GPU&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR: it runs. Warm-cache first token in 1.3s, decode 4.27 tok/s — fine for chat. But prefill is 11.5 tok/s, which makes it mathematically unusable as a coding-agent backend.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment: 4 pitfalls the docs don't mention
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pit 1: HuggingFace is unreachable from China
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;huggingface.co&lt;/code&gt; times out here. The fix is the &lt;code&gt;hf-mirror.com&lt;/code&gt; mirror — the model is 18.38GB across 4 shards (4-bit quant + LoRA + pre-router), ~45 minutes with 4 parallel downloads:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl -L -C - -o model-00001-of-00004.safetensors \
  &lt;span class="s2"&gt;"https://hf-mirror.com/Edge0/Edge0-35B-A3B-preview/resolve/main/model-00001-of-00004.safetensors"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep &lt;code&gt;-C -&lt;/code&gt; for resume. Verify byte counts with &lt;code&gt;stat -c%s&lt;/code&gt; — all 4 of my shards matched.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pit 2: The release zip already contains everything
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;edge0-chat-0.2.0-windows-x64.zip&lt;/code&gt; (264MB) from GitHub Releases ships a &lt;strong&gt;prebuilt&lt;/strong&gt; &lt;code&gt;edge0-infer.exe&lt;/code&gt; — no compiling — plus the official chat app and the &lt;code&gt;edge0-strata/&lt;/code&gt; engine (for 145B, useless here).&lt;/p&gt;

&lt;h3&gt;
  
  
  Pit 3: The asset converter crashes on Windows
&lt;/h3&gt;

&lt;p&gt;35B can't use raw HuggingFace weights; you convert them to GGUF assets (+22GB disk). The official converter fails immediately with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;error: [WinError 1314] 客户端没有所需的特权。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cause: it &lt;strong&gt;symlinks&lt;/strong&gt; source weights into a staging directory, and non-admin Windows without Developer Mode can't create symlinks. Two fixes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable Developer Mode, or&lt;/li&gt;
&lt;li&gt;Patch the converter to fall back to a &lt;strong&gt;hard link&lt;/strong&gt; (same volume, no privileges needed, semantically equivalent):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;symlink_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nc"&gt;OSError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;link&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="c1"&gt;# hardlink fallback&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the patch: conversion finished in 661s, self-check passed all 703 tensors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[self-check] edge0-35b.gguf: tensors=703 kv=39 OK
DONE 35b: gguf=20.26GiB lora=40.5MiB took 661.3s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pit 4: iGPU "Vulkan acceleration" is a negative optimization
&lt;/h3&gt;

&lt;p&gt;The docs support &lt;code&gt;--prefill-device vulkan&lt;/code&gt;. On their RTX 4070 SUPER reference machine it cuts time-to-first-token from 17s to 3.9s — tempting.&lt;/p&gt;

&lt;p&gt;On my Vega iGPU it's &lt;strong&gt;worse across the board&lt;/strong&gt;: prefill didn't improve (the iGPU is too weak), and decode dropped from 4.27 to 2.93 tok/s — the engine log shows &lt;strong&gt;80 GPU↔CPU handoffs&lt;/strong&gt;, each one a tax.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson: iGPU users should just stay on CPU.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonus: why not just run vanilla Qwen3.6-35B-A3B via Ollama?
&lt;/h3&gt;

&lt;p&gt;Fair question — Edge0-35B is Qwen3.6-35B-A3B plus a LoRA and a pre-router. Two reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3.6's Gated DeltaNet architecture has a decode-collapse bug on llama.cpp's AMD Vulkan backend&lt;/strong&gt; — prefill runs 3100+ tok/s, then decode falls off a cliff to single digits. Known issue; my old iGPU would almost certainly hit it.&lt;/li&gt;
&lt;li&gt;Edge0's &lt;strong&gt;predicted routing&lt;/strong&gt; (a trained pre-router prefetches the next token's experts from SSD while the current one computes) is a free ~50% decode speedup you don't get on the vanilla model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On this machine, the Edge0 build is the better deal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark: three configurations
&lt;/h2&gt;

&lt;p&gt;Method: 253-token Chinese prompt, 10 warmup steps, 100 timed generation steps, official &lt;code&gt;bench&lt;/code&gt; tool.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Config&lt;/th&gt;
&lt;th&gt;Decode&lt;/th&gt;
&lt;th&gt;Prefill&lt;/th&gt;
&lt;th&gt;TTFT&lt;/th&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU 4 threads (default)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.27 tok/s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;11.5 tok/s&lt;/td&gt;
&lt;td&gt;22.0s&lt;/td&gt;
&lt;td&gt;✅ best&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU 6 threads&lt;/td&gt;
&lt;td&gt;4.20 tok/s&lt;/td&gt;
&lt;td&gt;11.3 tok/s&lt;/td&gt;
&lt;td&gt;22.5s&lt;/td&gt;
&lt;td&gt;no gain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vulkan prefill + CPU decode&lt;/td&gt;
&lt;td&gt;2.93 tok/s&lt;/td&gt;
&lt;td&gt;11.0 tok/s&lt;/td&gt;
&lt;td&gt;23.1s&lt;/td&gt;
&lt;td&gt;worse&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The local chat UI I built after deployment — code rendering + metrics chips. This run: TTFT 8.4s, 130 tokens at 3.0 tok/s.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Three counter-intuitive findings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F50h2kwd4z4z2d4mfimq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F50h2kwd4z4z2d4mfimq6.png" alt="Local chat UI running Edge0-35B — code rendering with metrics chips" width="800" height="551"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;1. More threads do nothing — the bottleneck is memory bandwidth.&lt;/strong&gt; 6 threads scored the same as 4. Single-channel DDR4-3200 tops out at 25.6GB/s, and every decoded token streams the active experts' weights through memory. Cores can't help; they're all waiting on RAM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Sparse MoE + predicted routing is why this survives on cheap hardware.&lt;/strong&gt; 35B total params, ~3B active per token. The engine's pre-router predicts which experts the next token needs and prefetches them from SSD while the current token computes: 3,564 prefetches, only 2 late. This is the core of Edge0's arXiv paper (&lt;em&gt;The Other Half of the Memory Wall&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Peak memory was 3.77GB.&lt;/strong&gt; A 16GB machine never breaks a sweat — expert weights mostly live on SSD and page in on demand. The "phone-class memory" claim is real.&lt;/p&gt;
&lt;h2&gt;
  
  
  The soul-searching question: can it be a coding-agent backend?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No — and it's arithmetic, not opinion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenCode's agent mode ships a system prompt of roughly &lt;strong&gt;11,000 tokens&lt;/strong&gt; per request (tool descriptions + role context). My prefill speed is &lt;strong&gt;11.5 tok/s&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;11,000 ÷ 11.5 ≈ 16 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's your wait before the first token appears — before the model even starts "thinking".&lt;/p&gt;

&lt;p&gt;The deeper issue: &lt;strong&gt;agent tools and SSD-streaming inference are architecturally mismatched.&lt;/strong&gt; Agents are "huge system prompt + frequent multi-turn calls"; streaming engines shine at "small prompt + long output". Dual-channel RAM would double prefill to ~23 tok/s — 16 minutes becomes 8. Still unusable.&lt;/p&gt;

&lt;h2&gt;
  
  
  So who is this actually for?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use case&lt;/th&gt;
&lt;th&gt;Experience&lt;/th&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local private Q&amp;amp;A (chat UI)&lt;/td&gt;
&lt;td&gt;1.3s warm / ~6s cold first token&lt;/td&gt;
&lt;td&gt;✅ sweet spot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Document analysis ≤3K tokens&lt;/td&gt;
&lt;td&gt;~30s to first token&lt;/td&gt;
&lt;td&gt;✅ acceptable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long-form writing&lt;/td&gt;
&lt;td&gt;4.3 tok/s, slower than reading&lt;/td&gt;
&lt;td&gt;⚠️ painful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coding-agent backend&lt;/td&gt;
&lt;td&gt;16-minute first token&lt;/td&gt;
&lt;td&gt;❌ mathematically dead&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you want the headline speeds, know which tier buys what:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;35B tier: no NVIDIA required.&lt;/strong&gt; The official support matrix is macOS Metal/CPU, iOS, Android CPU, Linux CPU, Windows CPU/Vulkan — no NVIDIA anywhere. The bottleneck is memory bandwidth: my 4→6 thread test was flat, and official numbers scale with bandwidth — M5 16GB does 24.8 tok/s, Android flagships 6–9 tok/s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;145B tier: NVIDIA is a hard gate.&lt;/strong&gt; Linux/Windows + NVIDIA GPU + CUDA 13, compute capability ≥7.5 (RTX 20-series up) per the v0.2.0 release notes. There's no official "minimum spec", but the model card includes a constrained test run: &lt;strong&gt;16 GiB VRAM + 20 GiB RAM budget, Q3_K, still 44.9 tok/s&lt;/strong&gt; — the closest thing to a documented floor. On the speed table: RTX 4090 24GB does 91.7 tok/s, RTX 5090 D does 121.2. Also budget disk: 145B weights are 40.8 GiB (Q3_K) / 47.8 GiB (NVFP4).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One line: &lt;strong&gt;35B runs on anything; 145B starts with buying an NVIDIA card.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The junk-reeconomy math
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Beelink SER 5600H/16G/512G (used, 2026-11 market)&lt;/td&gt;
&lt;td&gt;~$215&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+16GB stick for dual-channel (optional upgrade)&lt;/td&gt;
&lt;td&gt;~$28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Electricity (~60W × 4h/day)&lt;/td&gt;
&lt;td&gt;~$1/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Models, engine, tooling&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$0&lt;/strong&gt; (open source)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$245 for a fully offline, no-subscription, data-never-leaves local LLM terminal&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For comparison: a new RTX 4090 is $1,600+. This budget doesn't buy "fast" — it buys "runs" and "private". And the remaining bottleneck (memory bandwidth) happens to be the cheapest upgrade in consumer hardware.&lt;/p&gt;

&lt;p&gt;I still think this deployment proved something: &lt;strong&gt;Edge0's claimed floor is real.&lt;/strong&gt; A GPU-less, single-channel, second-hand mini PC really can run a 35B MoE at interactive speeds. Three years ago that needed a server; today it fits in a shoebox.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's the biggest model you've run on the worst hardware? Comments welcome.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Declarations: all benchmarks are personal measurements on the stated hardware, not official data; the tested checkpoint is Edge0-35B-A3B-preview. Edge0 name/trademarks belong to the Edge0 team (GitHub: Edge0-AI); this is an independent review — the UI logo in my screenshots is my own design. Inference framework: Apache-2.0; model weights: Edge0 Community Model License 1.0. References: official docs and the edge0-infer repo; patches shown inline.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hardware</category>
    </item>
  </channel>
</rss>
