<?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: darkpenguin</title>
    <description>The latest articles on DEV Community by darkpenguin (@darkpenguin).</description>
    <link>https://dev.to/darkpenguin</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%2F3651721%2Ff7e78d4c-60d5-4fd6-8dc2-de904265360c.jpg</url>
      <title>DEV Community: darkpenguin</title>
      <link>https://dev.to/darkpenguin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/darkpenguin"/>
    <language>en</language>
    <item>
      <title>The age of local LLMs is here</title>
      <dc:creator>darkpenguin</dc:creator>
      <pubDate>Sat, 04 Jul 2026 00:24:41 +0000</pubDate>
      <link>https://dev.to/darkpenguin/the-age-of-local-llms-is-here-1nh5</link>
      <guid>https://dev.to/darkpenguin/the-age-of-local-llms-is-here-1nh5</guid>
      <description>&lt;p&gt;Half a year ago, I wanted to see for myself what can we currently have with local LLMs. I went down the rabbit hole, learned quite a lot in the process, and &lt;a href="https://dev.to/darkpenguin/local-llms-state-of-the-art-43n"&gt;shared my results in an article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The results were pretty discouraging: even with 32 GB VRAM, the best models I could run were both too slow and too dumb. At the same time, what you could get for free from inference providers was actually decent - and much faster. I remember my conclusion: "Let's wait for the next generation of models, which looks very promising. If we can run something comparable to full-size &lt;code&gt;Qwen3-Coder-480B&lt;/code&gt; locally, that would be &lt;del&gt;year of the Linux Desktop&lt;/del&gt; age of fully capable local LLMs.&lt;/p&gt;

&lt;p&gt;And now this day has arrived.&lt;/p&gt;




&lt;h2&gt;
  
  
  Models
&lt;/h2&gt;

&lt;p&gt;Half a year later, I'm revisiting this question. And this time, the whole situation has turned upside-down.&lt;/p&gt;

&lt;p&gt;Almost none of the providers still have free tier, and anything that's still free is barely good enough even for the simplest tasks. And is rate-limited all over. And on the local side, the next Qwen lineup is out. So, that's what I'm going to be looking at.&lt;/p&gt;

&lt;p&gt;Once again, I have two RX6800's, 16 GB each, and 64 GB RAM. On one hand, this is more VRAM than any "normal person" can have with one GPU - unless you've got something specifically for AI, like an unified-memory Mac or a DGX Spark. On the other hand, RX6800 is "pre-AI" - anything newer will have much better performance thanks to tensor processors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;&lt;/strong&gt;: This is a dense model, so basically you can't run it at all on anything less than 32 GB VRAM. It's the slowest one, but also the best one if you can run it. Its accuracy is claimed to be on par with Claude 4.5 Opus, and better than &lt;code&gt;Qwen3.5-397B-A17B&lt;/code&gt;. This is what I've been waiting for. It runs reasonably fast on my setup, so it's very much usable both in terms of performance and accuracy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;&lt;/strong&gt;: This one is MoE, and it's pretty small, so it's the fastest one. It's good for anything that doesn't require too much (i.e. for agentic tasks that don't need a lot of reasoning), and apparently better than &lt;code&gt;GLM-4.7-Flash&lt;/code&gt; or &lt;code&gt;Gemini-3.1-Flash-Lite&lt;/code&gt; (which is basically all you can get for free nowadays). So, we don't need all that anymore. And it's FAST!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Qwen-Coder-Next-80B&lt;/code&gt;&lt;/strong&gt;: It's big, but it's also MoE, so you can offload some experts to the CPU. On my setup, its performance is somewhere between 3.6-dense and 3.6-MoE. Its accuracy is claimed to be near the full-sized &lt;code&gt;GLM-4.7&lt;/code&gt;, or &lt;code&gt;Kimi K2.5&lt;/code&gt;, or &lt;code&gt;DeepSeek-V3.2&lt;/code&gt;. It's based on &lt;code&gt;Qwen-Next&lt;/code&gt;, fine-tuned specifically for coding.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Other than the new models, there are quite a lot of other improvements. Last time, REAP was just appearing. This time, there is a REAM variant of Qwen-Coder-Next-80B - that's when they merge the weights instead of simply pruning them. And based on the benchmarks, its accuracy is within the margin of error from the full model!&lt;/p&gt;

&lt;p&gt;In other news: we no longer need &lt;code&gt;llama-swap&lt;/code&gt; - &lt;code&gt;llama.cpp&lt;/code&gt; now has an experimental "router mode", where it's loading and unloading models itself. You can specify different parameters per model in a config file. The config file format is less robust than what &lt;code&gt;llama-swap&lt;/code&gt; had, but there is a very good reason to use it instead. Read on.&lt;/p&gt;




&lt;h2&gt;
  
  
  What else?
&lt;/h2&gt;

&lt;p&gt;In the real-life usage, you will probably want to switch models a lot. With a good enough SSD, loading a new model can be brought down to under a minute, and if you have enough RAM, then both smaller models fit into 64GB of page cache nicely. But here comes another problem: context cache. If you switch to a faster model and then back to a smarter one, then you'll have to reprocess your whole conversation. And that can easily take minutes.&lt;/p&gt;

&lt;p&gt;It would be really nice if there was a way to save that context cache, and restore it after switching back, wouldn't it? Turns out there is an option for this in &lt;code&gt;llama.cpp&lt;/code&gt;: when you switch models in router mode, it saves your slots to disk, then restores them! But this option does not work anymore, because for the newer models' attention mechanisms, you also have checkpoints, so only restoring slots it not enough. But there is a PR to save checkpoints as well! But it's not merged yet (last time I checked). So, I've created &lt;a href="https://github.com/dark-penguin/llama.cpp/tree/cherrypick/slot-save-restore" rel="noopener noreferrer"&gt;my own fork of &lt;code&gt;llama.cpp&lt;/code&gt;&lt;/a&gt; with this and some other yet-unmerged PRs included, which you are welcome to try!&lt;/p&gt;




&lt;h2&gt;
  
  
  Pi
&lt;/h2&gt;

&lt;p&gt;Now that we've got usable local models, it's time to choose a harness. And there's a lot of choice! Not only coding - lately, there is talk about OpenClaw all around, and Hermes is emerging as a better alternative with some interesting features.&lt;/p&gt;

&lt;p&gt;I've spent some time tinkering with Hermes, and quickly noticed two things. First, it feels very vibe-coded - even some basic features don't work. 8000+ open issues on its Github tell me that this is unlikely to be fixed any time soon. And second... Sometimes I have no idea what it's doing. I've tried turning on maximum verbosity in reasoning and tool calls, but that's one of the things that are bugged and doesn't work. I even developed &lt;a href="https://github.com/dark-penguin/llm-tools" rel="noopener noreferrer"&gt;a tiny proxy&lt;/a&gt; to intercept its requests that it doesn't show me, but that's a really janky solution. I can literally hear my LLMs working (apparently AMD GPUs are famous for their coil whine, which I consider a great feedback feature). I don't want to interrupt if it's taking so much time to think about something useful, but I don't even know what is it thinking about.&lt;/p&gt;

&lt;p&gt;And then I saw &lt;a href="https://www.youtube.com/watch?v=RjfbvDXpFls" rel="noopener noreferrer"&gt;Mario Zechner's talk about Pi&lt;/a&gt;. Specifically, how he was annoyed with the same things, and created his own minimalistic harness. His mindset sounds very close to what I'm looking for, so the next thing I'm going to do is tinker with Pi to my heart's content. I've listened to his other talks, and in one of them, he also said that he is very impressed with the current state of local LLMs; if all frontier models are turned off today - which in my opinion we can say is already happening with all the price changes - then he would be very happy with what we have now. There is also a lot of insight into AI in general.&lt;/p&gt;




&lt;p&gt;So, here it is - the moment when AI becomes available to hardcore libre software people who don't want to rely on software running on someone else's machine. Which also means we can experiment for free and without fear of it changing or disappearing. So, let's experiment a lot! And let's remember to use it to learn, and not to contribute to the slop-pocalypse of libre software.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>coding</category>
      <category>programming</category>
    </item>
    <item>
      <title>Local LLMs: state of the art</title>
      <dc:creator>darkpenguin</dc:creator>
      <pubDate>Mon, 08 Dec 2025 10:56:44 +0000</pubDate>
      <link>https://dev.to/darkpenguin/local-llms-state-of-the-art-43n</link>
      <guid>https://dev.to/darkpenguin/local-llms-state-of-the-art-43n</guid>
      <description>&lt;p&gt;With all the local LLMs available by now, you might get curious about what's the best we can have running locally and how does that compare against what you can get with free-tier inference providers. And the first question you'll have is: what model do I use?&lt;/p&gt;

&lt;p&gt;I've set out to answer those questions for myself. Here is what I've learned from this journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Goals and hardware
&lt;/h2&gt;

&lt;p&gt;My use case is agentic coding. Specifically, &lt;a href="https://kilo.ai/" rel="noopener noreferrer"&gt;KiloCode&lt;/a&gt;. That's pretty important because broadly speaking, there are two main use cases for LLMs, and some of the requirements are the opposite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creative writing/roleplay: you want the model to be creative - to be able to tell an interesting and unexpected story, rather than sticking to what you say.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agentic coding (or other agentic use): you want the model to do exactly what you say - the less "creativity", the better.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, you can control this with temperature, but generally some models are best for creative writing, and some are best for following instructions.&lt;/p&gt;

&lt;p&gt;I'm running those models on 64 GB RAM and two RX6800's with 16 GB VRAM each. This gives me 32 GB VRAM in total. It's not as fast as the latest NVidia graphics cards, but on the other hand, I can fit quite a lot in VRAM, and that's going to have a much more noticeable difference compared to NVidia cards.&lt;/p&gt;

&lt;p&gt;So, what are the most popular models for agentic coding, and what experience did I have with them?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Journey
&lt;/h2&gt;

&lt;p&gt;At first, I've tried &lt;strong&gt;Qwen3-Coder-30B-A3B-Instruct&lt;/strong&gt; - the obvious choice when you look for "the latest model" and "for coding". First of all, it was pretty slow. The first request from KiloCode is around 10k tokens, and processing that much input takes about one minute. It then gets cached, so consequent requests will be faster, but if you switch models - or if your model crashes and you have to restart it, which does happen pretty often - you'll have to wait for one minute again. And the more context you already have filled, the slower it gets, so you're looking at similarly long wait times after each request. What's more, very often it couldn't even use tools correctly, so using it was mostly fighting with the model rather than the model helping me. I've tried running the model at Q6 and Q8, but it didn't make them much better than Q4_K_XL.&lt;/p&gt;

&lt;p&gt;Then I've tried something similar: &lt;strong&gt;Qwen3-30B-A3B-Instruct-2507&lt;/strong&gt; . It's about as fast as the previous one, but this time it could use tools more consistently. It did pretty well with creating a basic project skeleton to begin iterating on, but it was pretty bad at finding and fixing bugs. I've asked it to add a few features, and it succeeded after a few attempts, but then the program could no longer run due to a (pretty obvious) null pointer dereferencing bug, and the model could not figure it out, no matter how many times I've tried. Instead, it tried to fix nonexistent issues, and messed up the code more and more.&lt;/p&gt;

&lt;p&gt;This bug was pretty obvious and easy to fix, but it gave a lot of trouble to the models, so I've decided to use this as an exam. Is there any model that can fix this? And there was: &lt;strong&gt;gpt-oss-120b&lt;/strong&gt; , which I've managed to run now that I've gained enough experience in this. And it was FAST! But it is famous for being somewhat "derpy", occasionally failing to use tools, and thinking a lot. It has figured out the bug, but instead of fixing it properly, it slapped a proxy function in between to substitute the null pointer. And as my project progressed further, most tasks became too complex even for gpt-oss-120b to handle. And it is still much slower than what you can get with a free-tier cloud inference provider.&lt;/p&gt;

&lt;p&gt;So, I've hit the ceiling in terms of smartness, but there was still room for improvement in terms of speed. I've suddenly realized that ROCm v7 is WAY WAY faster than ROCm v6, and even faster than Vulkan, especially in prompt processing - what I needed the most! So I migrated from Vulkan to ROCm v7. Also, MXFP4 models really are (a little) faster even on AMD graphics cards.&lt;/p&gt;

&lt;p&gt;It was at this point that the first REAP models have appeared. And this made a lot of difference! But obviously only in speed, not "smartness". Qwen3 and Qwen3-Coder got much faster, even though they did already fit completely in my VRAM before. gpt-oss (now 58b) got very very fast! At least compared to everything I've seen before. With all that, I got that 10k prompt that initially took about a minute down to only about 10 seconds!&lt;/p&gt;

&lt;p&gt;REAP also made it possible to try &lt;strong&gt;GLM-4.5-Air&lt;/strong&gt; which wouldn't even fit in my RAM before. At first, it did not work at all - it was only outputting "???????". The solution to this is to disable its thinking. But either way, it is SLOW. Even with all those improvements. Like 5-10 minutes to ingest that initial 10k prompt slow. It's obviously completely unusable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tools
&lt;/h2&gt;

&lt;p&gt;I've learned a lot while doing this research. I've tried &lt;a href="https://ollama.com/" rel="noopener noreferrer"&gt;ollama&lt;/a&gt;, then &lt;a href="https://github.com/ggml-org/llama.cpp" rel="noopener noreferrer"&gt;llama.cpp&lt;/a&gt;, then &lt;a href="https://github.com/mostlygeek/llama-swap" rel="noopener noreferrer"&gt;llama-swap&lt;/a&gt;. When I saw that some models have trouble with tool calls, I noticed that there is no way in KiloCode (and I assume most other similar software) to see the raw model output, so I wanted a tool for that. I also wanted a tool to benchmark the models' performance in a consistent way that would be easy to compare. Apparently no established benchmark exists; everyone simply writes their own. I've seen multiple benchmarks like this, but wanted something more feature-complete. I also saw llama-bench, but turns out it's not very representative or consistent, as it uses literally random tokens as input.&lt;/p&gt;

&lt;p&gt;At the same time, I needed something to write - some simple project to use as an example, simple enough that local models could handle it. And then it turned a little recursive: why don't I write that toolkit? And &lt;a href="https://github.com/dark-penguin/llm-tools" rel="noopener noreferrer"&gt;that's what I did&lt;/a&gt;. It has two tools. One is a benchmark that can test multiple models in multiple configurations at once, with up to 100k context, and output results in a table you can easily save in a simple text file. The other one is a proxy that dumps raw model output in real-time.&lt;/p&gt;

&lt;p&gt;Thanks to the &lt;a href="https://kilo.ai/discord" rel="noopener noreferrer"&gt;KiloCode Discord community&lt;/a&gt; for helping me a lot every step of the way!&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"Small" models - ones you can fit completely in 32 GB VRAM at Q4 - are basically completely impotent.&lt;/li&gt;
&lt;li&gt;"Big guns" models - ones you can run on 64GB RAM (but very little VRAM as it's only used for the KV cache!) - can only help with pretty basic things, and are still way slower than free-tier inference providers.&lt;/li&gt;
&lt;li&gt;Full-sized models running in the cloud - Qwen3-235b-A22b-Instruct-2507, Qwen3-Coder-480b, GLM-4.5-Air - can do way better. And way faster. They are actually usable and helpful. And when they are not enough, asking ChatGPT the old-fashioned way seems to be the best you can get.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With MoE and REAP, the state of local LLMs has advanced profoundly. Let's hope that in the near future, we'll get more technologies like that. Once we can run something comparable to already existing full-size models locally at reasonable speed, I'd call that the "day of the LLM desktop".&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>programming</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
