<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Freetoken on vishctl</title><link>https://vishctl.dev/tags/freetoken/</link><description>Recent content in Freetoken on vishctl</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 07 Sep 2026 14:30:00 +0800</lastBuildDate><atom:link href="https://vishctl.dev/tags/freetoken/index.xml" rel="self" type="application/rss+xml"/><item><title>Running a 35B MoE Model on an 8 GB Laptop GPU: Testing FreeToken</title><link>https://vishctl.dev/posts/running-freetoken-on-8gb-laptop-gpu/</link><pubDate>Mon, 07 Sep 2026 14:30:00 +0800</pubDate><guid>https://vishctl.dev/posts/running-freetoken-on-8gb-laptop-gpu/</guid><category>ai</category><category>local-llm</category><category>freetoken</category><category>gpu</category><category>homelab</category><category>nvidia</category><description>Testing FreeToken on an RTX 4070 Laptop GPU: running Qwen 3.6 35B-A3B NVFP4 across 8 GB VRAM and 32 GB RAM with hierarchical memory offloading.</description><content:encoded><![CDATA[<p>Running large language models locally usually comes down to a hard hardware boundary: video RAM. If a model does not fit into your GPU&rsquo;s VRAM, performance usually falls off a cliff as soon as standard runtimes fall back to system memory over the PCIe bus.</p>
<p>Mixture of Experts (MoE) architectures offer an attractive theoretical escape hatch. While the total parameter count can be large (30B to 70B+), only a sparse subset of expert layers activates for any given token. However, standard local runtimes still require loading the entire weight footprint into memory, which puts 30B+ models out of reach for everyday consumer laptops with 8 GB of VRAM.</p>
<p>Enter <a href="https://github.com/FlashML-org/FreeToken">FreeToken</a> by FlashML, backed by their research paper (<a href="https://arxiv.org/abs/2608.16157">arXiv:2608.16157</a>). FreeToken is an edge inference runtime designed specifically to run frontier MoE models on consumer hardware by dynamically managing a hierarchical cache between GPU VRAM and host RAM.</p>
<p>I recently downloaded FreeToken to put their claims to the test on my modest laptop GPU. Here is what the setup looked like, how FreeToken handles memory under the hood, and the real-world generation numbers I observed.</p>
<h3 id="the-test-rig">The Test Rig</h3>
<p>My test machine is a portable laptop, not a high-end multi-GPU workstation:</p>
<ul>
<li><strong>CPU:</strong> 13th Gen Intel Core i9-13900H (14 cores, 20 threads)</li>
<li><strong>GPU:</strong> NVIDIA GeForce RTX 4070 Laptop GPU (8.0 GiB VRAM)</li>
<li><strong>Host RAM:</strong> 32 GB DDR5 (31.7 GiB usable)</li>
<li><strong>Operating System:</strong> Windows 11</li>
<li><strong>Runtime:</strong> FreeToken Desktop (v0.2.0-beta.17)</li>
</ul>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/01-freetoken-website-download.png"
         alt="FreeToken website download page"/> <figcaption>
            <p>The FreeToken landing page highlights bringing frontier models to consumer edge hardware.</p>
        </figcaption>
</figure>

<p>On paper, an 8 GB VRAM budget makes running a 35-billion parameter model look impossible. In traditional setups, 8 GB VRAM limits you to 7B or 8B parameter models in 4-bit quantizations (such as Q4_K_M). Attempting to load a 35B model typically triggers out-of-memory errors or slows inference to a crawl.</p>
<h3 id="installing-freetoken-and-exploring-the-library">Installing FreeToken and Exploring the Library</h3>
<p>The FreeToken desktop app is available to download directly from the <a href="https://www.flashml.ai/">FlashML website</a>. It provides a self-contained installer that is quick to set up on Windows. When you launch it, the interface automatically detects your hardware specs, available VRAM, and system RAM, and presents a curated library of models optimized for edge offloading.</p>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/02-hardware-specs-and-model-library.png"
         alt="FreeToken hardware detection and model library"/> <figcaption>
            <p>FreeToken accurately detects the RTX 4070 Laptop GPU (8 GB) and 32 GB RAM, recommending compatible models.</p>
        </figcaption>
</figure>

<p>For this test, I selected <code>Qwen3.6-35B-A3B NVFP4</code> (<code>nvidia/Qwen3.6-35B-A3B-NVFP4</code>). This is a 35-billion parameter MoE model using NVIDIA&rsquo;s 4-bit floating point (NVFP4) format, with an initial download size of 21.9 GiB.</p>
<p>Before loading the model, the console dashboard showed clean baseline resource usage:</p>
<ul>
<li><strong>GPU VRAM:</strong> 0.4 / 8.0 GiB</li>
<li><strong>Host RAM:</strong> 11.0 / 31.7 GiB</li>
<li><strong>GPU Temp:</strong> 42°C at idle</li>
</ul>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/03-system-resources-idle.png"
         alt="System resources at idle before model loading"/> <figcaption>
            <p>Idle console telemetry: 0.4 GiB VRAM used, ready for model weights.</p>
        </figcaption>
</figure>

<h3 id="weight-conversion-the-ftw-format">Weight Conversion: The FTW Format</h3>
<p>Once the 21.9 GiB download finished, FreeToken flagged the model as needing conversion before it could be launched.</p>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/05-download-complete-needs-conversion.png"
         alt="Download complete prompt indicating conversion is required"/> <figcaption>
            <p>Raw model download complete (21.9 GiB), prompting for weight conversion.</p>
        </figcaption>
</figure>

<p>FreeToken converts raw Hugging Face weights into its proprietary format called <strong>FTW</strong> (FreeToken Weight format). During this process, the engine repacks and organizes the tensors into memory-mapped structures optimized for rapid streaming between host RAM and GPU memory.</p>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/06-converting-weights-to-ftw.png"
         alt="Converting raw weights into FTW format"/> <figcaption>
            <p>Repacking raw weights into FTW format for fast memory streaming.</p>
        </figcaption>
</figure>

<p>The conversion took just over a minute on the i9-13900H and NVMe storage, producing a compact 19.5 GiB weight package.</p>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/07-conversion-complete-ftw.png"
         alt="Conversion complete showing 19.5 GiB repacked size"/> <figcaption>
            <p>Conversion complete: 19.5 GiB ready for execution.</p>
        </figcaption>
</figure>

<h3 id="loading-the-model-and-memory-allocation">Loading the Model and Memory Allocation</h3>
<p>Starting the model triggers the weight allocation phase. Instead of attempting to cram the entire 19.5 GiB into the 8 GB VRAM, FreeToken partitions the workload across both memory tiers.</p>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/08-loading-weights-into-vram.png"
         alt="Loading model weights into VRAM"/> <figcaption>
            <p>Starting model and populating active weights into VRAM.</p>
        </figcaption>
</figure>

<p>Once loaded, the memory profile was eye-opening:</p>
<ul>
<li><strong>VRAM Usage:</strong> 6.8 GiB / 8.0 GiB (85% utilization, leaving a healthy buffer for OS display compositing)</li>
<li><strong>Host RAM Usage:</strong> 30.2 GiB / 31.7 GiB (95% utilization)</li>
<li><strong>GPU Status:</strong> Running at 45°C, drawing only 7W at idle</li>
</ul>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/09-model-running-vram-ram-usage.png"
         alt="Model running with VRAM and RAM utilization"/> <figcaption>
            <p>Model running: 6.8 GiB in VRAM and 30.2 GiB in system RAM.</p>
        </figcaption>
</figure>

<h3 id="the-cache-architecture-under-the-hood">The Cache Architecture Under the Hood</h3>
<p>The console view provides detailed insight into how FreeToken manages this memory footprint:</p>
<ol>
<li><strong>MoE Expert Cache:</strong> FreeToken allocated 916 active expert slots in VRAM out of a total pool of 10,240 slots, consuming 1.51 GiB of VRAM. As different experts are needed during generation, they are dynamically paged in and out from the host RAM cache.</li>
<li><strong>KV Cache:</strong> 8K tokens of context were allocated in VRAM, consuming just 0.16 GiB.</li>
<li><strong>Mamba State Slots:</strong> 24 state slots were reserved, using 1.44 GiB of VRAM.</li>
</ol>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/10-cache-architecture-console.png"
         alt="Cache architecture telemetry in console"/> <figcaption>
            <p>Detailed cache breakdown: MoE expert cache, KV cache, and Mamba state slots in VRAM.</p>
        </figcaption>
</figure>

<p>This hierarchical design is the core reason the model can run without crashing. Inactive experts reside in system RAM (filling ~30 GB of system memory), while the active attention layers, KV cache, and currently triggered experts reside in the 8 GB VRAM.</p>
<h3 id="real-world-performance--generation-speed">Real-World Performance &amp; Generation Speed</h3>
<p>To evaluate real-world performance, I tested a conversational prompt with reasoning enabled:</p>
<blockquote>
<p><strong>User:</strong> &ldquo;hi, how are you ?&rdquo;</p>
</blockquote>
<p>The model engaged its full thinking process, taking 1 minute and 9 seconds to plan and structure its response, and then generated 393 tokens at <strong>4.3 tokens per second</strong>.</p>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/11-chat-inference-test.png"
         alt="Chat inference test output and token speed"/> <figcaption>
            <p>Chat generation benchmark: 393 tokens generated at 4.3 tok/s with full chain-of-thought thinking.</p>
        </figcaption>
</figure>

<p>While 4.3 tokens per second is not real-time voice conversational speed, it is remarkably steady for running a <strong>35-billion parameter model on an 8 GB laptop GPU</strong>. For tasks like code review, background agent execution, document analysis, or local drafting, 4.3 tok/s is completely practical.</p>
<p>The model detail sheet confirms the architecture and licensing details:</p>
<ul>
<li><strong>Base Repository:</strong> <code>nvidia/Qwen3.6-35B-A3B-NVFP4</code></li>
<li><strong>Context Length:</strong> 262,144 tokens (256K context window)</li>
<li><strong>License:</strong> Apache 2.0</li>
</ul>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/12-model-details-huggingface.png"
         alt="Model detail card on FreeToken"/> <figcaption>
            <p>Model details: 262K context window, NVFP4 quantization, and Apache 2.0 license.</p>
        </figcaption>
</figure>

<h3 id="built-in-agentic-tooling--local-endpoints">Built-in Agentic Tooling &amp; Local Endpoints</h3>
<p>FreeToken also includes built-in support for developer tools and coding agents.</p>
<p>The <strong>Apps</strong> tab exposes both OpenAI-compatible and Anthropic-compatible local HTTP endpoints:</p>
<ul>
<li><strong>OpenAI Endpoint:</strong> <code>http://127.0.0.1:1919/v1</code></li>
<li><strong>Anthropic Messages Endpoint:</strong> <code>http://127.0.0.1:1919/v1/messages</code></li>
</ul>
<figure class="post-screenshot">
    <img loading="lazy" src="https://vishctl.dev/images/posts/freetoken-8gb-laptop-gpu/04-local-api-endpoints-and-apps.png"
         alt="FreeToken Apps tab showing local endpoints and integrations"/> <figcaption>
            <p>Local OpenAI and Anthropic compatible endpoints with one-click configurations for Claude Code, Codex, opencode, and more.</p>
        </figcaption>
</figure>

<p>FreeToken provides quick configuration presets for popular coding assistants:</p>
<ul>
<li><strong>Claude Code:</strong> Configurable via local Anthropic endpoint routing</li>
<li><strong>Codex / opencode / openclaw:</strong> One-click environment setups</li>
<li><strong>Hermes / DeepSeek Harness:</strong> Direct command-line integration</li>
</ul>
<p>Having drop-in compatibility with both OpenAI and Anthropic API schemas means you can point tools like Claude Code directly to your localhost port without running a reverse proxy.</p>
<h3 id="where-freetoken-fits">Where FreeToken Fits</h3>
<p>FreeToken is a relatively young product, but its approach solves a real constraint for local inference.</p>
<h4 id="strengths">Strengths</h4>
<ul>
<li><strong>Bypasses the VRAM limit:</strong> Running a 35B MoE model on an 8 GB laptop GPU without manual layer-by-layer offload tuning works out of the box.</li>
<li><strong>Hierarchical caching:</strong> The dynamic MoE expert cache keeps VRAM usage around 6.8 GiB, preventing driver resets and CUDA out-of-memory crashes.</li>
<li><strong>Local developer endpoints:</strong> Dual support for OpenAI and Anthropic endpoints makes integration with modern coding agents straightforward.</li>
<li><strong>Simple setup on Windows:</strong> No manual compilation, no CUDA toolkit troubleshooting, and a clean desktop GUI.</li>
</ul>
<h4 id="limitations">Limitations</h4>
<ul>
<li><strong>System RAM is the real requirement:</strong> While VRAM requirements drop significantly, your host RAM must be large enough to hold the repacked weights. On my machine, the model took 30.2 GB of system RAM. If your laptop only has 16 GB of RAM, you will not be able to run 35B models this way.</li>
<li><strong>Initial conversion step:</strong> Each new model requires a one-time repacking step into the FTW format before the first run.</li>
<li><strong>Generation throughput:</strong> At roughly 4.3 tokens per second, it is well suited for asynchronous workloads, coding agents, and complex reasoning queries, but not for instant conversational back-and-forth.</li>
</ul>
<h3 id="wrap-up">Wrap-up</h3>
<p>If you have a laptop with 32 GB of system RAM and a modest 8 GB NVIDIA GPU, FreeToken is worth checking out. It makes 35B-class MoE models runnable on consumer hardware that would otherwise choke on them, keeping your data completely local.</p>
<p>You can download the desktop app directly from <a href="https://www.flashml.ai/">FlashML</a>, check out the project on <a href="https://github.com/FlashML-org/FreeToken">GitHub</a>, and read their research paper on <a href="https://arxiv.org/abs/2608.16157">arXiv:2608.16157</a>.</p>
]]></content:encoded></item></channel></rss>