
黑芝麻智能AI算法与部署工程师昌敏杰以《华山A2000全新自研高效易用山海AI工具链升级解密——硬核技术解析×实战操作演示》为主题,对华山A2000 NPU核架构进行了系统介绍,并详细拆解了山海AI工具链的5大核心模块的特点和工作流程。最后,昌敏杰老师还在线演示了如何使用山海AI工具链进行 Tuner PTQ 量化、Model Compiler编译和Trace Profiling分析。
要点提炼:
1、车端大模型部署并非简单的迁移,面临着能否运行、运行起来是否准确以及是否高效易用三大核心挑战。
2、黑芝麻智能NPU架构演进经历了从A500的CNN加速,到A1000/C1200的通用算力扩展,再到A2000面向Transformer及大模型的系统级支撑三大发展阶段。
3、华山A2000 NPU原生支持Transformer结构,并具备混合精度计算能力,在复杂模型的部署上更加高效和友好。
4、华山A2000 NPU集成了RVV、CME、DSP等多类异构计算引擎,支持FP32、FP16、FP8、INT4等多种精度,实现了计算与数据通路的协同。
5、山海AI工具链主要由Model Compiler、DAL、Tuner、HAPPY和Runtime五大模块构成,打造了从模型优化到部署的闭环全流程。
6、山海AI工具链采用“定点为主、混合兜底”的量化策略,将大部分算子压缩至INT4/INT8以降低开销,对少数敏感层保留FP16/FP8精度,实现了性能与精度的最优平衡。
7、山海AI工具链Model Compiler基于MLIR架构设计,分为硬件无关与硬件相关两层优化,支持多框架输入,具备良好的跨框架兼容性和复用能力。
8、在端侧部署中,精度与性能之间的权衡,本质上可以归结为数据格式的选择。
9、从工程实现角度来看,算子可划分为核心计算类算子、非线性算子、数据搬运类算子、索引/采样与自定义算子四大类。
以下是主讲环节的全程实录整理。
昌敏杰:大家下午好,我是黑芝麻智能AI算法与部署工程师昌敏杰,很高兴能在这里给大家带来分享。
我今天分享的主题是《华山A2000全新自研高效易用山海AI工具链升级解密——硬核技术解析×实战操作演示》。随着智能驾驶的规模化落地,大模型上车实现本地推理已成为必然趋势,能够在降低时延的同时,提高数据的安全性。但受限于车载芯片的算力、功耗以及带宽等约束,以及异构计算架构的复杂性,模型部署并非是简单的迁移,面临着能否运行、运行起来是否准确以及是否高效易用三大核心挑战。
AI工具链作为连接算法与芯片的关键桥梁,通过模型压缩、算子优化以及硬件适配,能够在保障性能的同时提升开发效率和使用的便捷性,实现了高效易用的模型落地能力。
基于以上背景,我今天的分享主要包括三个部分。首先我会介绍华山A2000上行业领先的NPU核,也就是九韶架构的关键能力;其次我会对新一代高效易用山海AI工具链的核心模块和它的整体流程进行解析;最后通过实操,演示山海AI工具链从量化编译到profiling的完整部署闭环。

在整体架构上,黑芝麻智能的芯片目前主要分为两条产品线,分别是面向自动驾驶场景的华山系列和聚焦于舱驾一体的武当系列。
从发展脉络来看,BSNPU的演进可以概括为三个阶段,从把CNN跑快到覆盖更多的算子,再到面向Transformer以及更加复杂模型的系统级支撑。
具体来看,在A500阶段,我们的目标是提升CNN的执行效率,主要是通过卷积MAC阵列矩阵加速,并结合稀疏加速,再配合多级缓存和分块的并行调度策略,尽可能把数据保留在片上,从而降低对外部带宽的依赖。
到了A1000和C1200阶段,芯片能力开始向通用性扩展。一方面通过EDP、GEMM等计算单元支持更加多样性的算子,另一方面引入专用DSP来降低ARM侧的负担,并且在一定程度上支持自定义算子。
在最新的A2000阶段,芯片整体设计会做进一步升级,关键词可以总结为高算力、高带宽以及面向新一代模型的架构优化。主要包括针对Transformer的专用能力加速、对浮点运算的更好支持,还有虚拟化能力的引入,以及更加灵活高效的稀疏计算设计。核心目标是从能跑模型,进一步演进到在真实的工程场景,实现模型的好部署、好优化以及好验证。

华山A2000的NPU支持混合精度计算,核心在于实现了精度、性能和带宽之间的灵活权衡,从而为不同的模型和算子选择最优的执行路径。
在计算侧,A2000采用高效的矩阵计算单元,具备低延迟、高吞吐的特性,并且支持2:4的架构化稀疏,从而提升不同层以及算子的执行效率和整体利用率。
在数据侧,A2000通过优化片上存储的带宽和访问效率,显著地降低了对DDR的依赖,有效缓解了端侧数据搬运带来的性能瓶颈。
在部署能力上,A2000支持FP32、FP16、FP8以及INT4等多种精度,并且提供非线性计算、向量计算等可编程硬件单元,整体架构由多类异构Engine组成,如上图展示的RVV、CME、DSP。
其中,RVV主要用来做一些向量和非线性的计算;CME主要是承担一些核心的矩阵运算,覆盖的数据类型包括INT4/UINT8/INT8/FP16/FP8;DSP则主要用来做一些自定义算子的扩展。A2000还有一些用来处理数据搬运、任务调度的Engine,我们会放在MPE上。通过计算与数据通路的协同设计,A2000实现了端侧推理的高效与稳定运行。

目前深度学习模型正在快速走向复杂化,例如MapTRv2、BEVFormer,以及VLM、VLA等这些模型已经广泛应用于智能驾驶和机器人等领域。这些模型的共同特点是:算子类型更加丰富、数据流更加复杂,同时对精度与性能的要求也更加敏感。
针对这一趋势,华山A2000 NPU原生支持Transformer结构,并具备混合精度计算能力,因此在这类复杂模型的部署上会更加高效和友好。
这里所说的“原生支持”,不仅仅是指“能够运行”,更重要的是从硬件架构、算子覆盖到工具链能力的整体协同,使模型部署尽可能走标准化、可控化流程,而不是依赖大量人工适配和补丁式优化。


华山A2000的山海AI工具链,整体由Model Compiler(模型编译器)、DAL(深度学习加速库)、Tuner(模型压缩组件)、HAPPY(硬件仿真分析工具)以及Runtime几个核心模块组成,覆盖从模型优化到端侧部署的完整流程,能够为开发者提供一套高效易用的模型开发与部署体系。
首先来看Model Compiler(模型编译器)。模型编译器基于MLIR架构实现,分为硬件无关优化和硬件相关优化两个阶段。前者主要是对计算图进行通用优化,后者则针对华山A2000 NPU架构进行适配,最终将模型转换为面向硬件端执行的Binary Model,从而实现高层模型到指令级的映射。同时,量化与编译解耦,支持灵活接入不同量化方案,在保证性能的同时,提升编译流程的高效性与易用性。
DAL(深度学习加速库)主要是面向训练侧,以Python wheel的形式做了集成,目的是能够在尽量不改动用户原有训练流程的前提下,支持QAT、剪枝、蒸馏等模型优化能力。
Tuner(模型压缩组件)提供PTQ量化能力,既支持对浮点模型直接量化,也支持通过Adapter对接第三方开源工具,如Nvidia Model-Optimizer、llm-compressor等,能够对开源工具的量化结果做无缝适配和拼接,并转换为编译器可接受的格式。
HAPPY(硬件分析平台)从实际执行视角出发,对NPU的运行过程进行分析,支持计算与IO瓶颈定位,并提供算子级的耗时拆解,实现更加细粒度的性能分析。
Runtime负责端侧执行,支持Python与Triton接口,兼顾快速部署与高性能自定义算子开发。
从右边的流程图可以看到,如果你的模型需要量化,可以使用我们的PTQ或QAT工具;如果模型对精度感知比较敏感,可以把浮点模型直接收入到Model Compiler编译器里去做编译,编译为板端能够运行Binary Model,再去做一些仿真验证,来确保编译结果的一致性。之后就可以把板端的二进制模型做部署,进行性能和精度的验证。
在这个过程中,我们会结合HAPPY的精度和性能调优工具,持续的进行性能分析和问题定位,通过这个流程能够形成一套比较高效易用的闭环优化流程,来保证模型的稳定落地。
从工程实现角度来看,算子主要分为四类:
核心计算类算子:如Conv、MatMul等,用来做一些矩阵运算;
非线性算子:如Softmax,或者一些常见的激活函数;
数据搬运类算子:如Reshape、Transpose等,主要影响的是数据布局与访存效率;
索引/采样与自定义算子:比如Transformer模型和BEV模型主要用到的Grid_sample,或者Gather、Scatter、BEVPoolingV2等。这些算子的数据访问模式比较复杂,对硬件适配要求也比较高。
针对上述不同类型的算子,山海AI工具链的编译器都提供了完整支持,并结合A2000 NPU的架构进行了系统级优化,使得各类算子在计算与数据通路上都能高效执行,从而保证整体模型的性能。
接下来我们来看下山海AI工具链编译器的特点和编译流程。

山海AI工具链的编译器具备三个特点:
首先,它基于MLIR架构设计,支持ONNX、PyTorch、TensorFlow等多框架输入,具备良好的跨框架兼容性和复用能力;
其次,优化策略采用分层设计,前端做硬件无关优化,比如冗余计算清理、数据类型与形状推导,以及表达式简化等,使计算图更加规范和紧凑;后端则面向A2000 NPU进行硬件相关优化,包括自动并行调度、内存与带宽优化、图融合及pipline的执行,从而提升整体的执行效率;
第三,支持多精度计算与关键算子优化,能够覆盖Transformer与多视角融合等典型场景中的常见算子,使模型部署更加稳定、可控且易于调试。
左侧是编译流程图,模型首先从ONNX、PyTorch等格式统一转换为MLIR中间表示,在ONNX Dialect阶段完成基础清理与规范化处理;随后进入BST Dialect,依次进行算子重写、Dialect转换、表达式归一化、类型推导以及冗余计算清理等多轮优化,使传进来的计算图逐步适配硬件执行约束;最后进入架构感知优化阶段,主要是针对A2000 NPU特性进行深度优化,并在最终的代码生成阶段输出Binary Model,实现从高层模型到硬件可执行指令的完整映射。

再来看下编译器是如何保证编译结果具备正确性和一致性的。这里主要包括三部分来验证:
第一步,在仿真阶段进行一致性验证,这一步是为了确保reference model(理论模型)与Net-FM生成的仿真结果是一致的,主要作用是验证编译器在算子级别的实现是正确的。
第二步,在板端阶段进行一致性验证,来确保reference model与Binary Model在硬件上的执行结果是一致的,用于验证实际硬件执行链路是具备正确性的。
第三步,在工程交付层面,我们还会进一步评估Binary Model与原始ONNX模型输出之间的差异。通常会通过高阈值的Cosine Similarity等指标进行约束,确保模型在迁移过程中的精度损失在可控范围内。
最后,我们会结合HAPPY工具输出层级以及算子级的误差分析结果,来帮助用户快速定位误差来源,提升整体的调试效率。

在端侧部署中,精度与性能之间的权衡,本质上可以归结为数据格式的选择。浮点模型的精度更稳定,但计算和带宽开销更高;定点精度更加高效,但对量化和对齐的要求更严格。
A2000硬件支持浮点、定点以及混合精度计算,可以针对不同模型、不同算子灵活的配置精度,在保证精度可接受的前提下,尽可能提升整体吞吐效率,降低带宽消耗。
基于这些特性,我们的量化策略通常采用“定点为主、混合兜底”的思路:将大部分算子压缩到INT4或INT8,以降低计算与带宽开销,同时对少量数值敏感层,依然保留FP16或FP8,确保整体精度的稳定性。
在工具侧,我们采用软硬件协同的定点量化与对齐方案,引入更精细的量化约束与后处理优化策略,使定点模型在保证可编译、可对齐的前提下,尽可能逼近浮点模型的输出效果,从而实现性能与精度之间的最优平衡。
左边两张表,展示了我们目前对常见算子的权重、激活值数据类型的支持情况,基本上能够覆盖目前所有的应用场景。

针对不同的应用场景,目前主要有三档精度选型方案:
第一档是高精度模式,直接采用FP16精度做执行,特点是交付速度快、风险低,通常用来做一些功能演示以及小模型的快速联调部署。
第二档是平衡型方案,采用“INT8为主、FP16兜底”的混合精度策略,对模型中大部分算子进行定点量化,同时对少量数值敏感层保留浮点精度。这一档也是目前最常见的量产配置,主要用于绝大多数的CNN、BEV以及Transformer等主流生产模型。
第三档是高性能模式,在进一步压缩精度的基础上,将权重量化到INT4,并在适合的算子上引入FP8替代FP16,进一步降低带宽与存储压力,提升模型整体的吞吐性能。这一档更适用于LLM、VLM等大模型场景,但通常也需要更严格的量化校准与逐层精度对齐,以确保整体推理精度仍然可控。

接下来是用来做PTQ量化的Tuner工具。PTQ指的是模型训练完成之后,对模型进行离线式的量化压缩和模型对齐。
Tuner工具支持两种工作流,一种是直接把浮点模型做量化,另一种是通过Adapter对接第三方工具,比如图示当中的Nvidia Model-Optimizer,或者llm-compressor的量化结果,转换为编译器可接受的格式。
在设计上,Tuner以高效易用为核心,整体流程支持一键式执行,从PTQ、硬件对齐到后处理都可以自动完成,最终输出标准化的QDQ ONNX模型,可以无缝对接编译流程。输出的插入了QDQ的ONNX模型也可以通过ONNX Runtime做精度和功能的验证。
在此基础之上,Tuner也具备一定的鲁棒性。比如在量化过程中遇到一些量化失败的算子或子图,工具会自动进行隔离并重试,从而减少人工排障和试错成本。
Tuner也结合A2000的硬件特性,做了一些针对性的后处理优化,比如冗余QDQ清理、数据类型收敛及算子参数对齐等,从而降低编译失败率,提升模型可部署性。

此外,Tuner还提供完整的分析和调优能力,包括Graph-wise与Layer-wise精度评估、子图切分及中间张量导出等,可以帮助用户快速定位精度损失的问题层,并进行针对性优化,加快模型迭代效率。
这是用来做QAT的DAL工具。DAL的定位是用于训练侧的加速和精度优化工具箱,主要以Python wheel的形式嵌入到用户的训练代码中,具备低侵入性的特点,基本无需改动原有训练流程即可接入压缩与优化能力,从而提升工程集成效率。
从能力上看,DAL本质上是一个面向硬件约束的训练框架,支持多种训练的优化方法,包括:QAT(量化感知训练,支持INT8/FP8/INT4)、SAT(稀疏感知训练,如2:4 Sparsity)以及OAT(算子感知训练),用于在训练过程中引入硬件友好的结构与约束。
在实际使用路径上,DAL主要支持两类典型场景:
第一类是基于BST AT(算子自动替换机制)的HAT流程,通过预定义的硬件优化算子(如针对A2000优化的attention等结构),用户可以通过简单配置,将这些结构直接插入到PyTorch训练流程中,并结合剪枝或量化进行联合优化。这种方式无需经过ONNX中转,可以直接在用户的Torch环境中执行,帮助用户实现性能优化。
第二类是与Tuner联动的HAT流程,在PTQ完成后,如果模型精度仍然有损失,可以进一步接入DAL进行QAT优化。在此过程中,系统会自动引入面向A2000的一些硬件优化策略,如算子融合、scale的优化等,在保证模型可部署前提下,进一步提升模型精度。

HAPPY工具的定位主要是用于做精度与性能的联合分析。它的核心目标是把优化过程从“经验判断”转变为“可量化定位”,提供一套高效易用的分析与调优手段。
在性能分析方面,HAPPY能够区分计算瓶颈与IO瓶颈,并提供算子级的耗时拆解,帮助开发者明确性能开销集中在哪一类算子或执行阶段,从而给用户一个明确的优化方向。
在精度分析方面,HAPPY工具基于一致性对比机制,支持多阶段结果对齐,并且能够输出层级或算子级的误差分布,帮助用户快速定位精度偏差来源,从而加速问题收敛。
在实际应用过程中,如果模型部署出现了板端Binary Model与参考模型或原始ONNX模型推理结果差异比较大的情况,HAPPY可以逐层对齐计算结果,精确定位到具体的异常算子,然后再去判断到底是硬件执行问题还是算子实现的问题。
在碰到板端模型耗时异常的时候,就可以使用HAPPY的性能分析策略来定位到底是IO异常还是计算异常,甚至定位到具体是哪一层或哪一类算子的异常,通过高效易用的方式大幅提升问题排查效率。
Runtime是整个工具链的闭环落地点,它的核心作用是将编译之后的模型在硬件端稳定、高效地执行起来,支持快速验证与灵活扩展。
在易用性设计上,Runtime提供了多层接口支持,既有面向高性能场景的C/C++执行通路,也提供Python接口用于快速验证与调试,同时还支持Triton编程接口,方便开发者进行自定义算子开发与高性能扩展,从而在不同开发阶段都能做到低成本接入。
在生态兼容性方面,Runtime基于MLIR体系做了一些表达与对接,从而能够更好地承接MLIR的生态能力,同时适配板端PyTorch推理需求,并支持算子在线转换与加速,使模型能够进一步提高执行效率。
以上就是关于华山A2000高效易用山海AI工具链的介绍。

这里给大家介绍下我们面向LLM/VLM/VLA模型在端侧部署的一套通用优化流程。以我们开发的Qwen-VL多模态模型为例,整体分为三个阶段:
首先是模型压缩与量化阶段。我们基于llm-compressor构建了统一的量化压缩框架,支持SparseGPT、GPTQ等主流的量化算法。在此基础之上,还进一步结合2:4结构化稀疏+W4权重量化的组合策略,从计算量、模型体积和带宽三个维度做了协同优化。压缩后的safetensors模型可以通过Tuner Adapter无缝接入后端编译流程,同时也兼容直接输入浮点模型,保证了流程的灵活性。
其次是编译器优化与编译阶段。我们在端侧构建了面向大模型的图优化流程,基于MNN对计算图进行深度结构优化(如算子融合、图裁剪等),来减少冗余计算与访存开销;随后通过BST Compiler完成面向NPU的算子映射与硬件适配,从而最大化释放端侧算力。
最后是板端运行与系统级优化阶段。针对实际硬件环境,我们从执行与调度两个方面进行了优化:一方面通过高性能自定义算子提升关键路径算子的执行效率;另一方面支持CPU/NPU/GPU的异构调度,实现资源的最优利用。同时结合KV Cache与多种推理加速算法,并通过static shape来优化执行的稳定性与性能表现。
整体来看,我们的优化重点在于:前端通过稀疏与低比特量化降低计算与带宽压力,中端通过图优化与编译提升执行效率,后端通过算子与系统级调度释放硬件性能,从而形成一套端到端闭环的高效部署方案。

最后,我将通过在线演示如何使用山海AI工具链进行Tuner PTQ量化、Model Compiler编译和Trace Profiling分析。详情如视频所示:
1、Tuner PTQ量化演示

2、Model Compiler编译演示

3、Trace Profiling分析演示

以上就是我今天的分享,谢谢大家。


























