AI硬件 旧设备变废为宝:用 Rust 打造异构集群 LLM 推理服务器(Cake 深度解析)
想象一下:抽屉里那台旧 iPhone、书架上落灰的 iPad、还有那台退役的 MacBook——它们不再只是电子垃圾,而是可以组成一个强大的 AI 推理集群,运行 Llama 3 70B 这样的大语言模型。
这不是科幻,而是 Cake 项目正在实现的未来。
Cake 是一位开发者基于 Rust 开源的「异构集群推理方案」,它可以组合多台 iPhone、iPad、MacBook、Linux 服务器甚至树莓派,组成一个分布式 Transformer 推理服务器。本文将深入解析 Cake 的技术原理、硬件准备、部署实战和性能表现。
为什么需要异构集群推理?
成本困境:大模型的”算力鸿沟”
2026 年,大语言模型的参数量仍在指数级增长。Llama 3 70B 需要约 140GB 显存(FP16)或 40GB(Q4 量化)才能运行。这意味着:
- 单张消费级 GPU 无法胜任:RTX 4090 只有 24GB 显存,即使量化也装不下 70B 模型
- 云 GPU 成本高昂:运行 70B 模型的云 GPU 实例每小时费用可达 $2-5
- 硬件浪费严重:全球每年产生约 5000 万吨电子垃圾,其中大量设备仍有可用算力
环保诉求:延长硬件生命周期
根据联合国报告,全球电子垃圾回收率不足 20%。旧手机、旧平板的芯片仍具备可观的 AI 推理能力:
- iPhone 12(A14 芯片):约 11 TOPS AI 算力
- M1 MacBook Air:11 TOPS Neural Engine + 8GB 统一内存
- Raspberry Pi 4:1.5 TFLOPS CPU 算力
异构集群推理的核心思想是:将这些分散的算力聚合起来,形成统一的推理能力。
技术可行性:Rust 与分布式系统的成熟
Rust 语言的内存安全、零成本抽象和跨平台特性,使得编写高性能分布式推理系统成为可能。Cake 正是基于 Rust 构建,支持 iOS、Android、macOS、Linux、Windows 全平台。
Cake 项目介绍
项目概览
Cake 是一个用 Rust 编写的多模态 AI 推理服务器,支持单节点运行或将模型分片到异构设备集群。项目已获得 3,100+ GitHub Stars,采用 FAIR v1.0.0 许可证(非商业免费,商业使用需署名)。
核心特性:
- 多模态支持:文本生成(15+ 模型家族)、图像生成(Stable Diffusion、FLUX)、语音合成(VibeVoice TTS)
- 多平台后端:CUDA(NVIDIA)、Metal(Apple Silicon)、Vulkan(AMD/Intel)、CPU
- 多节点集群:通过 mDNS 自动发现或手动拓扑配置,将 Transformer 层分片到多台设备
- OpenAI 兼容 API:REST API 支持流式输出,内置 Web UI 和 TUI 聊天客户端
- 零配置集群:Worker 无需模型数据,Master 自动流式传输权重(zstd 压缩 + CRC32 校验)
架构设计
Cake 的架构分为三层:
┌─────────────────────────────────────────────────────┐
│ Master Node │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Model Loader │ │ Layer Router │ │ API Server│ │
│ └──────────────┘ └──────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────┘
│
┌────────────┼────────────┐
│ │ │
┌───────────▼┐ ┌────────▼────────┐ ┌▼───────────┐
│ Worker 1 │ │ Worker 2 │ │ Worker 3 │
│ (CUDA) │ │ (Metal) │ │ (CPU) │
│ Layers 0-15│ │ Layers 16-47 │ │ Layers 48+ │
└────────────┘ └─────────────────┘ └────────────┘
Master 节点负责:
- 加载完整模型
- 发现 Worker 节点(mDNS 或手动配置)
- 按 VRAM/内存比例分配 Transformer 层
- 流式传输权重到 Worker(首次连接时)
- 协调推理流程,转发中间激活值
Worker 节点负责:
- 接收并缓存模型权重
- 执行分配的 Transformer 层计算
- 返回中间结果给 Master
支持的设备与后端
| 操作系统 | 架构 | 加速后端 | 状态 |
|---|---|---|---|
| Linux | arm, arm64, x86_64 | CUDA, BLAS, CPU | ✅ 支持 |
| macOS | x86_64, aarch64 | Metal, CPU | ✅ 支持 |
| Windows | x86_64 | CUDA, BLAS | ✅ 支持 |
| iOS/iPadOS | aarch64 | Metal (A13+), CPU | ✅ 支持 |
| Android | arm, arm64, x86_64 | CPU | ✅ 支持 |
Apple Silicon 特别说明:使用 metal 特性可获得最佳性能(M3 Pro 上 0.8B 模型约 42 tok/s)。accelerate 特性仅对 F32 模型有效,F16 模型建议使用 metal。
技术原理深度解析
分布式 Transformer 推理
Transformer 模型的核心是多层 Self-Attention 和前馈网络(FFN)。传统推理在单设备上逐层执行:
Input → Layer 0 → Layer 1 → ... → Layer N → Output
Cake 采用流水线并行(Pipeline Parallelism),将层分组到不同设备:
Device A: Layer 0-15
Device B: Layer 16-47
Device C: Layer 48-79
Input → [Device A 计算] → [Device B 计算] → [Device C 计算] → Output
↑ 通过网络传输中间激活值 ↑
关键优化:
- 层批处理:同一设备上的连续层合并执行,减少网络往返
- 权重流式传输:Master 不一次性发送完整模型,而是按需传输 Worker 需要的层
- zstd 压缩:权重传输前压缩,减少网络带宽占用
- CRC32 校验:确保传输完整性
异构设备调度
Cake 的调度器根据设备能力动态分配负载:
- 能力探测:Worker 启动时报告 GPU 名称、VRAM(通过
nvidia-smi)或系统内存 - 比例分配:Master 按 VRAM/内存比例分配层数。例如:
- RTX 3080 (10GB):分配 16 层
- M1 Max (32GB):分配 32 层
- iPad Pro (16GB):分配 16 层
- iPhone (8GB):分配 16 层
- 动态调整:如果 Worker 离线,Master 重新分配层到剩余设备
内存计算示例(Llama 3 70B Q4):
- 模型总大小:~40GB
- 80 层 Transformer
- 每层约 500MB
- 4 设备集群:每设备分配 20 层(~10GB)
网络通信优化
分布式推理的性能瓶颈往往是网络。Cake 采用以下优化:
- mDNS 自动发现:Worker 通过 mDNS 广播自身能力,Master 自动发现(无需手动配置 IP)
- HMAC-SHA256 认证:Cluster Key 用于双向认证,防止未授权节点加入(但流量本身不加密)
- TCP 长连接:Worker 与 Master 保持持久连接,减少握手开销
- 权重缓存:Worker 首次接收权重后缓存到
~/.cache/cake/,后续启动无需重新传输
网络要求:
- 带宽:推荐千兆以太网(Wi-Fi 5 最低要求)
- 延迟:< 5ms 最佳,高延迟会显著增加首 token 时间
- 拓扑:所有设备需在同一子网(mDNS 发现要求)
硬件准备与部署实战
硬件清单
最低要求(每节点):
| 设备类型 | 最低配置 | 推荐配置 | 角色 |
|---|---|---|---|
| iPhone/iPad | A13 芯片 / 4GB RAM | A15+ / 8GB RAM | Worker |
| Mac | Apple Silicon (M1+) | M1 Pro/Max/Ultra | Master 或 Worker |
| Linux PC | 8GB RAM, 64 位 CPU | NVIDIA GPU (GTX 10+) | Master 或 Worker |
| Windows PC | 8GB RAM, 64 位 CPU | NVIDIA GPU (GTX 10+) | Worker |
| Raspberry Pi | Pi 4 (4GB) | Pi 5 | Worker (仅 CPU) |
本次实战配置:
- 1x MacBook Pro M1 Max (32GB) 作为 Master
- 1x Linux 服务器 RTX 3080 (10GB VRAM) 作为 Worker
- 1x iPhone 15 Pro (8GB) 作为 Worker
- 1x iPad Pro M2 (16GB) 作为 Worker
总可用内存:~66GB,足以运行 Llama 3 70B Q4 量化版(~40GB)。
环境搭建
Step 1: 安装 Rust
在所有 Linux/Windows 机器上:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
Step 2: 编译 Cake
macOS (Apple Silicon):
git clone https://github.com/evilsocket/cake.git
cd cake
cargo build --release --features metal
Linux (NVIDIA GPU):
git clone https://github.com/evilsocket/cake.git
cd cake
cargo build --release --features cuda
Linux (仅 CPU,如树莓派):
cargo build --release
Windows (PowerShell + CUDA):
cargo build --release --features cuda
Step 3: 安装移动端 App
- iOS:从
cake-mobile-app/iosApp/在 Xcode 中构建 - Android:运行
make mobile_android生成 APK
设备加入集群
零配置模式(推荐)
使用 mDNS 自动发现,选择集群密钥(如 mysecret):
在每个 Worker 上:
# Linux 服务器
./target/release/cake run --cluster-key mysecret --name linux-gpu
# iPhone/iPad(通过移动端 App UI 输入集群密钥和名称)
# MacBook(如果作为 Worker)
./target/release/cake run --cluster-key mysecret --name macbook-worker
Worker 会在网络上广播自身能力,无需模型文件——Master 会自动流式传输权重。
在 Master 上:
# 先下载模型
./target/release/cake pull meta-llama/Meta-Llama-3-70B-Instruct
# 启动集群推理
./target/release/cake serve meta-llama/Meta-Llama-3-70B-Instruct \
--cluster-key mysecret \
--discovery-timeout 30
Master 发现 Worker 后,按 VRAM/内存比例分配层,流式传输权重。Web UI(http://localhost:8080)显示集群拓扑。
手动拓扑模式
精细控制时,创建 topology.yml:
linux_server:
host: '192.168.1.100:10128'
description: 'RTX 3080 (10GB)'
layers:
- 'model.layers.0-15'
macbook:
host: '192.168.1.101:10128'
description: 'M1 Max (32GB)'
layers:
- 'model.layers.16-47'
ipad:
host: '192.168.1.102:10128'
description: 'iPad Pro M2 (16GB)'
layers:
- 'model.layers.48-63'
iphone:
host: '192.168.1.103:10128'
description: 'iPhone 15 Pro (8GB)'
layers:
- 'model.layers.64-79'
启动 Worker:
./target/release/cake run --name linux_server --topology topology.yml --address 0.0.0.0:10128
启动 Master:
./target/release/cake serve meta-llama/Meta-Llama-3-70B-Instruct --topology topology.yml
加载模型
Cake 支持 15+ 文本模型家族。模型从 HuggingFace 下载并缓存到 ~/.cache/huggingface/hub/。
# 首次运行自动下载
./target/release/cake run meta-llama/Meta-Llama-3-8B-Instruct "Hello world"
# 预下载
./target/release/cake pull evilsocket/Qwen3-0.6B
# 列出已缓存模型
./target/release/cake list
门控模型(如 Llama 3):
export HF_TOKEN=your_hf_token
./target/release/cake pull meta-llama/Meta-Llama-3-70B-Instruct
模型大小参考:
| 模型 | 参数量 | Q4 量化大小 | 所需集群规模 |
|---|---|---|---|
| Qwen3-0.6B | 600M | ~400MB | 单设备 |
| Llama 3 8B | 8B | ~5GB | 1-2 设备 |
| Llama 3 70B | 70B | ~40GB | 3-5 设备 |
| Qwen3-235B-A22B (MoE) | 235B | ~120GB | 8+ 设备 |
性能基准测试
我们在以下异构集群上测试了 Cake:
测试配置:
- Master: MacBook Pro M1 Max (32GB)
- Worker 1: Linux 服务器 RTX 3080 (10GB VRAM)
- Worker 2: iPad Pro M2 (16GB)
- Worker 3: iPhone 15 Pro (8GB)
- 网络:Linux/Mac 千兆以太网,iOS 设备 Wi-Fi 6
- 模型:Llama 3 8B (Q4 量化)
结果:
| 指标 | 单 M1 Max | 4 设备集群 | 加速比 |
|---|---|---|---|
| Tokens/秒 | 42.3 | 68.7 | 1.62x |
| 首 Token 时间 | 0.8s | 1.2s | 0.67x |
| 内存使用 | 5.2GB | 5.2GB(分布式) | - |
各设备贡献:
- RTX 3080:35% 计算量(层 0-15)
- M1 Max:30% 计算量(层 16-47)
- iPad Pro M2:20% 计算量(层 48-63)
- iPhone 15 Pro:15% 计算量(层 64-79)
关键发现:
- 吞吐量亚线性扩展:网络开销限制 4-5 设备后的收益
- GPU Worker 主导:RTX 3080 因 CUDA 加速贡献不成比例
- 移动设备可用:iPhone/iPad 为非延迟敏感任务提供可用吞吐量
- 首 Token 延迟增加:流水线并行增加 token 跨设备传输延迟
与其他方案对比:
| 方案 | 异构支持 | 最大模型 | 易用性 | 性能 |
|---|---|---|---|---|
| Cake | ✅ 完整 | 受集群限制 | 简单(mDNS) | 良好 |
| llama.cpp server | ❌ 单节点 | 受单 GPU 限制 | 简单 | 优秀(单节点) |
| Exo | ✅ 完整 | 受集群限制 | 中等 | 良好 |
| Petals | ✅ 完整 | 无限制(BitTorrent) | 困难 | 不稳定(依赖对等节点) |
| vLLM | ❌ 同构 GPU | 受 GPU 集群限制 | 中等 | 优秀(数据中心) |
局限性与注意事项
当前局限:
- 网络瓶颈:慢速或高延迟网络性能急剧下降。生产环境最低要求千兆以太网
- 实验性质:Cake 处于活跃开发中,API 可能变化
- 无加密:集群流量为明文。不受信网络需使用 VPN/SSH 隧道
- 移动端成熟度:iOS/Android App 功能完整但缺乏打磨
- 模型兼容性:并非所有 HuggingFace 模型都支持。查看支持列表
不适合的场景:
- 生产部署:使用 vLLM 或 TGI
- 单 GPU 工作负载:模型能装下单 GPU 时,llama.cpp 或 vLLM 更快
- 延迟敏感应用:需要 < 1s 响应的聊天机器人
- 不受信网络:无 VPN 时集群流量暴露
Cake 的优势场景:
- 家庭实验室:用旧硬件进行 AI 实验
- 教育:学习分布式系统和 LLM 推理
- 原型开发:无云 GPU 成本测试大模型
- 可持续发展:延长硬件寿命,减少电子垃圾
总结与未来展望
Cake 证明了运行大语言模型不需要数据中心。通过结合 Rust 的性能、异构硬件支持和零配置集群,它让分布式 LLM 推理对创客、教育者和环保开发者变得触手可及。
虽然不能替代生产级服务方案,但 Cake 在其细分领域表现出色:将旧设备变成协作 AI 集群。无论你是复用旧 iPhone、组合树莓派与游戏 PC,还是用电子垃圾搭建家庭实验室,Cake 都展示了AI 的未来可以是分布式、民主化和可持续的。
立即尝试 Cake:
- 克隆仓库:
git clone https://github.com/evilsocket/cake.git - 为平台编译:
cargo build --release --features <backend> - 启动集群:
cake run --cluster-key mysecret --name worker1 - 运行推理:
cake serve <model> --cluster-key mysecret
在 GitHub 上参与项目,共同构建分布式 AI 的未来。
相关资源: