1. 多颗 FPGA 实现模型推理:完全可行且是主流方案
绝大多数大模型、高吞吐、低延迟推理场景(如云端 AI 加速卡、自动驾驶域控、机器人中央计算单元)都是多 FPGA / 多芯片协同推理。
典型做法:
- 模型切层 / 切通道 / 切任务分布到多片 FPGA
- 片间流水并行 + 数据并行
- 每片 FPGA 负责一部分算子 / 层 / 特征图
只要带宽、时延、同步设计得当,性能几乎可以接近线性扩展。
2. 多 FPGA 之间用什么总线 / 接口通信?
按速度从高到低、从近到远排序:
(1)芯片内 / 紧耦合:Die-to-Die 互联(D2D)
- UCIe、BoW、AIB 等
- 用于 2.5D/3D 封装内多裸片(小芯片)
- 带宽极高、时延极低
(2)板级高速:SerDes 高速串行接口
- PCIe 5.0/6.0(最常用,软件生态最好)
- CXL 2.0/3.0(未来大模型多芯片统一内存)
- 100G/400G Ethernet(分布式多卡、多机箱)
- 自定义 Multi-gigabit Transceiver(MGT)直连(低时延专用)
(3)传统并行总线(基本不用)
- AXI、APB 等是片内总线,不用于多 FPGA 通信。
3. 必须要有数据存储单元吗?
必须有,而且非常关键。
你至少需要三类存储:
- 片上存储(BRAM/URAM)
- 存放权重、特征图、指令
- 决定推理时延与吞吐
- 片外高带宽内存(HBM / GDDR6 / DDR5)
- 大模型权重、特征图缓存
- 多 FPGA 推理最吃带宽
- 片间共享 / 同步存储
- 用于多 FPGA 之间的数据同步、乒乓缓冲、命令队列
- 可以是:
- 共享 DDR
- CXL 共享内存
- 片上双端口 RAM + 高速链路
一句话:没有存储,多 FPGA 就无法流水线、无法缓存中间特征图、无法切模型。
多 FPGA 模型推理整体架构(板级 / 多卡)
┌─────────────────────────────────────────────────────────────────┐
│ 主机 / 主控 CPU │
└───────────────────────┬─────────────────────────────────────────┘
│ PCIe/CXL 管理通道
▼
┌─────────────────────────────────────────────────────────────────┐
│ 板级高速交换区域 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 高速交换芯片 │◄───────►│ 时钟/同步模块 │
│ │ (PCIe Switch / │ │ (同步多片时序) │ │
│ │ 自定义 MGT 交换) │ └─────────────────┘ │
│ └────────┬────────┘ │
└───────────┼─────────────────────────────────────────────────────┘
│ 高速数据通路 (PCIe 5.0/CXL/100G/MGT 直连)
┌──────────┴──────────┐ ┌──────────────────┐ ┌───────────────┐
│ │ │ │
│ FPGA 0 │ FPGA 1 │ FPGA N │
│ (模型前层/编码) │ (模型中层/计算) │ (模型后层/输出) │
│ │ │ │
└───────────┬──────────┘ └────────┬─────────┘ └───────┬───────┘
│ │ │
┌───────────┴──────┐ ┌───────────┴──────┐ ┌───────────┴──────┐
│ 片外存储 │ │ 片外存储 │ │ 片外存储 │
│ HBM/DDR5 │ │ HBM/DDR5 │ │ HBM/DDR5 │
└──────────────────┘ └──────────────────┘ └──────────────────┘

