多FPGA 进行模型推理

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. 必须要有数据存储单元吗?

必须有,而且非常关键。

你至少需要三类存储:

  1. 片上存储(BRAM/URAM)
    • 存放权重、特征图、指令
    • 决定推理时延与吞吐
  2. 片外高带宽内存(HBM / GDDR6 / DDR5)
    • 大模型权重、特征图缓存
    • 多 FPGA 推理最吃带宽
  3. 片间共享 / 同步存储
    • 用于多 FPGA 之间的数据同步、乒乓缓冲、命令队列
    • 可以是:
      • 共享 DDR
      • CXL 共享内存
      • 片上双端口 RAM + 高速链路

一句话:

没有存储,多 FPGA 就无法流水线、无法缓存中间特征图、无法切模型。


极简总结

  • 多 FPGA 推理:可行,且是高性能 AI 推理的标准方案
  • 片间通信:PCIe/CXL/Ethernet/ 自定义 MGT
  • 数据存储:必须有,片上 + 片外 + 片间缓存缺一不可

多 FPGA 模型推理整体架构(板级 / 多卡)

plaintext

┌─────────────────────────────────────────────────────────────────┐ │ 主机 / 主控 CPU │ └───────────────────────┬─────────────────────────────────────────┘ │ PCIe/CXL 管理通道 ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 板级高速交换区域 │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 高速交换芯片 │◄───────►│ 时钟/同步模块 │ │ │ │ (PCIe Switch / │ │ (同步多片时序) │ │ │ │ 自定义MGT交换) │ └─────────────────┘ │ │ └────────┬────────┘ │ └───────────┼─────────────────────────────────────────────────────┘ │ 高速数据通路 (PCIe 5.0/CXL/100G/MGT直连) ┌──────────┴──────────┐ ┌──────────────────┐ ┌───────────────┐ │ │ │ │ │ │ │ FPGA 0 │ │ FPGA 1 │ │ FPGA N │ │ (模型前层/编码) │◄──┤ (模型中层/计算) │◄──┤ (模型后层/输出)│ │ │ │ │ │ │ └───────────┬──────────┘ └────────┬─────────┘ └───────┬───────┘ │ │ │ ┌──────┴──────┐ ┌──────┴──────┐ ┌─────┴──────┐ │ 片外存储 │ │ 片外存储 │ │ 片外存储 │ │ HBM/DDR5 │ │ HBM/DDR5 │ │ HBM/DDR5 │ └─────────────┘ └─────────────┘ └────────────┘ 

内部结构(单 FPGA 内部)

plaintext

┌─────────────────────────────────────────────────────┐ │ FPGA 芯片 │ │ ┌─────────────────┐ ┌─────────────────────┐ │ │ │ 片间高速接口 │◄───────►│ 片上总线 AXI/Stream │ │ │ │ (PCIe/MGT硬核) │ │ 数据流互联 │ │ │ └────────┬────────┘ └──────────┬──────────┘ │ └───────────┼──────────────────────────────┼───────────┘ │ │ ┌──────────┴──────────┐ ┌──────────┴──────────┐ │ 计算阵列 │ │ 片上存储 │ │ (DSP/ALU/张量引擎) │◄──────►│ BRAM / URAM │ └──────────┬──────────┘ └──────────┬──────────┘ │ │ └────────────────────────────────┘ │ ┌───────────┴───────────┐ │ 片外存储控制器 │ │ (DDR5/HBM 控制器) │ └───────────┬───────────┘ │ ┌───────────┴───────────┐ │ DDR5 / HBM │ └───────────────────────┘ 

关键通信总线(你问的重点)

  1. 片间通信总线
    • 高速串行:PCIe 5.0/6.0、CXL、100G/400G、MGT 直连
    • 用于:多 FPGA 之间传输特征图、权重、控制指令
  2. 片内通信总线
    • AXI4-Stream / AXI4 Full
    • 用于:FPGA 内部模块之间数据流、存储读写
  3. 存储单元(必须有)
    • 片上:BRAM、URAM → 缓存特征图、指令
    • 片外:DDR5、HBM → 存模型权重、大特征图
    • 多片之间:CXL 共享内存 / 乒乓缓冲

一句话总结

  • 多 FPGA 推理:可行,且是大模型加速标配
  • 通信:PCIe/CXL/MGT 高速串行
  • 存储:片上 BRAM + 片外 HBM/DDR5 必须有

你现在需要的是能直接落地的多 FPGA 模型推理切分策略,我会按「易实现→高性能」的优先级,给你 3 类核心策略,每个策略都包含适用场景、切分方法和工程注意事项,你可以直接对应到之前的多 FPGA 架构上。

核心前提

所有切分策略的核心目标:让多 FPGA 间的数据传输量最小、算力利用率最高、延迟最低,且必须匹配你之前架构里的PCIe/CXL/MGT 高速链路带宽


策略 1:按「模型层级」切分(Pipeline 切分,最易实现)

这是新手 / 中小模型首选的切分方式,也是工程上落地最多的方案。

核心思路

把模型的不同层 / 算子组分配到不同 FPGA 上,形成流水线:

  • FPGA 0:负责模型前处理 + 卷积 / Attention 前几层
  • FPGA 1:负责模型中间层(如 Transformer Block 1~N)
  • FPGA N:负责模型后几层 + 后处理 + 输出

适用场景

  • 模型:CNN、Transformer(LLM)、ResNet 等层级化明显的模型
  • 硬件:FPGA 数量≤8 片,片间带宽≥100Gbps(PCIe 5.0 x8 即可满足)
  • 需求:追求高吞吐(如云端推理),对单帧延迟要求不极致

工程实现要点

  1. 切分点选在数据量最小的层间:比如 Transformer 的 QKV 计算后(特征图维度小),而非大尺寸特征图输出后;
  2. 流水线对齐:让每片 FPGA 的单批次计算耗时接近(比如都控制在 100μs),避免某片 FPGA 空闲;
  3. 缓存设计:每片 FPGA 的片外 DDR/HBM 缓存当前层的权重 + 输入特征图,片上 BRAM 缓存中间结果;
  4. 示例(LLM 7B 模型):
    • FPGA 0:Embedding 层 + Transformer Block 1~4
    • FPGA 1:Transformer Block 5~8
    • FPGA 2:Transformer Block 9~12 + Linear 输出层

策略 2:按「数据维度」切分(Parallel 切分,高性能)

也叫 “张量并行 / 通道并行”,适合大模型、高算力需求场景。

核心思路

同一层的计算任务按数据维度拆分,多 FPGA 并行计算后合并结果:

  • 比如 CNN 的卷积层:将输入特征图的通道(Channel)拆分成 N 份,每片 FPGA 计算 1/N 通道的卷积;
  • 比如 Transformer 的 Attention 层:将 Q/K/V 矩阵按头数拆分(8 头 Attention 拆给 2 片 FPGA,每片算 4 头)。

适用场景

  • 模型:大模型(LLM 10B+、大尺寸 CNN)、单层层数多 / 计算量大的模型
  • 硬件:FPGA 数量≥4 片,片间带宽≥400Gbps(建议 CXL 或 MGT 直连)
  • 需求:追求低延迟(如自动驾驶、实时机器人推理)

工程实现要点

  1. 切分维度选计算密集型维度:优先按通道 / 头数 / 矩阵行 / 列切,而非空间维度(H/W);
  2. 同步设计:必须加全局同步模块(对应之前架构里的时钟 / 同步模块),保证多 FPGA 同时开始 / 结束计算;
  3. 结果合并:指定 1 片 FPGA 作为 “主 FPGA”,负责接收其他 FPGA 的计算结果并合并(如拼接通道、求和);
  4. 示例(ResNet50):
    • 卷积层通道数 = 256,4 片 FPGA 各计算 64 通道的卷积;
    • 每片 FPGA 输出 64 通道特征图,主 FPGA 拼接为 256 通道后进入下一层。

策略 3:混合切分(Pipeline+Parallel,最优解)

结合前两种策略的优势,是大模型多 FPGA 推理的 “终极方案”。

核心思路

先按层级切分把模型拆成多个阶段,再对每个阶段内的单一层数据并行切分

  • 示例(LLM 70B 模型):
    1. 阶段 1(FPGA 0/1):Embedding 层 + Block 1~10 → 2 片 FPGA 做数据并行;
    2. 阶段 2(FPGA 2/3):Block 11~20 → 2 片 FPGA 做数据并行;
    3. 阶段 3(FPGA 4/5):Block 21~30 + 输出层 → 2 片 FPGA 做数据并行。

适用场景

  • 模型:超大模型(LLM 50B+)、高吞吐 + 低延迟双需求场景
  • 硬件:FPGA 数量≥6 片,片间带宽≥400Gbps(CXL/400G Ethernet)
  • 需求:云端大模型推理、自动驾驶域控核心计算

工程实现要点

  1. 层级切分控制阶段数≤FPGA 总数量 / 2,避免流水线过长;
  2. 数据并行的 FPGA 组内用 MGT 直连(低延迟),组间用 PCIe/CXL(高带宽);
  3. 权重分配:每个 FPGA 只存自己负责的那部分权重(减少存储压力);
  4. 容错设计:某片 FPGA 故障时,可降级为单组数据并行(比如 2 片→1 片)。

策略选择速查表

表格

切分策略实现难度片间带宽要求适用场景核心目标
层级切分≥100Gbps中小模型、高吞吐易落地、高吞吐
数据维度切分中高≥400Gbps大模型、低延迟低延迟、高算力
混合切分≥400Gbps超大模型、双需求平衡吞吐 + 延迟

总结

  1. 入门首选层级切分:逻辑简单,适配成本低,能快速验证多 FPGA 推理可行性;
  2. 高性能选数据维度切分:需重点优化片间同步和带宽,适合低延迟场景;
  3. 超大模型选混合切分:结合前两者优势,是工程上的最优解,但需做好算力 / 带宽规划。

一、多 FPGA 推理 总线推荐(按优先级)

1. 板内多 FPGA(同一块板卡)

首选:自定义 MGT 直连 + AXI-Stream 封装

  • 速率:10G/25G/100G 每通道
  • 优势:时延最低、无协议开销、最适合推理流水
  • 适用:模型切分、特征图传输、流水同步

次选:PCIe 5.0 x8/x16

  • 带宽:x16 单向~128GB/s
  • 优势:生态成熟、可直接连 CPU、可做控制 + 数据通路

高端:CXL 3.0

  • 支持共享内存,多 FPGA 像在同一片内存里
  • 大模型切分最舒服

2. 多板卡 / 机柜间

  • 100G/400G Ethernet
  • 400G QSFP-DD 自定义 SerDes

二、你最关心的:带宽怎么算?

我给你最简公式,FPGA/AI 推理通用。

关键公式

1. 特征图数据量

Data=H×W×C×DataType_bit

  • H/W:特征图高宽
  • C:通道数
  • DataType_bit:
    • FP32 → 32
    • FP16/BF16 → 16
    • INT8 → 8
    • INT4 → 4

2. 片间需要的最小带宽

冗余

  • Latency:你能接受的传输时延
  • 1.2~1.5:协议开销、拥塞冗余

三、直接给你算 3 个真实场景

场景 1:CNN 中间特征图传输(典型 FPGA 推理)

  • H=32, W=32, C=256
  • INT8
  • 帧率 30fps
  1. 单张特征图点数:32×32×256 = 262,144
  2. 数据量:262,144 × 8bit = 2Mb = 256KB
  3. 每秒数据量:256KB × 30 = 7.5MB/s

加 1.5 倍冗余:→ 需要~11.25MB/s 有效带宽

总线推荐

  • 随便一个 PCIe 3.0 x1 都够
  • 实际用 MGT 10G 通道 毫无压力

场景 2:Transformer 层间切分(大模型常用)

  • 特征:Token=512,Hidden=4096,INT8
  • 每帧一层输出:512×4096 Byte
  1. 单层数据:512×4096 = 2MB
  2. 30fps:60MB/s加冗余 → 90MB/s

总线推荐

  • PCIe 4.0 x4 轻松跑
  • 25G MGT 直连

场景 3:大模型张量并行(多 FPGA 算同一层)

  • Hidden=8192,FP16
  • 切 4 片 FPGA,每片传输 8192/4=2048 维度
  1. 每 Token:8192×2Byte = 16KB
  2. 512Token:8MB
  3. 30fps → 240MB/s加冗余 → 360MB/s

总线推荐

  • PCIe 5.0 x4
  • 50G/100G MGT

四、我直接给你最终选型结论(不用你再算)

1. 模型层级切分(Pipeline)

  • 总线:PCIe 5.0 + 10G/25G MGT 直连
  • 带宽:10~100Gbps 足够

2. 模型张量 / 通道并行(Parallel)

  • 总线:100G MGT / PCIe 5.0 x16 / CXL
  • 带宽:100~400Gbps

3. 板间多卡

  • 总线:400G Ethernet 或 QSFP-DD

五、极简记忆口诀

  • CNN 小特征图:10G~25G 够用
  • Transformer 层间:50G~100G 稳妥
  • 张量并行:100G+ 才够爽

Read more

企业级 Git 分支管理模型实战:从 Git Flow 到 DevOps 落地

企业级 Git 分支管理模型实战:从 Git Flow 到 DevOps 落地

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 企业级开发模型:认知突破 * 二. 企业级分支模型核心:Git Flow 规范 * 2.1 五大核心分支及其职责 * 2.2 分支命名规范(企业实操版) * 三. 环境与分支的强绑定:从开发到上线的流转 * 3.1 四大核心环境及分支对应关系 * 四. 企业级项目管理实战:完整落地流程 * 4.1 前置准备工作 * 4.2 开发场景-基于git flow模型的实践 * 结尾: 前言: 在小型团队或个人开发中,简单的分支操作或许能满足需求,但进入企业级项目后,多环境部署、

By Ne0inhk
VLM Unlearning 有关论文阅读总结与梳理

VLM Unlearning 有关论文阅读总结与梳理

文章目录 目录 前言 一、什么是 Unlearning 二、AUVIC 三、Neuron Pruning 四、 Neuron Path Editing 五、 MLLM Eraser 前言 本文整理了当前多模态大模型(VLM)中常见的 Unlearning 技术路线,主要包括: * AUVIC * Neuron Pruning * Neuron Path Editing * MLLM Eraser 这些方法的核心目标都是: 让模型“遗忘”指定知识,同时尽量不影响其它知识。 一、什么是 Unlearning 在多模态大模型(Vision-Language Model / VLA)中,我们经常需要: * 删除隐私数据 * 移除不安全知识 * 删除特定人物或敏感概念

By Ne0inhk

OpenClaw 最新功能大揭秘!2026年最火开源AI Agent迎来史诗级升级,手机变身AI终端不是梦

OpenClaw 最新功能大揭秘!2026年最火开源AI Agent迎来史诗级升级,手机变身AI终端不是梦 大家好,我是Maynor。最近开源社区彻底炸锅了——OpenClaw(前身Clawdbot/Moltbot)又一次刷屏!这个能真正“干活”的本地AI助手,在3月2日刚刚发布v2026.3.1版本,紧接着2月底的v2026.2.26也是里程碑式更新。 从外部密钥管理、线程绑定Agent,到Android深度集成、WebSocket优先传输……OpenClaw正在把“AI常驻员工”从概念变成现实。 今天这篇图文并茂的干货,带你一口气看懂最新功能、安装上手和实战价值!

By Ne0inhk

FPGA开发必看:vivado除法器ip核定点击除法教程

FPGA硬件除法不再难:手把手教你用透Vivado除法器IP核 你有没有遇到过这种情况?在FPGA里做个简单的 a / b 运算,结果综合工具报出几千个LUT的资源消耗,时序还跑不到50MHz?更离谱的是,明明只写了几行代码,生成的电路却像一座迷宫——这就是 手工实现除法 带来的典型痛点。 其实,Xilinx Vivado早就为你准备了“标准答案”: Divider Generator IP核 。它不是什么黑科技,却是每个FPGA工程师都该熟练掌握的基础武器。今天我们就抛开教科书式的讲解,从真实工程视角出发,带你真正搞懂这个看似简单、实则暗藏玄机的IP核。 为什么别再自己写除法状态机了? 先来看一组对比: 维度 自己写的除法模块 Vivado Divider IP 开发时间 3天(含调试) 10分钟(GUI配置+例化) 最高工作频率 ~60MHz(16位) >200MHz(流水线模式) 资源利用率 高且不可预测 可控,

By Ne0inhk