尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

GPU、FPGA、NPU加速器选型指南:从架构原理到实战避坑

GPU、FPGA、NPU加速器选型指南:从架构原理到实战避坑 1. 别急着追新硬件先搞懂你的算力需求从哪来这两年被问得最多的反而不是某个模型怎么训练而是做AI到底需不需要买显卡买哪款为什么有人说GPU好又有人吹FPGA现在连笔记本厂商都天天把NPU挂在嘴边这个现象背后其实是整个AI加速器市场进入了一个三强并立的时期。过去我们聊算力默认就是GPU但现在FPGA在边缘推理、通信基站、图像预处理里频繁露脸NPU更是随着手机、PC、汽车芯片大规模铺开成了终端侧计算的主角。身边越来越多的人开始问这三类加速器到底什么关系我应该用哪个会不会选错而这本算力全景的指南就是想把这张地图摊开讲清楚GPU、FPGA、NPU各自的底层逻辑、适用场景、上手指南和隐藏坑点。先说一个很容易踩的误区很多人选加速器第一反应是看谁算力大于是盯着TOPS、TFLOPS这些数字不放。但实际工作中算力数字只是纸面参数真正决定体验的是你的工作负载能不能贴合这个硬件的计算模式。GPU擅长大规模并行矩阵运算FPGA擅长可定制的流水线和确定性时延NPU则是在功耗受限场景下用专用电路榨干每一个瓦特。所以出发之前先别问哪个强先问自己三个问题你要加速的是什么是大模型训练、云端推理、还是摄像头前的实时图像处理你的精度和时延要求是什么训练要FP32/FP16高精度推理端INT8就够了时延敏感的场景甚至要求微秒级响应。功耗和部署环境有没有硬约束数据中心里插着一块300W的GPU无所谓但车载芯片、边缘盒子、手机SoC里功耗可能就是生死线。我自己习惯把这些需求画成一张算力画像表每次评估新项目就先填一遍维度训练大模型云端在线推理边缘实时处理车载/终端部署典型精度FP32/FP16/BF16FP16/INT8FP16/INT8INT8/INT4时延要求宽松追求吞吐百毫秒级毫秒级毫秒级以下功耗预算无硬约束相对宽松10W~50W1W~10W适配加速器GPU/NPUGPU/ASIC/FPGAFPGA/NPUNPU/低功耗GPU这张表填完之后大部分人的方向其实就已经清晰了。接下来我们就沿着GPU、FPGA、NPU这条主线把每一类加速器的家底翻一翻。2. GPUAI训练主力军的架构底细与实战踩坑2.1 GPU凭什么成为AI训练的事实标准GPU最初是为图形渲染设计的它的核心思路是用成千上万个简单的核心同时处理一堆相似的计算。图形学里的顶点变换、像素填充本质上就是大规模并行计算。后来研究者发现深度学习里的矩阵乘法也是同样的并行模式于是GPU被跨界征用并且越用越顺手——NVIDIA甚至专门在GPU里塞进了Tensor Core这样针对矩阵运算优化的专用单元。理解GPU的关键不只是知道它有几千个核心而是理解它的执行模型。以热词里大家常搜的gpu的cta是什么为例在CUDA的编程模型里启动一个kernel后GPU会把线程组织成一个网格Grid网格由若干线程块组成每个线程块在硬件层面对应一个CTACooperative Thread Array协作线程数组也叫线程块。CTA内的线程可以共享一块快速的片上共享内存并通过栅栏同步协作而CTA之间的数据交换只能走全局显存代价要高得多。这个模型直接决定了写CUDA程序的优化思路尽可能把需要频繁交换数据的小线程组放进同一个CTA里减少跨区块通信。这也是为什么很多GPU算子实现看起来绕来绕去其实是在拼每一层存储结构的带宽。所以GPU并非万能它的加速前提是问题本身有足够的并行度如果一个任务只是串行逻辑丢给GPU反而会被杀鸡用牛刀的调度开销拖慢。谈到训练GPU还有几个硬指标必须关注显存容量决定了你能不能塞下一个大模型和足够的 batch size显存带宽决定了weight和activation在读写时的速度混合精度算力决定了Tensor Core能不能把FP16/BF16的算力榨出来。这些都是一张纸上的算力和实际训练速度之间差距的来源。2.2 部署环境的真实坑PyTorch GPU版、PaddleOCR GPU版安装要点环境安装这件事看起来是个入门操作但实际上翻车率极高。热词里pytorch安装教程gpu和安装paddleocr gpu版本被反复搜说明不少人卡在这一步。以PyTorch为例最稳妥的流程是先确认自己显卡型号和驱动支持的CUDA版本在终端执行nvidia-smi看右上角的CUDA Version这个是驱动支持的最高版本不是本机已装的CUDA Toolkit版本。去PyTorch官网选择对应CUDA版本的安装命令比如CUDA 12.1对应pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121装完千万别急着跑训练先用这段代码验证GPU是否真的可用import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0))如果打印出True和显卡型号环境才算通。这里最容易被坑的一点PyTorch的CUDA版本只需要和驱动匹配不需要你单独装一套完整的CUDA Toolkit。很多人一上来就去NVIDIA官网下载了最新CUDA Toolkit结果反倒把环境变量搞乱导致系统里出现多套CUDA互相抢优先级。我见过太多新手卡在torch.cuda.is_available()返回False最后发现是装了一个和驱动不匹配的PyTorch版本或者系统路径里混入了旧版CUDA。PaddleOCR的GPU版同理核心是把PaddlePaddle装成GPU版本python -m pip install paddlepaddle-gpu2.6.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/装完同样先跑import paddle; paddle.utils.run_check()验证。需要提醒的是Paddle版本和CUDA版本、Python版本的匹配关系非常严格建议对照官网的安装矩阵逐项核验不要凭感觉装最新的。还有一个热词很典型gpu cpu 内存占用都不高但卡。这种问题排查起来非常考经验。我遇到的场景大多是以下几种数据加载瓶颈DataLoader的num_workers设成了默认0数据在CPU侧用单线程解码GPU每训练完一个batch就干等数据。把num_workers调到4~8同时开启pin_memoryTrue往往立竿见影。CPU算子混入模型里用了某些GPU上不支持的操作PyTorch自动回退到CPU执行导致CPU跑满、GPU闲置。可以通过给输入张量加.cuda()后再跑一次推理观察是否有报错或警告。PCIe带宽不足如果你的GPU插在PCIe 3.0 x4槽上或者用了核显共享显存数据搬运速度会严重拖后腿。这种属于硬件层面的瓶颈软件调参救不回来。锁页内存不足设了pin_memoryTrue但系统锁页内存紧张反而造成额外拷贝。这种情况下可以适当减小batch size或者降低num_workers。2.3 GPU集群与微调大模型的入门姿势随着GPU微调大模型这波热度起来很多人开始接触多卡训练。但先说句实话一个人的个人电脑除非你有至少几十GB显存否则微调一个7B以上的模型都是捉襟见肘的。这也是为什么云GPU租用、算力平台越来越火的原因比如热词里的autodl算力云怎么用其实就是把一台配置好的GPU服务器按小时租给你。AutoDL这类平台的使用逻辑并不复杂注册后在算力市场里选机型常见有RTX 3090、RTX 4090、A100等选好基础镜像PyTorch或者TensorFlow版本开机后你会拿到一个JupyterLab地址和SSH登录命令。关键经验有这么几条数据持久化系统盘和个人数据盘分开训练代码和数据集放数据盘关机不释放数据盘但会按存储计费系统盘不要存大文件因为释放实例后系统盘数据会丢失。按量计费的关键是用完就关机但注意关机分为两种普通关机保留数据盘但可能继续计费GPU无卡模式可以只付存储费适合写代码和调试。不同平台规则不同用之前一定读清楚计费说明。多机训练别自己造轮子单机多卡直接用torchrun跑DistributedDataParallel就行多机多卡涉及更高的网络带宽要求普通平台默认网络可能撑不起要么选带InfiniBand/高带宽RDMA的套餐要么先把模型切小。另外如果自己有一块GPU想确认它是不是稳定热词里的gpu压力测试(gpu-burn)工具就是干这个的。GPU-Burn是一个给NVIDIA GPU做高负载压测的小工具用法非常简单git clone https://github.com/wilicc/gpu-burn cd gpu-burn make ./gpu_burn 120上面的写法会让GPU持续满载跑120秒。测试时我会同时开着nvidia-smi dmon观察核心温度、功耗、显存占用曲线。如果满载10分钟内温度冲到90度以上或者直接掉驱动、黑屏说明卡或电源有隐患。这种做法在买二手卡、装机验收时尤其重要我自己两次收二手卡都靠压测拦下了有问题的卡。3. FPGA能改电路的AI加速器到底适合什么活3.1 FPGA为什么一直低调但离不开如果说GPU是通用并行计算那FPGA现场可编程门阵列就是可以定制电路结构的计算。它的基本单位是一堆可配置逻辑块CLB和一个巨大的可编程互连网络每个逻辑块里放着查找表LUT、触发器和进位链旁边还有DSP切片和块RAM。你写的Verilog/VHDL代码最终会被烧成一个配置文件把FPGA内部的这些资源接成一张你想要的电路。这种方式带来的最大优势是你可以为特定任务设计一条专属的数据通路去掉所有不必要的通用开销。比如一个图像处理流水线可以用寄存器切片实现数据一级一级往下流每个时钟周期都出一个结果吞吐率非常可观。同时FPGA是硬件执行时延是确定性的、微秒级的相比之下GPU经过层层调度后最坏时延波动要大得多。它最大的缺点也很明显开发门槛高。写RTL寄存器传输级代码需要考虑时序收敛、跨时钟域、资源占用优化这些都是和写Python完全不同的思维方式。而且FPGA设备本身按逻辑资源和高速接口定价高端的FPGA并不比GPU便宜。所以FPGA几十年来的定位一直很清晰在算力不是唯一指标可定制性和确定性才是的场景里它才是主角。3.2 从数码管动态显示到ISP去马赛克一个FPGA新手的完整项目路径热词里fpga入门fpga 实现数码管动态显示fpga信号发生器ego1这些关键词非常典型看得出不少人正处在这个想学但不知道从哪里下手的阶段。我给大家一条经过验证的学习路径。第一步是选开发工具。如果你用的是Altera现在叫Intel FPGA的芯片软件就是Quartus Prime如果是XilinxAMD的芯片就用Vivado。两个工具的核心使用逻辑完全相通写HDL源码、做引脚约束、综合、布局布线、生成比特流、下载到板卡。第一个项目强烈建议从数码管动态显示起步。这个项目看似简单其实麻雀虽小五脏俱全你需要写一个分频器把板载时钟通常50MHz或100MHz降下来需要用计数器实现位选轮流点亮6个数码管并在正确的时刻切换段选数据整个过程需要你对时序有最基本的认识也有机会理解动态刷新的思想——用人眼残留视觉以极低资源占用驱动多位显示。当年我卡得最久的地方是为什么数据切换的瞬间会出现拖影后来才明白位选和段选必须在同一时序基准下切换先关位选再倒数据再开位选否则就会看到串位。这其实是最早的建立时间/保持时间教育。第二个项目可以试试信号发生器或者温控风扇。信号发生器比较好玩你在FPGA里做一个DDS直接数字频率合成模块把一个正弦查找表按不同的相位步进送出去就能在DA输出端得到不同频率的波形。做这个项目你能领悟相位累加器这个在通信和AI推理里反复出现的概念。温控风扇则涉及PWM生成、温度传感器接口读取还能顺带体验PID调节这种嵌入式经典算法。第三个项目如果你感兴趣图像类应用可以直奔fpga图像处理和fpga isp去马赛克。图像传感器输出的RAW图是每个像素只有一种颜色R/G/B按照拜耳阵列排列要显示彩色图就必须通过插值算法补全另外两个通道这就是去马赛克Demosaic。在FPGA里做这个的优势非常明显你可以把插值算法展开成流水线按行缓存数据实现逐像素实时处理这在CPU上很难做到实时。做这类项目你需要理解行缓存Line Buffer、帧缓存、像素时钟和行场同步信号这些都是ISP图像信号处理器的必备知识。项目过程中有两个高频踩坑点必须提前提醒复位信号的亚稳态问题。很多人习惯写异步复位比如always (posedge clk or posedge rst)但在复位释放瞬间如果它刚好落在时钟边沿附近触发器可能进入亚稳态——输出既不是0也不是1而是抖动。解决思路是用异步复位、同步释放电路让复位信号先经过两级触发器同步再送入逻辑。别小看这个细节热词里出现fpga复位信号亚稳态就说明踩过的人不少。引脚约束必须核对板卡原理图。很多新手照着教程写约束文件结果下载到板卡后发现灯不亮或者信号乱跳最后发现是把引脚号填错了。每个开发板的LED、按键、时钟、通信接口接在FPGA哪个引脚手册里写得清清楚楚这一步不要凭记忆。3.3 FPGA与PCB开发如何互动以及它在AI里的真实角色热词里有一条fpga与pcb 开发如何互动?这个问题其实问得很内行。FPGA不是孤立的芯片它要发挥作用必须和DDR颗粒、高速接口芯片、电源管理、传感器放在一块PCB上协作。具体到工程实践就是FPGA工程师要和硬件工程师之间建一条高效的沟通链路FPGA在选型阶段就要把引脚Bank规划好哪些Bank接DDR、哪些接LVDS、哪些接PCIe每个Bank的供电电压必须匹配。PCB布局时高速信号要走阻抗受控线比如LVDS差分线100欧姆差分阻抗FPGA工程师需要提早告诉硬件工程师哪些引脚是高速对、哪些是时钟输入、哪些对jitter敏感。反过来PCB板厂的叠层设计、走线长度约束也会直接影响FPGA内部时序能不能收敛。一个常见情况硬件把DDR放在了一个绕远的角落结果FPGA内部的读写时序怎么调都紧张。更合理的流程是FPGA先提供引脚出线优先级PCB再据此布局。至于FPGA在AI加速中的地位这就要说回fpga的应用了。现阶段FPGA并不适合做大规模的大模型训练它的强项是把预处理和后处理、定制算子、低时延推理这些脏活累活接下来。比如数据中心里FPGA可以承担压缩、加密、网络协议处理、AI推理前的图像预加重等任务把GPU解放出来专心做矩阵运算。在边缘端很多AI盒子用的是FPGA做视频解码和图像前处理 NPU做推理的组合因为FPGA可以对接眼花缭乱的自定义传感器接口热词里的fpga的lvds接收就是这么个场景LVDS是摄像头常用的低压差分信号接口FPGA天生支持差分IO可以直接把图像数据解出来再进后续算法。4. NPU终端侧慢慢长成的算力主角4.1 NPU架构的底层逻辑DCIM、脉动阵列和高通车载NPU的组成NPU的全称是神经网络处理单元它和GPU、FPGA有一个本质区别它不是通用处理器而是为神经网络计算量身定做的专用电路。它内部通常包含大规模的张量计算阵列常采用脉动阵列结构、向量单元、标量控制单元还有一整套紧密耦合的片上存储。脉动阵列是很多NPU的核心理解它非常有意思想象一队人排成一条流水线每个人只做把手中数据和从上游传来的数据相乘再传给下游数据像水流一样从阵列一端流入计算结果在另一端流出。这种结构不需要频繁从内存取指数据在同一时钟域内不断复用单位功耗下能跑出极高的算力。所以你会发现NPU单颗芯片的主频通常不高1GHz左右但算力密度每瓦TOPS远高于GPU。热词里npu dcim被频繁搜索DCIM通常和存内计算Computing in Memory相关。传统架构中数据从内存搬进计算单元的路径很长功耗和时间都耗在搬运上存内计算的想法是让计算直接发生在存储阵列里边极端情况下做到算力跟着数据走。这项技术目前还在演进之中但已经开始在一些低功耗推理芯片上落地是值得关注的前沿方向。至于高通车载芯片npu的组成架构图我们用公开的技术形态大致拆一下一颗车载NPU内部通常分成几个层次——最外层是DMA直接内存访问引擎负责和DDR做数据搬运往内是几组AI加速核类似小型的脉动阵列/张量核每组有自己的SRAM充当中间缓存再往外挂着一组CPU核专门跑控制和调度代码。推理时CPU完成任务切分和算子分派DMA预取数据进SRAM张量核做矩阵乘加向量核做激活、池化、归一化。这种CPU DMA 张量核 向量核的分工结构在高通骁龙Ride、英伟达Orin、地平线征程这些主流车载平台上是反复出现的。搞懂了这张架构图你就知道软件侧为什么总强调内存访问模式要规则、算子要尽量融合——因为NPU的性能瓶颈往往不在算力而在数据搬运和片上存储的利用率。4.2 实测本地跑模型时怎么让NPU真正干活NPU虽然听起来高大上但很多人的第一块NPU其实是买笔记本附赠的。Intel从Meteor Lake开始在自己的CPU里集成NPUAMD也在锐龙AI 300系列里做了类似设计。最实用的场景是用它在本机跑一些轻量级AI任务比如背景虚化、智能降噪、本地大模型推理。热词里的olama start指定intel npu引起了我的兴趣——很多人以为装了Ollama就能直接调用NPU。实际情况是Ollama本身默认走CPU或者CUDA/ROCm对NPU的支持取决于它用的后端推理库是否带NPU运行时。Intel的NPU要跑大模型通常靠OpenVINO框架和llama.cpp的OpenVINO后端。如果你真想用NPU跑本地模型我的建议路径是先安装Intel的NPU驱动和OpenVINO Toolkit确认系统设备管理器里能看到Intel NPU设备。用llama.cpp编译OpenVINO后端版本或者直接找打包好OpenVINO后端的推理客户端。运行时加参数--device NPU或等价选项观察是否真的调度到了NPU。实测下来NPU跑小模型1B~4B参数量级在功耗和发热上确实有明显优势笔记本风扇基本不转但跑7B以上模型它的计算单元规模和内存带宽就有些吃力了速度往往不如同代独显的芯片侧方案。所以我的观点是NPU是低功耗场景的补充不是替代。做方案选型时不要因为带NPU三个字就放弃独立显卡。另一条值得关注的国产产品线是昇腾系列。昇腾AI处理器采用了达芬奇架构内部由AI Core计算核心、AI CPU控制核心、缓存和对外接口组成。在数据中心里昇腾加速卡常以大算力密度和高效能比著称软件栈上通过CANN工具链对接PyTorch通过torch_npu插件和MindSpore。如果你是搞工程落地的最需要记住的一点很简单昇腾生态和CUDA生态并不完全等价算子覆盖、训练脚本迁移都可能踩坑迁移前一定要先用官方适配工具做一次算子映射检查不要想当然地以为模型代码能直接跑。4.3 NPU的软肋与使用边界把NPU吹得再好也绕不开它的几个短板。最明显的限制是算子覆盖不全。NPU是为标准神经网络设计的CNN、Transformer这种规整结构它跑得飞快但遇到非标准算子比如某些自定义动态路由、复杂控制流、非常规的稀疏索引可能压根没有硬件实现只能回退到CPU执行性能瞬间跳水。第二个坑是动态shape支持差。GPU上你随意改变batch size顶多重新编译一下kernel但在NPU上很多加速核要求静态shape提前编译好计算图输入尺寸一变就得重新编译甚至直接不能跑。这就是为什么很多NPU平台要求先固定输入分辨率、固定batch size再上线。第三个坑是框架适配和版本锁死。NPU厂商通常深度绑定某个版本的PyTorch或者自研框架跟着社区升级很慢。你在自己电脑上写好的训练代码想无缝迁移到NPU平台上往往要做不少适配工作。所以在选型时一定要把软件生态成熟度放在算力峰值前面。算力再高跑不起来等于零。5. 算力从哪来租云、自建、做集群的实用对比5.1 玩算力的三种姿势和各自账本除了硬件选型还有一个更现实的问题算力从哪来热词里autodl算力云怎么用如何出租自己的算力gpu租用这些搜索说明大家已经不满足于知道哪张卡好而是想知道怎么能真正用上算力。三种姿势的账本差异非常明显。第一是自购硬件自己装机自由度和控制力最高数据不出门但一次性投入大而且硬件迭代快两三年后可能大幅贬值。第二是云租用按小时付费灵活度极高适合研究、比赛、短期项目。第三是共享闲置算力把不用的GPU挂到分布式算力网络里赚取收益适合手头有闲置卡的个人或公司但需要评估安全、带宽、运维成本。我个人的建议是这样的如果只是学习或者做中期项目云租用是性价比之王如果长期做训练、对数据和模型保密性要求高自建一套小集群更踏实如果你手头真的有好几张闲置卡再考虑放开共享算力这条路并且一定要把私有数据和工作负载隔离清楚别把敏感任务放在共享平台上。云GPU租用有一个实操细节特别值得说便宜的卡不一定划算。比如某些平台上一块老款GPU每小时只要几块钱但如果显存小、显存带宽低跑同样的训练任务时间翻倍折算下来总成本反而更高。另外注意看平台的网络带宽和存储IO计费项有些坑藏在数据传输费里。5.2 GPU压力测试与运维清单把卡弄到手之后不能直接开跑先做一轮体检。热词里gpu压力测试(gpu-burn)工具就是做这件事的。除了跑gpu_burn我的完整体检清单是用nvidia-smi查驱动版本、CUDA版本、板卡温度、风扇转速确认没有异常。跑30分钟以上压力测试期间每5秒记录一次温度和功耗。用nvidia-smi --query-gpuname,temperature.gpu,power.draw,utilization.gpu --formatcsv -l 5持续监控看是否存在温度飙升或功耗掉坑。跑一次真实的小模型训练而不是只跑跑Benchmark因为真实加载路径更容易暴露显存ECC错误、HBM带宽不稳等问题。检查日志dmesg | grep -i nvrm或系统日志里有没有GPU相关的WARNING/ERROR记录。这套体检流程在买二手卡、换新电源、调整机房散热后尤其重要。一次完整的巡检二十分钟但能帮你省下后续排查崩溃的心力。5.3 算力网络的想象空间和内存瓶颈提醒关于算力还有一个更宏观的趋势值得聊聊就是热词里提到的算力网络以及ai算力催生的新型内存模组。算力网络想解决的核心问题是把分散在不同区域的AI计算资源通过网络虚拟成一台算力大电脑用户不用关心自己的任务在哪块GPU上跑只需要按需调用。这个方向现在还处在早期但它的价值很清楚算力会像水电一样变成一种基础资源。内存这边AI训练对显存带宽的需求几乎是无底洞于是HBM高带宽内存成了高端加速卡的标配HBM3E单颗颗粒就能提供TB/s级别的总带宽。另外CXLCompute Express Link内存池化技术也在推进它允许不同加速卡共享一块缓存的、可扩展的内存池对超大模型推理时的显存瓶颈是一种新的解耦思路。如果你是做系统设计的可以留意一下这两块技术迭代它们会直接影响未来加速卡的整体架构布局。6. 如何挑从一张需求清单到最终选型6.1 一张表看懂GPU、FPGA、NPU的差异聊了这么多最终还是要落到我该怎么选。下面这张对比表是我这几年做方案时一直用的基本能覆盖绝大多数场景对比维度GPUFPGANPU计算模式大规模并行SIMT可定制流水线/并行电路专用神经网络数据流编程方式CUDA/Python/框架Verilog/VHDL/高层次综合厂商工具链框架插件最大优势生态成熟、泛用性强可定制、确定性时延、接口灵活极高能效比、低功耗最大劣势功耗高、时延波动大开发门槛高、事务代码量大算子固定、动态性差典型场景模型训练、云端推理边缘预处理、通信、定制协议手机/PC/车机端推理上手难度中有框架帮助高硬件思维中看厂商生态成本特点中高中高低功耗方案成本可控这张表不是用来比谁强的而是帮你在面对需求时快速排除一些选项。比如你只是想在服务器上把现有的PyTorch模型训练起来那就不要考虑FPGA和NPU直接GPU如果你做的是一套车规级摄像头识别系统要在几瓦功耗内跑目标检测那NPU几乎是唯一解如果你的团队有硬件能力并且需要对接各种非标传感器、做微秒级响应的定制处理FPGA的价值就体现出来了。6.2 三种常见组合模式实际工程里很少只用一种加速器。我见过的成熟项目基本属于以下三种组合第一种是GPU训练 NPU/GPU推理。训练阶段用弹性算力把模型调好然后把模型量化、编译成NPU或推理卡的格式部署到终端侧。这种方式兼顾了训练效果的灵活性和部署性能也是大厂智驾、安防盒子、手机AI的主力架构。第二种是GPU做核心计算 FPGA做边缘预处理。FPGA负责接摄像头、做ISP、抠图、缩放、数据格式转换把干净的图像数据以低延迟喂给GPU做AI分析。这种分工在视频实时分析和工业质检中特别常见因为摄像头接口协议五花八门而FPGA天生能灵活适配各种MIPI、LVDS、千兆以太网、GMSL接口。第三种是全链路低功耗方案边缘盒子只用一款高算力NPU把所有AI推理任务都塞进去。这种方式对硬件成本和功耗控制最友好前提是应用场景的算子相对规整不需要频繁跑非标准模型。选这条路的团队通常会把模型结构做成规整的CNN或者标准Transformer以便在NPU上获得最佳性能。6.3 别被AI接口、算力、API密钥权限背后的逻辑带偏热词里有一句很有意思谈谈对 ai 接口调用、算力、api 密钥权限的理解。这个问题看似和加速器硬件无关但从软件架构角度它和算力的关系非常紧密。当你把一个训练好的模型封装成AI接口时算力其实已经被藏起来了用户调用API平台把请求调度到后端的GPU/NPU/FPGA集群上推理完成后返回结果。这时候用户真正需要关心的不是加速器型号而是接口的吞吐、时延和成本API密钥权限则决定了一个租户能用多少并发、多少配额背后对应的其实是这台机器一秒钟能处理多少个请求的硬算力上限。所以我的看法是懂加速器的人才有资格定义API的定价和配额。如果你不知道后端是GPU还是NPU不知道单次推理的峰值显存占用你就很难合理设计并发策略——并发开小了浪费算力开大了接口直接雪崩。这个层面上硬件知识反而成了做上层架构设计的地基。最后说点我的实际体会做了这几年加速器相关的项目最大的一个体会是不要神化任何一类硬件。GPU不是万能的FPGA也不是老古董NPU更不是仅仅用来营销的噱头——它们各有各的战场也各有各的脾气。选型的时候先花一小时把自己的需求和约束条件写在纸上比刷三天评测文章都有用。另一个体会是踩坑往往比顺风局教得更深。我现在回想自己学FPGA时被复位亚稳态折磨的夜晚回想装PyTorch时在CUDA环境变量里转了三天的经历其实都成了后来给团队讲为什么必须这么来的最有说服力的教材。这篇文章里的很多细节都是这些坑换来的希望对正在算力路口徘徊的你有点帮助。
返回列表