@leopardracer: https://x.com/leopardracer/status/2055341758523883631

X AI KOLs Timeline 工具

摘要

一位用户分享了他们搭建双GPU本地AI实验室的经验,使用了RTX 4080 Super和5060 Ti,通过llama.cpp和llama-swap运行Qwen 3.6模型,以降低API成本并实现无限制的实验。

https://t.co/EnAVMcfxG4
查看原文
查看缓存全文

缓存时间: 2026/05/16 07:14

这套双GPU配置让我告别了OpenAI账单

**大家好,我是leopardracer!

**我的台式机里装了两块GPU,因为我喜欢在办公桌下有个本地AI实验室。

这就是真实原因。

不是因为500美元的API账单,不是因为我想取代所有托管模型,也不是因为我认为每个人都该在家里建个迷你数据中心。

我想在本地运行大型模型,把它们连接到我的工具上,进行实验而不用担心使用计量。如果某个代理循环了400次,我就杀掉进程。如果某个提示词太烂,我就重写。如果模型产生了幻觉,我就换掉它。

没有速率限制,没有API密钥,没有提示词离开我的机器。

这改变了你使用AI的方式。你不再把每个请求当成计费交易,而是开始把这个系统当成一个工作坊。

这就是我当前的配置。

我的实际硬件

这是一台台式机,不是服务器机架。

GPU 0: NVIDIA GeForce RTX 4080 SUPER,16GB GDDR6X

GPU 1: NVIDIA GeForce RTX 5060 Ti,16GB GDDR6

CPU: AMD Ryzen 9 9900X,12核心 / 24线程

内存: 64GB DDR5-5600

系统: CachyOS,基于Arch的滚动更新Linux

桌面环境: 基于Wayland的Hyprland

4080 SUPER是主力卡,5060 Ti是实验卡。两者加起来给我32GB的显存,如果愿意使用量化,足够运行30B级别的模型并保留有用的上下文。

关键不是每个人都必须有两块GPU。单块24GB的卡更简单。一张二手3090可能是很多人最实用的本地LLM显卡选择。但两块16GB的卡创造了一个不同的游乐场。

我可以把一个大模型拆分到两张卡上运行。我可以运行一个模型做编码,另一个做对比。我可以把一张GPU专用于文本,另一张留给视觉、嵌入或任何我想尝试的奇怪实验。

这种灵活性才是乐趣所在。

为什么是Qwen 3.6

Qwen 3.6是第一个让我觉得本地编码代理真正变得有趣的Qwen版本。

我的日常主力是Qwen3.6-27B,稠密模型。我也留着Qwen3.6-35B-A3B做实验,但27B稠密模型是我最先拿起来用的那个。

这个区别很重要。

根据我跟踪的Qwen技术报告数据:

Qwen3.6-27B:

  • SWE-bench Verified:77.2%
  • SWE-bench Pro:53.5%
  • Terminal-Bench 2.0:59.3%
  • SkillsBench平均:48.2%

Qwen3.6-35B-A3B:

  • SWE-bench Verified:73.4%
  • SWE-bench Pro:49.5%
  • Terminal-Bench 2.0:51.5%
  • QwenClawBench:52.6%

Claude Opus 4.7在我的基准笔记中仍然是最好的通用模型:SWE-bench Verified 87.6%,SWE-bench Pro 64.3%,Terminal-Bench 2.0 69.4%。我不假装本地Qwen能击败前沿API。

关键在于:本地Qwen足够好,值得实验,而且它运行在我自己的硬件上。

另一个胜利不是最大上下文长度。托管模型已经推到20万+ token,有些甚至更高。

胜利在于我可以本地滥用长上下文而不用考虑计费。我可以喂入杂乱的转录文本、代码库、研究笔记或抓取的文章,观察模型在哪里崩溃,修改提示词,然后重试。

API也能处理长上下文。但当你在用代理做实验时,长上下文很快变得昂贵。而在本地,限制只是显存和耐心。

技术栈

三个组件让这一切变得可用。

llama.cpp 运行模型。它处理CUDA、GGUF文件、量化、KV缓存设置、Flash Attention和token生成。

llama-swap 位于llama.cpp前面。它暴露兼容OpenAI的端点,并按需热切换模型。我可以把一条请求路由到Qwen,另一条路由到Gemma,并在短TTL后卸载未使用的模型。

本地代理和编码工具 调用这些端点。有些是个人脚本,有些是代理配置。重要的是它们与localhost通信,而不是托管API。

这意味着我的本地模型可以成为基础设施,而不仅仅是一个聊天窗口。

我的llama-swap配置

这是我用于较大本地模型的实际llama-swap配置模式。同样设置本地端点,让我的代理无需API密钥就能调用27B稠密日常主力。

容易忽略的重要设置:

CUDA_VISIBLE_DEVICES=0,1 告诉llama.cpp使用两块GPU。对于两块16GB的卡,这决定了是“有趣”还是“为什么什么都OOM?”

-ngl 99 尝试将模型层卸载到GPU。对于这个配置,我希望GPU尽可能多地工作。

--cache-type-k q8_0 --cache-type-v q4_0 对KV缓存进行量化。随着上下文增长,这一点更重要。长上下文不是免费的。模型权重占用显存,但上下文缓存也会随着你喂入更多token而增长。量化这个缓存是我让131K上下文变得可用的方法。

--flash-attn on 启用Flash Attention。在现代NVIDIA硬件上,这个标志感觉平淡无奇,直到你关掉它才发现它帮了大忙。

--chat-template-kwargs '{"enable_thinking":true}' 启用Qwen的思考模式。这对本地代理很有用,因为我想检查模型做出决策的过程,而不仅仅是最终答案。

本地代理才是乐趣所在

运行一个本地聊天模型不错。运行本地代理更好。

我有一个Scout代理,监控Hacker News、Reddit、Twitter、GitHub Trending、Hugging Face和RSS订阅。它对项目打分,提取有趣的内容,并将草稿放入我的Content/Insights/drafts文件夹。

LLM配置故意很简单:

api_key: "not-needed"

我还有一个GPU追踪器,监控RTX 5090的价格,并在价格达到我的阈值时给我发邮件。

那个api_key: "not-needed"一行就是整个氛围。

当代理在本地运行时,我可以在有用的方面变得鲁莽。我可以过度采样,可以重试,可以记录一切。我可以在真实工作流中测试糟糕的提示词。如果Scout认为每篇文章都重要,我就修改评分标准。如果GPU追踪器写出了糟糕的摘要,我就修改提示词。

失败模式是学习,而不是更大的账单。

32GB显存到底能带给你什么

32GB显存并不会让本地AI变得毫不费力。它让本地AI变得灵活。

有了这个配置,我可以把Qwen3.6-27B稠密模型作为日常主力运行,保留Qwen3.6-35B-A3B做实验,并且运行Gemma 4 26B做对比。我可以测试那些通过API会觉得烦人的上下文大小。我可以反复运行代理而不用查看仪表板。

最好的部分是尝试那些傻到不值得付费的事情。

如果我喂入10万token的杂乱笔记并要求找出矛盾,会发生什么?

如果Scout用更严格的评分标准给30个Hacker News帖子打分,会发生什么?

如果我要求模型检查一个代码库并生成五个竞争性的重构方案,会发生什么?

有些实验成功了,有些是垃圾。没关系。本地推理让垃圾变得廉价。

隐私是严肃的好处

有趣的部分是实验。严肃的部分是数据所有权。

每条提示词都留在我的机器上。每个响应都在本地生成。我的代码、笔记、家庭问题、健康日志以及半成形想法,不必仅仅因为我想让AI助手看看就离开我的桌面。

这并非关于托管AI公司的阴谋论。这是一个更简单的观点:如果模型在本地运行,我就不必信任供应商来处理那条提示词。

这对于个人操作系统很重要,对于私有代码很重要,对于健康问题很重要,对于任何你犹豫是否粘贴到Web应用中的笔记都很重要。

隐私的好处并不戏剧化。它是安静的。你不再想“我应该发送这个吗?”,因为答案是“不”。它从未离开过。

搭建路径

如果你想尝试,从小处着手。

你不需要和我一模一样的硬件。你需要一块支持CUDA的NVIDIA GPU,足够运行你想要的模型的显存,以及足够的耐心来调试CUDA一到两次。

对于7B到14B模型,12GB到16GB显存就够了。

对于27B到35B模型,24GB比较舒服。如果你把模型拆分到两张卡上,两张16GB卡也行得通。

对于长上下文,准备64GB系统内存。显存引人注目,但系统内存在你同时运行模型、代理、浏览器和桌面环境时就很重要了。

用CUDA编译llama.cpp:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_CUDA=1 -j

为你想要的模型下载一个GGUF量化版本。我用Unsloth的UD量化,因为它们对于这些较大模型很实用。

安装llama-swap:

pip install llama-swap

然后测试端点:

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "qwen3.6-27b", "messages": [{"role": "user", "content": "Hello"}]}'

如果得到响应,就把任何兼容OpenAI的客户端指向那个基础URL,开始实验。

故障排除笔记

CUDA内存不足: 首先减少上下文。长上下文通常是罪魁祸首。如果还不够,使用更激进的KV缓存量化。

只有一张GPU工作: 检查CUDA_VISIBLE_DEVICES=0,1并在模型加载时观察nvidia-smi。不要等到生成开始。你要在加载期间看到两张卡上都分配了内存。

生成速度慢: 确认模型层确实在GPU上。如果-ngl太低或CUDA没有正确编译,你可能在CPU上运行了更多内容。

模型无法加载: 更新llama.cpp并重新编译。新的GGUF和聊天模板通常需要最近的llama.cpp变更。

答案很奇怪: 在责怪模型之前先检查聊天模板。本地模型对提示格式很敏感。错误的模板可能让一个好模型看起来有问题。

这套配置做不到的事

它不能取代所有托管模型。

对于需要硬推理的任务,当质量比本地更重要时,我仍然使用前沿API。Claude和GPT类模型在某些任务上更好。这没问题。

它不能进行实时网络搜索,除非你给它工具。本地模型不会神奇地知道今天早上发生了什么。

它不能生成图像。图像需要ComfyUI或其他图像栈。

它也不安静。两块GPU满载时会发出噪音。风扇会呼呼转。

拥有你自己的实验室

我的台式机现在运行着几年前感觉荒谬强大的模型。这才是有趣的故事。

不是我优化了一张账单,也不是我找到了每个API的秘密替代品。有趣的是,消费级硬件加上开放模型,现在让一个人可以在家搭建一个私人AI实验室。

你可以检查它,可以破坏它,可以把它连接到代理中,可以喂入私有数据而不发送到任何地方。你可以通过接触整个技术栈来学习这个系统。

这就是为什么我在本地运行Qwen。

因为租用AI很有用。

但拥有它的一小部分更有趣。

如果你也在运行本地模型,我想听听你的配置。什么硬件?什么模型?最先出了什么问题?

点击下面的爱心,分享给那些认为AI一定很贵的人。

相似文章

RTX Pro 4500 Blackwell - Qwen 3.6 27B?

Reddit r/LocalLLaMA

一位开发者分享了在搭载 NVIDIA RTX Pro 4500 Blackwell 显卡的服务器上,使用 llama.cpp 运行 Qwen3.6-27B 模型的本地推理基准测试数据及 systemd 配置。该帖文征集了提升吞吐量的优化建议,并探讨了更大模型的潜在应用场景。