开源TPU编译器在计算硬件和人工智能框架之间架起桥梁
TPU-MLIR正式开源!用SOPHGO构建下一代人工智能编译器
https://github.com/sophgo/tpu-mlir
https://tpumlir.org/en/2022/08/26/tpu-mlir-zheng-shi-kai-yuan-gen-suan-neng-yi-qi-da-zao-xia-yi-dai-ai-bian-yi-qi.html
近年来,以深度学习为代表的人工智能技术发展迅速,深度神经网络广泛应用于各行各业。
SOPHGO开源TPU编译器在计算硬件和人工智能框架之间架起桥梁
开发人员可以使用TensorFlow、PyTorch、飞桨和其他深度学习框架快速训练他们的人工智能模型。然而,如果用户想将这些模型部署到TPU和GPU等终端计算设备上,他们需要将模型中的计算图/运算符输出为低级机器语言,以实现更快的操作。此时,人工智能编译器有了用武之地。
作为框架和硬件之间的桥梁,人工智能编译器可以实现各种计算芯片的代码开发和重用目标。最近,SOPHGO还推出了自己的TPU编译工具TPU-MLIR。
TPU-MLIR是一个专注于人工智能芯片的TPU编译器开源项目。它提供了一个完整的工具链,可以将不同框架下预先训练的深度学习模型,转换为可以在TPU上运行的二进制文件bmodel,从而更有效地推理。
MLIR(Multi-LevelIntermediateRepresentation)是一种构建可重用、可扩展编译基础设施的新方法。它是由LLVM的原作者Chris Lattner在谷歌工作期间开发的。MLIR旨在构建一个通用且可重用的编译器框架,解决软件碎片化问题,并改进异构硬件的编译,从而显著降低构建特定领域编译器的成本。
TPU-MLIR建立在MLIR的肩上。现在,整个项目的所有代码都是开源的,对所有用户都是免费的。
准确与高效并存,TPU-MLIR实现对主流框架的全面支持#
与其他编译工具相比,TPU-MLIR具有以下优点:
简单:通过阅读开发手册和项目中包含的示例,用户可以了解模型转换的过程和原理,并快速入门。此外,TPU-MLIR是基于当前主流编译器工具库MLIR设计的,用户也可以通过它学习MLIR的应用。
方便:该项目提供了一套完整的工具链。用户可以通过现有的接口快速完成模型的转换,而无需适应不同的网络。
概述:TPU-MLIR现在支持TFLite和onnx格式。这两种格式的模型可以直接转换为TPU可用的bmodel。如果不是这两种格式呢?事实上,onnx提供了一套转换工具,可以将市场上主流深度学习框架编写的模型转换为onnx格式,然后继续转换为bmodel。
TPU-MLIR的工作流程
精度与效率并存:模型转换过程中有时会出现精度损失。TPU-MLIR支持INT8对称和非对称量化,结合原开发企业的Calibration和Tune技术,大大提高了性能,确保了模型的高精度。此外,TPU-MLIR还使用了大量的图优化和算子分割优化技术,以确保模型的高效运行。
目前,TPU-MLIR项目已应用于SOPHGO开发的最新一代人工智能处理器BM1684x,该处理器的高性能ARM内核和相应的SDK可以实现深度学习算法的快速部署。
实现极致性价比,打造下一代AI编译器#
如果神经网络模型想要支持GPU计算,则需要开发神经网络模型中的运算符的GPU版本。如果它需要适应TPU,它需要为每个运营商开发一个TPU版本。在其他场景中,它需要适应同一种计算处理器的不同型号的产品。如果每次都需要手动编译,这将是费时费力的。
AI编译器就是为了解决上述问题而设计的。TPU-MLIR的一系列自动优化工具,可以节省大量的手动优化时间,使在CPU上开发的模型能够顺利且经济高效地迁移到TPU,以实现最终的性价比。
随着Transformer等神经网络结构的出现,新算子的数量不断增加。这些算子需要根据后端硬件的特点进行实现、优化和测试,以完善硬件的性能。这也导致运算符的复杂性更高,调整难度更大,并且并非所有运算符都可以由一个工具有效生成。整个人工智能编译器领域仍处于不断完善的状态。
TPU-MLIR还需要持续的研发投入、AI处理器支持、代码生成性能优化、运行时调度优化等环节,这些环节还有很大的提升空间。用户也可以参与项目的改进,与SOPHGO合作,打造一款站在时代前沿的AI编译器!
参考文献链接
https://github.com/sophgo/tpu-mlir
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-03-22 特斯拉FSD技术优化改进分析
2022-03-22 台积电2nm与3nm制程
2020-03-22 视觉SLAM技术应用
2020-03-22 Waymo的自主进化
2020-03-22 自动驾驶传感器产业链
2020-03-22 激光雷达目标检测
2020-03-22 嵌入式系统综述