本文最初发布于Quadric官方网站,经授权转载。
每一个目标检测部署项目都会遇到同一道坎。神经网络骨干网络在加速器(GPU、NPU、DSP)上运行,随后将结果传回宿主CPU进行后处理,包括边界框解码、置信度过滤和非极大值抑制(NMS)——这些步骤将原始张量输出转化为真正可用的检测结果。
这种来回传输绝非小事。仅NMS一项,在边缘部署场景中就可能占据整体流水线延迟的30%至50%。数据必须先从加速器的本地内存中导出,经由总线传输至主存DDR,再由CPU读取并通过NPU无法处理的分支标量代码进行运算,最终将结果送回。这一过程在每一帧、每一次推理中都会重演。
问题根源在于架构设计:传统NPU只负责矩阵乘法运算。一旦算法需要比较、分支、排序或带有动态终止条件的循环,就不得不切换回CPU。而目标检测流水线恰恰需要以上所有这些操作。
Chimera GPNPU将MAC运算、向量计算、标量控制流以及分支逻辑集成在同一个统一核心中,正是这一架构差异使本文接下来的内容成为可能。
ChiPy领域专用语言(DSL)简介
ChiPy DSL是Quadric为GPNPU张量级计算开发的Python框架。如果你用过JAX,理解起来会非常直观:ChiPy库以类NumPy语法在张量层面运作,而底层的Chimera计算库(CCL)负责内核实现,类似于Pallas在JAX中所扮演的角色。
其核心特性如下:
类NumPy语法与运算符重载:用你已经熟悉的方式编写数组操作。
双模执行:同一份ChiPy DSL代码既能在CPU上运行以完成验证,也能编译至GPNPU用于部署,测试与生产之间无需修改任何代码。
ONNX集成:直接导入量化模型。Chimera图编译器(CGC)负责骨干网络的编译,ChiPy工具则将其与自定义的前后处理逻辑串联起来。
两个装饰器,完整流水线:一个装饰器将C++ CCL内核桥接进Python计算图,另一个定义顶层流水线,将所有环节链接为整体。
最后一点至关重要。ChiPy编译器不仅仅运行神经网络,它能够将预处理、神经网络推理、后处理等整个应用流水线组合成一个完整的编译程序,在芯片上直接执行,无需返回宿主机。
以下展示了装饰器模式的基本形态:
该装饰器同时承担两项职责:在CPU测试阶段,Python函数体直接执行,你可以用标准工具对照参考输出进行验证;编译至GPNPU时,则替换为由装饰器指定的优化C++内核。接口相同,结果一致,执行目标不同。
端到端YOLOX-M检测流水线实战
以下是一个完整的YOLOX-M检测流水线示例,全程运行于Chimera GPNPU之上,输入图像加载完成后无需宿主CPU参与任何后续环节。
模型规格如下:
该流水线分为两个阶段。骨干网络(由CGC从量化ONNX模型编译而来)输出三个特征金字塔网络(FPN)头,分别包含分类得分、边界框回归值和目标置信度。CCL自定义算子随即对全部8400个候选框完成解码、置信度过滤和NMS,整个过程在单次内核调用中完成。
以下是ChiPy DSL的串联方式:
仅需五行代码。第一个调用对应CGC编译的计算图,第二个调用对应上面定义的CCL自定义算子。ChiPy将两者共同编译为一个GPNPU程序,数据从骨干网络的输出直接通过片上内存流向后处理内核,无需经过DDR,无需切换CPU上下文。
深入解析CCL解码与NMS内核
负责解码与NMS的CCL内核正是GPNPU架构价值的集中体现,其内部运作如下:
三个FPN头(步长分别为8、16、32)在各网格位置生成候选框。内核从网格偏移量解码边界框坐标,并对宽高应用指数变换,逐头依次处理完毕后再进入下一个头。GPNPU的标量算术逻辑单元(ALU)原生处理坐标运算,无需将其转交CPU。
目标置信度与类别得分相乘,得出最终的综合置信度,低于置信度阈值的候选框被立即丢弃。这是一种分支性、数据依赖的控制流——恰恰是让传统NPU流水线陷入停滞的那类工作。
存活下来的候选框按得分排序。内核依次遍历,计算每个候选框与所有已接受检测框之间的交并比(IoU),IoU超过阈值的框被抑制。这是一个带有动态终止条件的嵌套循环——教科书式的CPU任务,但由于GPNPU的处理单元在MAC阵列之外还集成了标量单元,整个过程得以全速执行。
全部8400个解码后的候选框均可容纳于GPNPU的片上内存中,解码-过滤-NMS的完整序列无需任何DDR等待。每个FPN头处理完毕后立即释放其内存,再加载下一个头,将片上存储(OCM)的占用量控制在最低水平。
三大深层意义
以下三点使这一方案的意义远超单个演示。
确定性延迟
GPNPU采用软件管理的暂存器内存,而非硬件缓存,因此不存在缓存未命中,也不存在帧间的性能抖动。后处理内核的执行时间在第一帧与第一万帧上完全一致。对于安全关键型部署场景——高级驾驶辅助系统(ADAS)、工业检测、机器人——这种确定性是硬性要求,而非锦上添花的特性。
通用检测架构支持
ChiPy的组合模型适用于任意检测架构。26.02 SDK随附YOLOX-M与RetinaNet两套端到端演示,均采用相同的装饰器组合模式。RetinaNet流水线更进一步,将裁剪、缩放、归一化等预处理步骤也作为CCL自定义算子纳入其中,全部组合在同一个编译程序里。任何遵循骨干网络加后处理模式的模型,均可按照同样的方式完成接入。
开发者体验
CCL内核采用C++编写(性能关键的内循环将继续如此),但流水线组合层是纯Python代码。只要能写NumPy,工程师就能构建完整的片上检测系统。装饰器将编译、内存管理以及各阶段间的数据路由全部抽象封装起来。
这才是"通用"在实践中的真正含义——不仅限于矩阵乘法,不仅限于神经网络,而是完整的应用流水线——那种真正出现在量产产品中的流水线——在单一处理器上以统一的编程模型运行。
欢迎在Quadric Dev Studio中探索完整的YOLOX-M与RetinaNet端到端教程。
Q&A
Q1:ChiPy DSL是什么?它和普通Python框架有什么区别?
A:ChiPy DSL是Quadric专为Chimera GPNPU开发的Python框架,用于张量级计算。它最大的特点是"双模执行":同一份代码既可在CPU上直接运行以验证结果,也可编译部署到GPNPU,测试与生产之间无需修改任何代码。与普通Python框架相比,ChiPy能将预处理、神经网络推理、后处理全部编译成一个片上程序,无需数据来回传输至宿主CPU,大幅降低推理延迟。
Q2:NMS为什么会造成这么大的延迟,GPNPU如何解决这个问题?
A:NMS(非极大值抑制)在边缘部署中可占据整体流水线延迟的30%至50%,原因在于它涉及分支判断、动态循环等控制流操作,传统NPU只能处理矩阵乘法,遇到此类任务必须将数据传回CPU处理,产生大量总线传输和上下文切换开销。Chimera GPNPU将MAC运算、向量计算与标量控制流集成在同一核心中,可以在片上直接执行NMS的嵌套循环与IoU计算,全部8400个候选框的解码、过滤、NMS均在片上内存中完成,无需任何DDR访问。
Q3:YOLOX-M在Chimera GPNPU上的完整流水线是如何运作的?
A:该流水线分为两个阶段:首先,骨干网络由Chimera图编译器(CGC)从量化ONNX模型编译而来,输出三个FPN头的分类得分、边界框回归值和目标置信度;随后,CCL自定义算子接管全部后处理工作,对8400个候选框完成坐标解码、置信度过滤和NMS,整个过程在单次内核调用中完成。两个阶段通过ChiPy的装饰器模式串联,数据经由片上内存直接流转,无需经过DDR或宿主CPU,实现了真正意义上的零中转端到端推理。
好文章,需要你的鼓励
Locus Robotics宣布收购加拿大温哥华机器人公司Nexera Robotics,将其专有的NeuraGrasp末端执行器技术整合至Locus Array平台。NeuraGrasp融合AI抓取智能、计算机视觉及专利软膜结构,可动态适应不同形状、材质、重量的商品,显著扩大了可自主拣选的SKU类型范围。此次收购将加速Locus Robotics在移动操控领域的技术路线图,推动仓储全流程自动化履约能力迈上新台阶。
ServiceNow研究团队构建的EVA-Bench框架,通过AI对AI的音频通话测试,量化评估语音客服系统在准确性和对话体验两个维度的真实表现,揭示现有系统普遍存在的可靠性缺口。
人形机器人正从原型验证迈向早期商业部署,汽车制造与物流领域预计成为未来十年核心需求市场。IDTechEx预测,相关市场规模将于2030年代初达到约250亿美元,2036年年出货量接近180万台。硬件成本持续下降,均价有望从2024年的约11.47万美元降至2030年的约3.7万美元。高利用率场景下运营成本有望低于5美元/小时,投资回收期可缩短至约6个月。但大规模商业化的关键,仍在于软件能力、任务泛化与系统集成的持续突破。
AWS AI Labs研究团队发布EvalAgent,这是一套通过"评估技能"自动生成AI智能体评测方案的系统,将首次运行成功率从17.5%提升至65%,并在人类专家评测中获得79.5%的偏好选择。