AI芯之旅:AI编译器

来源:智芯科 #智芯科# #AI# #编译器#
1.4w

当AI模型像时尚界的潮流一样不断变换,底层硬件的选择也变得像超市的打折货架上的产品一样令人眼花缭乱。AI开发者不仅要像时尚设计师一样精心设计打造他们的算法和模型,还得像精明的购物者一样挑选合适的硬件,确保他们的AI大作能在硬件上大放异彩。

古语有云:“工欲善其事,必先利其器”。AI编译器便是这把锋利的神器,让AI开发者仅需专注于上层模型开发,AI 编译器负责针对具体AI硬件的性能优化和底层部署,从而进一步压榨硬件性能空间,提高算力利用率。

01 传统编译器

编译是程序开发的一个重要步骤,编译器(Compiler)负责在程序运行之前把用高级程序语言(C,C++)书写的源代码翻译成计算机硬件可执行的机器码。在我们所熟知的LLVM 和 GCC 等经典的开源编译器架构中,其通常将编译器分为前端(Fron-end)、中间表达(IR)、后端(Back-end)。

前端将程序划分为基本的组成部分,并进行语法、语义和词法检查,然后生成中间代码。

中间层(IR)主要是对源程序代码进行优化和分析,分析阶段包括词法分析、语法分析、语义分析;优化器主要是优化中间代码,去掉冗余代码、子表达式消除等工作,然后生成中间表达IR。

后端则针对具体的硬件对 IR 进行优化,生成目标代码,包括代码优化和代码生成。

图源:《The Architecture of Open Source Applications》

02 AI 编译器

从1957 年的第一个编译器 IBM Fortran的诞生到现在,编译器历经60余年的发展,经历了多个阶段,它的起源,几代人所付出的巨大努力和取得的成果是今天很多开发者都无法想象的。编译器在发展过程中既诞生了GCC和LLVM这样极具生产力和影响力的开源编译平台,也与时俱进的创造出TVM,MLIR等新一代开源AI编译框架。

2021 年,LLVM 之父 Chris Lattner 在 ASPLOS 会议中发表了名为“编译器的黄金时代”的主题演讲,分享了编译器的发展现状和未来。Chris 认为提供底层算力的硬件层出不穷,越来越多样,硬件生态迅速壮大,但软件还是很难充分利用它们来提高性能。而且如果软硬件协同不到位,性能会受到巨大影响,那将不止是 10%左右的浮动。

回顾历史,自 90 年代以来,GCC解决了当时编译体系生态的碎片化问题,为软件开发带来了统一的标准和便利。LLVM 的诞生进一步推动了整个编译器领域的发展,为不同硬件平台提供了强大的编译支持。

历史总是惊人的相似,AI 编译器的发展阶段似乎回到了 GCC 出现之前的时代。AI 芯片公司也都在积极推进自己的 AI 编译器、框架甚至软件栈,市场上再次面临AI编译体系生态的碎片化问题。然而从历史发展规律的角度来看,这也是AI编译器发展的必由之路,符合新事物发展从特殊到一般的发展规律。

未来十年将是 AI 编译器快速发展的十年。随着技术的进步和市场的整合,新的技术将会出现,并重新塑造编译器领域的格局。我们将迎来一个新的"大一统"时代,编译器领域将会经历一次全面的革新和整合。

03 AI 编译器 VS 传统编译器

AI编译器与传统编译器都包含前端、中间优化和后端,通过 IR 解耦前端和后端使得可以进行模块化表示。并通过 Pass对IR 进行优化,从而提高程序执行时的性能。同样都是输出针对目标硬件平台的机器码,但不同的是传统编译器的输入是高级程序语言,而AI编译器的输入是计算图。AI 编译器对 Graph IR 进行优化后,可以将优化后的 IR 转化成传统编译器 IR,最后依赖传统编译器进行机器码生成。与传统编译器相比,AI 编译器的主要目标则是优化整个程序的性能,确保神经网络模型在硬件上高效运行。在中间优化阶段,AI 编译器专注于图算融合、算子融合、自动微分和并行切分等特定优化技术。后端则根据目标硬件平台,对 kernel 进行定制化优化,确保代码在不同硬件上都能高效运行。在某些情况下,如 CPU 或 TPU 等芯片,AI 编译器甚至可能利用类似 LLVM 这样的传统编译器技术。AI 编译器在很多方面是站在传统编译器的肩膀上,它们之间形成了一种互补和协同的关系。

04 智芯科存算一体CIM编译器

在激烈的人工智能技术竞技场上,智芯科在存内计算(CIM)AI硬件深耕多年,从底层逻辑上颠覆了传统冯诺依曼架构。相较于传统架构的NPU,存内计算AI硬件加速器极大降低了延迟和功耗,是边缘计算和移动设备端部署AI 模型的理想之选。基于自研CIM 硬件,我们亦提供了一套与硬件高度耦合、高度创新的编译部署工具,最大限度的挖掘了自研CIM硬件的运算效率和能效比。

智芯科的存算一体AI编译器架构,具有高适配性,高灵活性,高优化性,用户友好的界面和卓越的性能。具体体现在:

1. 在前端AI训练框架对接方面,进行 tensorflow,pytorch,onnx,keras等多种框架模型格式的支持。

2. 在算子支持广度上,除了常用的 CNN, DNN结构,亦对单双向 GRU,LSTM等序列模型常用结构,Unet,Resnet等图像模型常用结构,transformer,conformer 等大语言模型流行结构,均作了硬件适配和效率/功耗优化。

3. 增加异构计算的策略,对用户自定义算子也能进行全方位的支持。

4. 在内存使用上,对于不同算子类型和算子连接结构,采用不同策略针对性优化,最大化内存复用,以适配有限存储资源。

5. 在硬件利用率和能效比上,根据不同情况进行了深度优化。在部署工具本身使用上,我们致力于 稳定,高效,易用,简洁,美观。

我们的解决方案已经帮助客户实现了多种 AI模型端侧部署的落地,也在与客户的反馈互动中,对工具进行了多次迭代升级。在多个开源benchmark模型的测试上表明,与其他NPU 部署工具相比,本工具具有更好的软硬件综合性能和用户体验感。这些成果,是我们技术实力的最佳证明。

本期AI芯之旅带您领略了传统编译器和AI编译器的风采。下一站,我们将沿着CIM的应用足迹开启新的旅行。敬请期待,不见不散!

责编: 爱集微
来源:智芯科 #智芯科# #AI# #编译器#
THE END
关闭
加载

PDF 加载中...