# 我花200英镑把一台数据中心级GPU装进了我的游戏电脑

- 来源：Hacker News 热门（buzzing.cc 中文翻译）
- 作者：birdculture
- 发布时间：2026-05-31 23:55
- AIHOT 分数：70
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmptzehi500cdsla80uvg4kgh
- 原文链接：https://blog.tymscar.com/posts/v100localllm

## 精选理由

一个200英镑的二手 V100 加适配器，就让游戏电脑用上了 32GB 显存，跑 Qwen3.6-27B 达到 32 tok/s，噪音问题也解决了。对于想低成本本地跑大模型的人，这篇 DIY 手记很实用。

## AI 摘要

一名用户以200英镑的价格购入了一块数据中心级GPU，并将其成功安装到自己的游戏电脑中。文章记述了这一非标准硬件改装过程、遇到的技术挑战以及最终实现本地运行大语言模型的体验。

## 正文

花 200 英镑把一块数据中心 GPU 塞进了我的游戏 PC

2026-05-30

Oscar Molnar

13 分钟阅读（2710 字）

#

家庭实验室

#

GPU

#

NixOS

#

本地大语言模型

#

硬件

#

调试

我原本已经有一块 RTX 4080。16GB 的显存。打游戏够用，但跑我想在本地运行的模型就不够了。在 GPU 领域，下一步要么花大价钱买一块显存更大的显卡，要么另寻他路。

我找到了另一条路。

我买了一块连标准 PCIe 接口都没有的数据中心 GPU，用转接卡把它塞进了我的游戏 PC。现在，我拥有两块 GPU 共 32GB 显存，能以每秒 32 个模型 token 的速度运行一个 270 亿参数的模型。整件事只花了我 200 英镑。

这块 GPU

这是一块 Tesla V100 SXM2 16GB。它专为 NVIDIA 的 DGX 服务器和超大规模服务器机架设计。SXM2 形态意味着它没有 PCIe 插槽，没有显示输出接口，也没有普通的电源接口。它插在服务器机架内一块专用板上，通过 NVLink 通信。

你不能直接把它插到主板上。没有辅助手段不行。

但关键在于：这是一块 Volta 架构的 GPU，拥有 16GB HBM2 内存、5120 个 CUDA 核心，我在 eBay 上花大约 150 英镑淘到的。它的算力依然真实可用，显存也是实打实的。而它的内存带宽才真正令人惊讶。

HBM2 是不同级别的内存。V100 拥有 4096 位内存总线，提供 900 GB/s 的带宽。做个对比，我那块搭载 fancy GDDR6X 显存的 RTX 4080 只能达到 736 GB/s。这块 2017 年的 V100，内存带宽比 2022 年发布的 GPU 还要高出 22%。

而且输掉的不仅仅是 NVIDIA 的消费级显卡。Apple 的 M3 Max 是 400 GB/s，M4 Max 是 546 GB/s。全新的 M5 Max，买一台搭载它的笔记本要花掉你超过 3000 英镑，带宽也只有 614 GB/s。一块 2017 年的 GPU 击败了市面上所有 Mac。

与我的 4080 最接近的 AMD 竞品是 RX 7900 XTX，它在 24GB GDDR6 显存上能达到 960 GB/s。从技术上讲，这略胜 V100，但 7900 XTX 售价 700 英镑以上，而且 ROCm 对 LLM 推理的支持与 CUDA 相比仍然粗糙。V100 以不到四分之一的价格提供了该带宽的 94%，并且它能直接与 llama.cpp 配合使用。

唯一能轻松胜过它的消费级 GPU 是 RTX 5090，带宽达到 1792 GB/s，而那张卡售价超过 2000 英镑。对于大语言模型推理而言，内存带宽是决定每秒 token 数的瓶颈，这一点比几乎其他任何因素都更重要。

唯一的问题在于接口。

转接卡#

结果发现，有人制造了 SXM2 转 PCIe 的转接卡。它并非英伟达生产，也不受任何官方支持。它只是一块裸露的 PCB，一侧是 SXM2 插槽，另一侧是 PCIe 金手指接口。我花了大约 50 英镑买下它。其中一半可能只是铜的成本。

所以总共花了大约 200 英镑，我就得到了一块 16GB 显存的 GPU，可以插在我的主板上，与我的 RTX 4080 并肩工作。总显存达到 32GB。而一块 32GB 显存的单张 RTX 5090 售价超过 2000 英镑。我并不是说体验相同，我只是说显存容量一样。

地狱级风扇#

在我能用 V100 做任何有用的事情之前，必须先解决风扇问题。

V100 SXM2 原本设计安装在配备工业级散热的 2U 服务器内部。转接卡上的风扇毫不含蓄，绝不安静，绝不是你想放在自己睡觉的房间里那种东西。

我用 Apple Watch 测量了一下：

82 分贝。这介于垃圾处理器和割草机之间，远远超过“电脑很吵”的程度，进入了“我在自己家里是不是该戴耳塞”的范畴。

最糟糕的是：你无法控制它。我试过 nvidia-smi，试过在 Linux 上扫描它，甚至在 Windows 上试过 Afterburner（稍后会详述，这套配置在 Windows 上几乎无法正常工作）。全都没用。这块转接卡上的风扇设计初衷就不是被控制的。它被设计成永远以 100% 转速运行，待在没人需要听到它的服务器机架里。

这是我试图弄清风扇引脚定义的场景。我猜测它可能是一个怪异接口上的标准机箱风扇引脚定义，于是我把两根跳线插到 VCC 和接地端，然后用一块 9V 电池去碰触它们。风扇转了起来。而且比它通常得到的 12V 供电时安静得多：

这证实了引脚定义，也让我看到了驯服这个风扇的希望。

让风扇听从理智#

9V电池测试告诉我，引脚排列属于标准机箱风扇范畴，只是接口比较特殊。接下来的问题是，如果我把测速线和PWM引脚接到主板上，风扇是否真的会对PWM控制做出响应。

于是我把几根杜邦线塞进接口，另一端插到一个空闲的风扇插针上（请调高音量）：

成功了。主板能读取转速，风扇也对PWM有响应。我把它保持在10%转速。即使满载运行，温度也从未超过50摄氏度，而且我几乎听不到它的声音。

现在我只缺一根像样的线缆，而不是靠运气固定的杜邦线。

转接卡上的风扇接口是一个四针的小型JST PH2.0插头。主板风扇插针采用标准的0.1英寸（2.54mm）间距。GPU风扇使用的是2.0mm间距的JST PH接口。针脚更密集，插头也更小。

解决方案是一根2.54mm公头转PH2.0母头的杜邦线。PH2.0母头端插入风扇的测速线和PWM针脚，2.54mm公头端则插入主板上一个空闲的风扇插针：

噪音从82分贝的耳朵损伤级别，降到了我实际能忍受的程度。

廉价翻倍显存#

风扇问题解决后，V100就顺理成章地插在了我的4080旁边：

RTX 4080：16GB显存，Ada架构

Tesla V100：16GB显存，Volta架构

总计：两块GPU共32GB显存

llama.cpp可以通过张量切分将模型分配到两块GPU上。它通过PCIe总线对层进行流水线处理，让4080处理部分层，V100处理其余部分。这不如单块32GB显存的GPU快，但能用，而且成本大约只有32GB显存GPU的10%。值得一提的是，我见过V100的最高功耗大约在150W左右。这不算低，但对于运行本地大语言模型推理的GPU来说，也不算离谱。

等等，还能更大#

V100还有32GB显存的版本。价格比我买的贵一倍以上，但单卡32GB HBM2显存，我们谈的仍然只是几百英镑。在今天的市场上，买两块这样的卡，就能获得64GB显存，成本大约只有RTX 5090价格的20%。

你还可以将它们组成集群。SXM2 格式原生支持 NVLink，这意味着如果你正在搭建一个合适的多 GPU 系统，这些显卡可以以非常高的带宽相互通信。即使通过 PCIe 适配器，张量拆分性能也相当不错。

软件方面#

这部分出奇地顺利，这要归功于 NixOS。V100 是一款 Volta 芯片。英伟达从驱动程序分支 560 开始停止了对 Volta 的支持。最后一个同时支持我的 RTX 4080（Ada）和 V100（Volta）的驱动程序是分支 550.x，在 NixOS 上对应的是 nvidiaPackages.legacy_535。

那个驱动程序只支持最高 CUDA 12.2。当前的 nixpkgs 最低只提供 CUDA 12.6。所以我不得不从 nixpkgs 24.05 中提取 CUDA 12.2。

另外，该驱动程序需要内核 6.6。较新的内核不受旧版驱动程序支持。

还有一个奇怪的地方：尽管这是一个无头推理服务器，但必须设置 services.xserver.enable = true。没有它，英伟达内核模块就无法加载。

NixOS 让这部分工作变得非常简单。以下是让驱动程序和内核正确运行的关键配置：

boot.kernelPackages = pkgs.linuxPackages_6_6; hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.legacy_535; services.xserver.enable = true; services.xserver.videoDrivers = [ "nvidia" ];

以及从较旧的 nixpkgs 加载 CUDA 12.2 的方法，因为当前的 nixpkgs 只提供 12.6 及以上版本：

nixpkgs.overlays = [ (final: prev: { cudaPackages_12_2 = nixpkgs-cuda.legacyPackages.${prev.system}.cudaPackages_12_2; }) ];

重要的是：它运行起来了。两块 GPU 都能识别，CUDA 功能正常，NixOS 优雅地处理了整个过程。如果你想复现这个配置，完整的机器定义在我的 dotfiles 仓库的这个提交中，包括 llama.cpp 服务定义和锁定到正确版本的自定义构建。

运行模型#

我正在运行量化到 Q5_K_M 的 Qwen3.6-27B-MTP 模型，大小约为 19GB。使用两块 GPU，整个模型可以放入显存，并且还有上下文空间：

设置项值

模型Qwen3.6-27B-MTP Q5_K_M（19GB）

上下文大小128k 模型 token

GPU 层数99（全部卸载到 GPU）

张量拆分-ts 1.0,1.0（在两块 GPU 之间均匀分配）

性能表现：

指标值

推理速度约 32 tok/s

提示词处理约 133-160 tok/s

每秒 32 个 token 的速度对于交互式使用来说足够快了。考虑到网络延迟，这比大多数云端 API 端点都要快。而且这还是通过 PCIe 连接的两个不同 GPU 架构之间进行张量拆分的结果。

这个模型实际上很不错#

我想把话说清楚。这并非“对于本地模型而言表现不错”，也不是“降低预期后尚可接受”。Qwen3.6-27B 在 Artificial Analysis 的智能体指数上与 Claude Sonnet 4.6 打成平手，在 MMMU-Pro 和 Terminal-Bench 2.0 上甚至超越了 Sonnet 4.6。一个运行在二手硬件上的 270 亿参数模型，确实能与 Anthropic 最新的云端模型一较高下。

没错，Sonnet 4.6 在 GPQA 和 SWE-Bench Verified 上略胜一筹。这也在情理之中，毕竟它是一个庞大的专有模型。同样，如果你追求极致性能，还有 Opus 4.8 可选。但重度使用 20 分钟的费用，比我买这块 GPU 和整套转接设备的总花费还高。然而，差距已经小得惊人。我们已经到了这样一个节点：你在卧室里跑起来的模型，已经能和那些按 token 收费的模型相提并论了。

多 Token 预测#

模型名称中的 MTP 代表多 Token 预测。常规的大语言模型推理一次只预测一个 token：预测一个 token，接受它，再预测下一个 token，如此循环。MTP 改变了这一点，它让模型一次性预测多个未来 token，然后验证哪些是正确的。被接受的 token 基本算是免费获得的，错误的预测则回退到常规路径。

结果是生成速度大约提升 1.5 到 2 倍，且精度毫无损失。在我的设备上，这意味着当 MTP 发挥最佳性能时，推理速度能从大约 32 tok/s 提升到 50-60 tok/s，尤其是在处理代码这类可预测的输出时。

问题在于 llama.cpp 对 MTP 的支持还很新。nixpkgs 中的版本不支持 Qwen3.6 的 MTP 架构，所以我不得不从添加了该支持的特定提交版本开始，从源码构建 llama.cpp。在 NixOS 上，这很简单。我创建了一个指向正确提交的自定义派生包，整个过程是可复现的。当我想更新模型或更改 llama.cpp 版本时，只需修改配置文件中的一行，运行 nixos-rebuild switch 即可。没有依赖地狱，无需手动重装，也不用担心是否针对正确的 CUDA 版本进行了构建。

视觉能力：模型如何理解图像#

Qwen3.6-27B 模型通过一个独立的多模态投影文件（mmproj）支持图像输入。这个文件大约 928MB，其功能令人着迷。

其工作原理是：一个视觉编码器（类似于 ChatGPT 和 Claude 所使用的）将图像像素转换到大语言模型的 token 嵌入向量空间。该模型并不会像人类那样“看见”图像。相反，视觉编码器将图像压缩成一系列向量，这些向量与文本 token 处于同一个数学空间中。然后，大语言模型将这些向量当作另一串 token 序列来处理。

这在实践中意味着：你可以将图像 URL 连同文本提示词一起发送给模型，模型就能描述、分析并推理它所看到的内容。整个视觉能力大约给模型增加了 1GB 的大小。仅此而已。增加一个 GB，你的本地大语言模型就能读取图像了。

在 llama.cpp 中，相关的标志参数很直接：

--mmproj /mnt/nas/llamacpp/mmproj-F16.gguf --mmproj-offload

`--mmproj-offload` 标志会将视觉编码器与模型一同加载到 GPU 上，这样即使处理图像，你依然能获得快速的推理速度。

通过 OpenCode 运行

我将这套设置与 OpenCode 配合使用，这是一个能够对接本地模型的 AI 编程助手。大语言模型服务器运行在我的台式机上，但我并不在那台机器上使用它。我通过局域网在家中任何其他机器上使用它，或者通过 Tailscale 从外部访问（不过这属于另一篇博客文章的内容了）。将 OpenCode 指向 llama.cpp 服务器，只需设置 API URL 即可。模型在本地运行，响应速度快，且没有任何数据离开我的网络。

NAS 与 USB 驱动器

所有模型都存放在我的 TrueNAS 服务器上，通过 NFS 挂载：

fileSystems."/mnt/nas" = { device = "truenas-nfs.tymscar.com:/mnt/oasis/services"; fsType = "nfs"; options = [ "nfsvers=4" "_netdev" "auto" "nofail" ]; };

llama.cpp 服务依赖于 `mnt-nas.mount`，因此在 NAS 可用之前它不会启动。这意味着我可以存储数 TB 的模型，而无需担心本地磁盘空间。

整个操作系统运行在一个 DockCase USB-C NVMe 硬盘盒中的 Corsair MP600 MINI 固态硬盘上。无需修改内部驱动器。当我想玩游戏时，拔掉这个硬盘盒，重启进入我的主 Windows 系统，就能在 4080 显卡上正常游戏。当我想做大语言模型相关工作时，插回硬盘盒，重启进入 NixOS，两块 GPU 就都可用了。

这不如双系统启动菜单那么优雅，但它简单且有效。没有 GRUB，没有引导加载器冲突，没有分区管理。只是一个物理开关。

唯一烦人的一件事

在热重启（操作系统重启但主板保持通电）后，V100 有时会从 lspci 和 nvidia-smi 中消失。这似乎是 PCIe 插槽的 ACPI 枚举问题。冷重启（物理断电，等待几秒，再重新通电）总能恢复它。

当 V100 缺失时，llama.cpp 无法启动，因为它无法将模型放入单块 16GB GPU 中。服务会陷入崩溃循环，直到 GPU 恢复。实际上这问题不大，因为我通常在重启时就在旁边，但值得了解。这让我想起臭名昭著的 AMD GPU 重置 bug——将 AMD GPU 直通给虚拟机然后关闭后，GPU 会进入一种只有完全切断宿主机电源再重启才能修复的状态。

我最终得到了什么#

花 200 英镑，我得到了：

一块 16GB 数据中心 GPU，与我的游戏 GPU 一起运行

总共 32GB 显存，用于本地大语言模型推理

在 27B 参数模型上达到每秒 32 个 token

128k token 上下文窗口

支持图像输入的视觉功能

一个完全本地运行的模型，无需云端，无按 token 计费

唯一的实际代价是噪音，而我用价值 2 英镑的跳线和一点接头探索解决了这个问题。V100 并非最快的推理 GPU，且跨两种不同架构的张量拆分不如单块 GPU 那样干净。但就这个价格而言，它的性价比高得离谱。

如果你想在本地运行像样的模型，可以看看二手服务器 GPU 市场。你甚至不需要已有 GPU。我碰巧在游戏 PC 里有一块 4080，但单块 V100 放在廉价服务器机箱里就能给你 16GB 显存和一个完全可用的本地大语言模型，花费极少。V100 SXM2 并非唯一选择。P40 以类似价格提供 24GB 显存，不过速度更慢且没有 Tensor Core。V100 32GB 版本价格更高，但仍比任何拥有同等显存的消费级 GPU 便宜。

只是要做好应对风扇的准备。
