ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

个人开发者实战:从0到1手搓局域网 GPU 算力共享平台,并成功上架微软商店

个人开发者实战:从0到1手搓局域网 GPU 算力共享平台,并成功上架微软商店

个人开发者实战:从0到1手搓局域网 GPU 算力共享平台,并成功上架微软商店

前言:为什么要做这个项目?

作为一个全栈独立开发者,我手头有一台带 RTX 3060 的主机。平时除了跑跑本地大模型、做做 AI 漫剧,大部分时间它的算力都在闲置。而另一边,很多高校学生、小型工作室在跑深度学习、ComfyUI 出图时,却因为云端 GPU 太贵而发愁。

于是,我萌生了一个想法:能不能做一个局域网内的“算力 Airbnb”?让闲置的显卡安全地共享给同网段的开发者使用。

经过几周的爆肝开发,这个名为「算力集市 (Compute Bazaar)」的项目不仅跑通了完整的业务闭环,还成功打包上架了微软商店。今天把开发过程中的架构设计与踩坑经验分享给大家。

项目官网:https://computebazaar.netlify.app
开源地址:https://gitee.com/tianyeHome/compute_bazaar (已采用 Apache-2.0 协议开源)
技术栈:Flutter (GetX + MVVM) + Python FastAPI + Docker + WSL2


一、核心功能与技术架构

为了保证安全性和极客感,平台采用了“双模式”设计:租客模式和出租模式。

🛠️ 整体架构

  • 前端:Flutter + GetX + MVVM (Monorepo 架构),打包为 Windows 桌面端 MSIX。
  • 后端:Python FastAPI +pynvml(硬件监控) + SQLite (任务持久化)。
  • 通信:UDP 广播 (局域网节点发现) + HTTP REST (指令下发) + SSE (实时监控流)。
  • 隔离环境:Docker 容器。

✨ 四大核心亮点

  1. 局域网秒级发现:无需公网 IP,基于 UDP 广播自动发现同网段节点。
  2. Docker 沙盒隔离:所有任务在容器中执行,绝对保护房东的宿主机安全。
  3. 受控任务包 (YAML):支持自定义 YAML 定义镜像和命令,严格过滤特权模式。
  4. 虚拟算力点计费:不碰真实资金,通过心跳与时间片机制,精准计算消耗的“算力点”。

二、硬核踩坑实录(技术干货)

在开发过程中,我遇到了几个极其棘手的技术难点,这里重点复盘一下:

1. WSL2 下的 Docker GPU 透传(地狱难度)

为了让 Windows 用户能通过 Docker 隔离任务,必须让 WSL2 里的 Docker 能够使用宿主机的 NVIDIA 显卡。

  • 踩坑:一开始试图在 WSL2 里装 K8s 和 HAMi 做显存切片,结果遇到了致命的unresolvable CDI devices和 cgroups 格式错误。因为 WSL2 的 GPU 透传机制(/dev/dxg)与原生 Linux 完全不同。
  • 解决:放弃复杂的硬切片,改用 Docker 原生 CDI 模式。将nvidia-container-runtime配置为cdi,并手动修补 CDI spec 文件,注入libdxcore.so。最终成功实现了“单卡多容器”共享。

2. 幽灵 IP 与 UDP 发现

在局域网广播时,经常扫出172.25.xxx.xxx这样的幽灵节点。

  • 踩坑:Python 在获取本机 IP 时,优先拿到了 WSL 虚拟网卡的 IP,导致前端连不上。
  • 解决:废弃传统的遍历网卡方式,改用最稳健的UDP 路由探测法(向8.8.8.8发送 UDP 包获取出口 IP),完美避开了所有虚拟网卡。

3. 动态 YAML 任务包与安全校验

如果让用户随便传 YAML,会有严重的安全隐患。

  • 解决:后端引入PyYAML和Pydantic,在接收 YAML 时做三层校验:语法校验 -> 必填字段校验 -> 安全拦截(直接拦截privileged: true和挂载C:/盘的特权操作)。只要校验不通过,直接打回。

4. 自动化拉起与心跳防误判

用户点击“开启服务”时,Flutter 需要自动静默拉起 Python 打包的后端 exe。

  • 踩坑:拉起需要时间,此时前端的心跳检测会连续失败,导致界面疯狂闪红灯报错。
  • 解决:引入HeartbeatController.markAgentStarting()状态机。在 Agent 启动期间跳过失败计数,只有真正连续 3 次(90秒)未确认才判定断线。

三、界面展示

(发布到 CSDN 时,记得在这里插入你的 4 张高清截图)

1. 节点发现与 GPU 监控

真实的显卡利用率、显存与温度监控,基于pynvml和fl_chart绘制的心电图式折线图。

2. 自定义 YAML 任务提交

支持用户粘贴自定义 YAML 任务包,实时进行安全校验,下方绿灯提示通过。

3. 任务管理与算力点计费

跑通完整的商业闭环,任务秒级完成,准确扣除 1 个算力点。


四、如何体验?

目前 v0.1.0 单机版已经正式发布,并且已提交微软商店审核。

  • 源码编译:直接 clone Gitee 仓库,进入apps/compute_bazaar_local执行flutter run -d windows。
  • 绿色免安装版:在 Gitee 的 Releases 页面,下载ComputeBazaar-v0.1.0-Windows-x64.zip,解压双击即可运行。

⚠️ 运行环境要求:需要 Windows 10/11,并提前在 WSL2 中安装并启动 Docker 环境。


五、总结与后续规划

作为一个个人独立项目,能走到这一步非常有成就感。

v0.2.0 的规划:

  1. 实现 Ubuntu 双系统下的 HAMi 部署,做真正的“显存硬切片”(A 租客只能用 3G,B 租客只能用 4G)。
  2. 实现联网版,加入 NAT 穿透,让跨城调度算力成为可能。

如果这个项目对你有启发,或者你也想把自己的闲置显卡变成“AI 时代的房东”,欢迎来 Gitee 提 Issue,或者给个 Star 支持一下!

🌟Gitee 传送门:https://gitee.com/tianyeHome/compute_bazaar

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进