当下人工智能技术正加速发展,渗透到云、边、端和应用的各个层面,与海量 IoT 设备进行深度融合,不断拓展应用场景。然而在 AIoT 场景中,嵌入式设备往往算力有限,难以承载庞大的 AI 模型。如何在资源有限的终端场景实现 AI 模型的有效部署,是加速 AI 落地的重要问题。
AI 工程师们研发了各种试图缩小模型大小并保持性能的办法,例如量化和蒸馏。其中,模型量化是将浮点计算转成低比特定点计算的一种模型压缩技术,可以有效减少模型算力消耗并提升计算速度,当前已经在工业界发展比较成熟。
目前相对成熟的模型量化方案是 INT8 量化。以 ResNet-50 模型为例,原本需要用 float 32 表示的权重,量化后只需要使用 INT8 表示,通过这样的处理,模型体积可以减少到原来的 1/2,再加上 TensorCore 的加持,还会有近 8 倍的网络加速。而如果更进一步,将模型用 INT4 表示,可以带来更多的速度提升。
为了推动低比特量化技术的发展,旷视天元MegEngine 团队开源了 INT4 的源码实现,这也让 MegEngine 成为首个开源 CUDA INT4 源码实现的深度学习框架。
MegEngine采用均匀线性量化方案,实现了非对称量化和对称量化两种 INT4 的数据类型,同时通过算子融合优化、kernel 优化等方法,使得量化后的模型可以依然保持较高的精度以及良好的运行速度。同样以 ResNet-50 为例,INT4 相比 INT8 有 1.3 倍的加速。
具体代码实现可以访问 GitHub 链接(https://github.com/MegEngine/examples)了解详情。
随着 CUDA INT4 的开源,目前 MegEngine 框架不仅支持浮点数 FP32 和 FP16,而且支持 INT8 和 INT4 的对称和非对称量化推理。
此外,MegEngine 框架开发了诸多工具,帮助用户提升模型推理性能、简化部署流程,包括自动代码裁剪功能,支持用户全自动的针对算子进行代码裁剪;TracedModule 方案以及 MegEngine Lite,基于旷视业务打磨出的模型推理最佳实践,化解模型转换部署难题;流程管理工具 FastRun, 可以为每个计算自动选择最快的算法,从而保证整个网络的运行时间最短,让 MegEngine 用户运行不同的网络时都能收获最好性能。
据悉,自开源以来,MegEngine 不断优化,已先后发布 29 个版本,推出一系列实用功能,降低 AI 算法生产门槛,助力 AI 应用快速落地。
评论