<?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: Pradeep Gudipati</title>
    <description>The latest articles on DEV Community by Pradeep Gudipati (@pradeepcg).</description>
    <link>https://dev.to/pradeepcg</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%2F4108237%2F3081ff07-4f67-4f34-8a80-3f92282f67ab.png</url>
      <title>DEV Community: Pradeep Gudipati</title>
      <link>https://dev.to/pradeepcg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pradeepcg"/>
    <language>en</language>
    <item>
      <title>My RTX 3060 Can Run Many LLMs — Just Not at the Same Time</title>
      <dc:creator>Pradeep Gudipati</dc:creator>
      <pubDate>Thu, 03 Sep 2026 14:59:45 +0000</pubDate>
      <link>https://dev.to/pradeepcg/my-rtx-3060-can-run-many-llms-just-not-at-the-same-time-36ao</link>
      <guid>https://dev.to/pradeepcg/my-rtx-3060-can-run-many-llms-just-not-at-the-same-time-36ao</guid>
      <description>&lt;p&gt;Running a local LLM is easy.&lt;/p&gt;

&lt;p&gt;Running multiple specialized models for coding, reasoning and AI agents on a 12GB GPU is where things get interesting.&lt;/p&gt;

&lt;p&gt;My local AI machine is fairly ordinary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NVIDIA RTX 3060 — 12GB VRAM&lt;/li&gt;
&lt;li&gt;AMD Ryzen 7 5800X&lt;/li&gt;
&lt;li&gt;64GB RAM&lt;/li&gt;
&lt;li&gt;Ubuntu Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Modern 7B–12B models run surprisingly well on this hardware.&lt;/p&gt;

&lt;p&gt;But my workflow doesn’t need just one model.&lt;/p&gt;

&lt;p&gt;I might want one model for coding, another for reasoning, one verified for tool calling, one for embedding and a last one for reranking while another I’m experimenting with.&lt;/p&gt;

&lt;p&gt;My GPU can run them.&lt;/p&gt;

&lt;p&gt;It just can’t keep all of them loaded at once.&lt;/p&gt;

&lt;p&gt;This Became a Scheduling Problem&lt;/p&gt;

&lt;p&gt;Initially I was thinking about inference. Which model? Which quantization? GGUF or SafeTensors? llama.cpp or vLLM?&lt;/p&gt;

&lt;p&gt;But the bigger problem turned out to be scheduling: with only 12GB, deciding which model gets the GPU right now, and getting out of the way of the one that's leaving.&lt;/p&gt;

&lt;p&gt;Which model? Which quantization? GGUF or SafeTensors? llama.cpp or vLLM?&lt;/p&gt;

&lt;p&gt;But eventually the bigger problem became:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    A["Request&amp;lt;br/&amp;gt;requested model"] --&amp;gt; B{"Requested model&amp;lt;br/&amp;gt;already loaded?"}
    B --&amp;gt;|Yes| G["Serve request"]
    B --&amp;gt;|No| C["Drain&amp;lt;br/&amp;gt;current model"]
    C --&amp;gt; D["Unload&amp;lt;br/&amp;gt;current model"]
    D --&amp;gt; E["Free&amp;lt;br/&amp;gt;GPU / VRAM"]
    E --&amp;gt; F["Load&amp;lt;br/&amp;gt;requested model"]
    F --&amp;gt; G&lt;/code&gt;&lt;/pre&gt;



&lt;blockquote&gt;
&lt;p&gt;I wanted the request to determine which model occupies the GPU.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I didn’t want every application to understand my inference infrastructure.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;Coding model    → :8081&lt;br&gt;
Reasoning model → :8082&lt;br&gt;
vLLM model      → :8000&lt;br&gt;
Other model     → :8083&lt;/p&gt;

&lt;p&gt;I wanted:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TB
    OC["opencode"]
    AG["AI Agents"]
    SDK["Python / Node SDKs"]
    APP["Applications"]

    OC --&amp;gt; API
    AG --&amp;gt; API
    SDK --&amp;gt; API
    APP --&amp;gt; API

    API["One OpenAI-Compatible API&amp;lt;br/&amp;gt;:9090"]

    API --&amp;gt; SW["GGUF Switchboard&amp;lt;br/&amp;gt;Model Scheduler"]

    SW --&amp;gt; LC["llama.cpp"]
    SW --&amp;gt; VL["vLLM"]

    LC --&amp;gt; GG["GGUF Models"]
    VL --&amp;gt; ST["SafeTensors Models"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;When a request comes in for a model that isn't resident, Switchboard drains the current model — it stops accepting new requests and lets in-flight ones finish — then unloads it, waits for VRAM to actually free, and loads the requested model before serving. On my 3060 a swap between 7–12B GGUF models costs a few seconds of cold-load latency, so the scheduler batches consecutive requests for the same model and only pays that cost on an actual switch.&lt;/p&gt;

&lt;p&gt;The clients should be boring.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The infrastructure should handle the complexity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Not Ollama or LM Studio?
&lt;/h2&gt;

&lt;p&gt;Both are excellent tools.&lt;/p&gt;

&lt;p&gt;Ollama makes downloading and running local models incredibly easy.&lt;/p&gt;

&lt;p&gt;LM Studio is excellent for discovering, configuring and experimenting with them.&lt;/p&gt;

&lt;p&gt;My requirement was slightly different.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I wanted to treat multiple local models as shared infrastructure, especially on machines where VRAM is constrained.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I also didn’t want to choose one inference ecosystem.&lt;/p&gt;

&lt;p&gt;On my 3060, I often prefer:&lt;/p&gt;

&lt;p&gt;GGUF → llama.cpp&lt;/p&gt;

&lt;p&gt;On larger GPU systems, I may want:&lt;/p&gt;

&lt;p&gt;SafeTensors → vLLM&lt;/p&gt;

&lt;p&gt;The application shouldn’t care.&lt;/p&gt;

&lt;p&gt;It should ask for a model and let the infrastructure determine how to serve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  So I Built GGUF Switchboard
&lt;/h2&gt;

&lt;p&gt;That experiment became GGUF Switchboard.&lt;/p&gt;

&lt;p&gt;It’s an open-source model scheduler that provides one OpenAI-compatible endpoint while managing local model lifecycles underneath it.&lt;/p&gt;

&lt;p&gt;Some of the problems I’m trying to solve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hardware-aware model discovery&lt;/li&gt;
&lt;li&gt;GGUF + SafeTensors support&lt;/li&gt;
&lt;li&gt;llama.cpp + vLLM backends&lt;/li&gt;
&lt;li&gt;request-driven model switching&lt;/li&gt;
&lt;li&gt;drain/unload/load lifecycle&lt;/li&gt;
&lt;li&gt;GPU resource management&lt;/li&gt;
&lt;li&gt;tool-call conformance testing for AI agents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;ggs models search "qwen"&lt;/p&gt;

&lt;p&gt;Instead of just searching for Qwen models, Switchboard considers the hardware it’s running on so I can answer the question I actually care about:&lt;/p&gt;

&lt;p&gt;What makes sense on this machine?&lt;/p&gt;

&lt;p&gt;The Goal&lt;/p&gt;

&lt;h2&gt;
  
  
  The simplest way I can describe the project is:
&lt;/h2&gt;

&lt;p&gt;Ollama and LM Studio make running a local model easy. GGUF Switchboard is trying to make operating a collection of local models boring.&lt;/p&gt;

&lt;p&gt;For constrained GPUs, that’s exactly what I wanted.&lt;/p&gt;

&lt;p&gt;Try It&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;GGUF Switchboard is open source: &lt;a href="https://github.com/pradeepgudipati/gguf-switchboard" rel="noopener noreferrer"&gt;GitHub — GGUF Switchboard&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Demos, screenshots, architecture and documentation: &lt;a href="https://pradeepcg.com/products/gguf-switchboard/" rel="noopener noreferrer"&gt;GGUF Switchboard Product Page&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the deeper technical write-up: &lt;a href="https://pradeepcg.com/blog/running-local-ai-coding-stack-rtx-3060-model-switchboard/" rel="noopener noreferrer"&gt;Read the full article on my blog&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I’ve also published a shorter version on Medium: &lt;a href="https://medium.com/@pradeepgudipati/running-local-ai-coding-models-on-an-rtx-3060-12gb-why-i-built-a-model-switchboard-48d7a179f4e4" rel="noopener noreferrer"&gt;Running Local AI Coding Models on an RTX 3060 12GB&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  I’m Looking for Real-World Configurations
&lt;/h2&gt;

&lt;p&gt;If you’re running local LLMs on an 8–16GB GPU, I’d like to know what actually works for you day-to-day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU&lt;/li&gt;
&lt;li&gt;model + quantization&lt;/li&gt;
&lt;li&gt;llama.cpp / Ollama / LM Studio / vLLM&lt;/li&gt;
&lt;li&gt;coding agent&lt;/li&gt;
&lt;li&gt;tool-calling reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If GGUF Switchboard looks useful, try it and star the repo.&lt;/p&gt;

&lt;p&gt;More importantly, open an issue if your hardware/model combination doesn’t work.&lt;/p&gt;

&lt;p&gt;Real-world configurations are exactly what I want to use to improve the project.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiops</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
