存内计算技术工具链——量化篇

news2024/11/18 19:45:55

本篇文章将重点讲述存内计算技术工具链之“量化”,我们将从面向存内计算芯片的深度学习编译工具链、神经网络中的量化(包括训练后量化与量化感知训练)、基于存内计算芯片硬件特性的量化工具这三个方面来对存内计算技术工具链的量化进行阐述。

一.深度学习编译工具链

工具链,英文名称toolchain,通常是指在软件开发或硬件设计中使用的一系列工具和软件,用于完成特定任务或流程。这些工具一般接连地使用,从而完成一个个任务,这也是“工具链”名称的由来。一般工具链的研发,大致与通用应用程序生命周期一致,分为五个阶段,如图1所示,图中包括每个阶段对应的工具等[1]。

图 1 工具链研发模型 [1]

而在AI芯片领域,工具链特指连接模型算法到芯片部署的端到端系列工具。面向存算一体芯片的深度学习编译工具链包括深度学习的算法设计、前端网络的模型转换、后端配置空间映射、存算一体的电路设计及各步骤的中间优化等模块;如今,面向传统芯片的深度学习编译工具链发展健全,而面向存算一体芯片的深度学习编译工具链在前端优化策略、后端空间映射等方面都仍有欠缺,这使得深度学习部署在存算一体芯片上移植性低、成本高,因此需要我们设计出能实现端到端的存算一体工具链及软硬件系统,而本文所述的“量化”,便是工具链中的重要工具之一。

图 2 深度学习编译器常用设计架构概述[2]

面向存内计算芯片的深度学习编译工具链通常包括量化、图优化、编译、调度、映射、模拟等工具:

(1)量化和优化工具

在涉及到机器学习和深度学习模型的存内计算应用中,量化和优化工具变得尤为重要。这些工具可以帮助将模型减小到能够在内存中高效运行的大小,同时尽量保持模型的准确性。

  1. TensorFlow Lite: 提供了一套工具,支持模型的量化,使其更适合在移动设备和边缘设备上运行。
  2. PyTorch Mobile: 类似地,PyTorch提供了工具来优化和减小模型的大小,以便在资源受限的环境中运行。

(2)编译器与编程框架:

  1. 存内计算通常需要定制化的编译器,它能够理解特定存内计算硬件的特性,并将算法和程序转换为能在存储单元内执行的形式。
  2. 而编程模框架必须适应存内计算的特点,比如提供API或DSL(领域特定语言),允许开发者表达针对存内计算架构的并行性和数据局部性。

(3)映射与调度工具:

  1. 数据布局和计算任务在存储阵列中的映射至关重要,相应的工具应能智能地分配和管理数据在内存单元中的位置,优化计算效率和带宽使用。
  2. 调度工具则负责在不同时刻根据资源约束安排计算操作,确保有效利用存内计算硬件的并行性和容量。

(4)模拟与验证工具:

  1. 设计阶段需要用到高级和低级的模拟器来模拟存内计算芯片的行为,验证功能正确性以及性能预期。
  2. 验证工具帮助确保逻辑功能、功耗分析、时序收敛以及与主处理器或其他组件之间的交互都符合设计需求。

(5)开发和测试工具:

  1. Jenkins, GitLab CI/CD: 这些持续集成和持续部署工具可以自动化存内计算应用的构建、测试和部署过程。
  2. JUnit, PyTest: 提供了丰富的测试框架,帮助开发者编写和执行单元测试和集成测试。

.神经网络中的量化

量化工具链可以推动工具链和存内计算技术的进一步发展,下面将介绍量化的基本知识,重点围绕神经网络量化进行讲解。

(1)量化的概念[3]

量化通常是指将连续值或较大范围的值简化为较小范围内的值的过程。在数字信号处理中,这通常指的是将模拟信号转换为数字信号的过程。在神经网络中,量化通常指的是将浮点数(如32位的Float)转换为低位数的表示(如8位或16位的Int)。

(2)量化的意义

近年来,深度学习技术在多个领域快速发展,特别是在计算机视觉领域,深度神经网络已在图像分类、目标检测等各种计算机视觉学习任务上展示了突破性结果。然而,这些方案通常是通过扩大神经网络规模来提高性能,需要花费更高的计算资源和内存需求。这导致大多数深度神经网络只能在图形处理器等高算力设备上运行推理,然而此类设备往往需要很大的功耗才能达到实时的推断效果。因此,开发轻量级的深度神经网络、进行模型量化对于计算资源有限的边缘设备来说至关重要。此外,深度学习技术的发展也带来了神经网络模型的快速发展,随之而来的就是模型参数的大幅度提升[4]。如图3所示,在Transformer架构兴起之后,模型规模呈指数级增长。神经网络的参数数量已经从Alexnet的6000万个增长到OpenAI GPT-3的1750亿个[5],对模型的存储空间和计算资源等提出了更高的需求。

图 3 神经网络模型参数随时间变化[5]

模型量化技术可以在一定程度上缓解上述问题,即通过数据压缩,来降低模型的存储空间、内存占用和计算资源需求,从而提高模型的推理速度,丰富应用场景,量化已经成为深度神经网络优化的大方向之一。然而量化由于涉及到舍入或截断操作,会引入一定的误差。因此,量化技术的一个重要的挑战是在减少模型大小和保持模型精度之间进行折衷。

(3)模型量化的实例

TensorFlow[6]提供了两种量化方法,训练后量化(POT, Post Training Quantization)和量化感知训练(QAT, Quantization Aware Training)。

①训练后量化[7]

PTQ量化可以无需原始的训练过程就能将预训练的FP32网络直接转换为定点网络。这个方法通常不需要数据或者只需要很少的校准数据集,并且这部分数据通常可以非常容易的获得。量化过程中无需对原始模型进行任何训练,而只对几个超参数调整,从而以高效的方式去对预训练的神经网络模型进行量化。这使得神经网络的设计者不必成为量化方面的专家,从而让神经网络量化的应用变得更加广泛。

如图4所示,为标准的PTQ量化流程,包括跨层均衡(CLE)、添加量化器(Add Quantizers)、权重范围设置(Weight Range Setting)、自适应舍入(AdaRound)、偏差校正(Bias Correction)、激活范围设置(Activation Range Setting)等步骤,这个流程为许多计算机视觉以及自然语言处理模型及任务实现了有竞争力的PTQ结果。根据不同的模型,有些步骤可能是不需要的,或者其他的选择可能会导致相同或更好的性能。

图 4 标准的PTQ量化流程示意图[7]

②量化感知训练[8]

PTQ量化通常是量化方式的第一个选择,由于其不需要使用带标签的数据重新训练网络,因此通常非常有效并且计算速度非常快。然而在针对激活的低bit位量化时,例如4位及以下,PTQ量化可能不足以缓解低bit位量化产生的巨大量化误差。在这些情况下,最好采用QAT量化方式。QAT量化,是将训练过的模型进行量化并再训练。使用QAT量化时,会为权重值和激活值插入Q节点(量化节点,从FP32量化为INT8)和DQ节点(反量化节点,从INT8量化为FP32)来模拟量化的过程。QAT在训练期间对量化噪声源进行建模,这允许模型找到比PTQ更优的解决方案,然而更高的准确性也要求更多的训练成本、更长的训练时间,需要带标签的数据集,超参数搜索等。

如图5所示,为标准的QAT量化流程,包括跨层均衡(CLE)、添加量化器(Add Quantizers)、范围设置(Range Estimation)、量化参数可学习(Learnable Quantization Params)等步骤,其中在量化参数可学习中,需要直接学习量化参数,而不是在每个周期中更新它们,从而带来更高的性能,特别是在处理低比特量化时,这种设计效果更好。该流程在各种计算机视觉和自然语言处理模型和任务中产生了良好的QAT结果,并且可以被视为实现低比特量化性能的首选工具。

图 5 标准的QAT量化流程示意图[8]

.基于硬件特性的量化工具量化精度与硬件性能之间存在较强的耦合。当前的神经网络开发环境和深度学习算法已针对电脑端CPU、GPU、NPU、DSP等部分,以及传统意义上执行速度慢的浮点运算进行了广泛的优化,使得在电脑端设计神经网络变得更加简单,在电脑端训练、运行神经网络变得高效。但需要注意的是,PyTorch、TensorFlow等常用开发环境中默认的权重参数通常是Tensor Float 32格式,由于开发环境对该计算格式的优化,使得如果在电脑端训练BNN网络或整数类型网络,甚至需要额外编写加速整数运算的算法来加速整数运算[9]。而现有的量产存内计算芯片主要支持较低比特的整数形式数据计算和存储,因此为了保证网络和训练的高效,需要通过软件工具对训练得到的权重参数进行精度转换和调整,再部署到存内计算芯片中。

图 6 量化工具链工作流程示例(图源:CSDN 作者:千北@)

神经网络依赖大量数据来发现规律,原则上可以容忍一定的计算误差。但是,由于神经网络的复杂性(例如深度网络),将权重参数量化为整数形式可能会导致推理结果与训练习到的规律显著不同。因此,在量化过程之后,通常需要对网络进行重新训练和权重参数的微调,以确保量化后网络的效果。

算法与硬件需要协同设计才能在不损失精度的情况下,充分发挥存内计算芯片的优势。存内计算芯片旨在突破计算和存储间的数据搬移瓶颈,加速神经网络中常见的乘累加运算,但神经网络中地其他运算则需要依靠外部电路进行处理。基于该特性,神经网络的设计需要在传统算法的基础上进行改进,例如通过重新设计数据结构和访问模式来减少不必要的数据移动,或者调整计算过程以适应芯片的特定能耗模式,最终实现量化感知的应用算法结构与训练框架,这一过程离不开量化工具链的支持。已有存内计算芯片厂商,如知存科技和后摩智能,建立了自己的开发者网站,并推出了开发者工具、量化工具链和开发板。例如知存科技的神经网络映射编译软件栈witin_mapper,后摩智能的后摩大道软件平台。这些工具的推出不仅为开发者提供便利,而且进一步促进了存内计算技术的发展。

参考资料

[1] A glimpse into the exploding number of DevOps tools, which are filling the gap created by the waterfall model’s displacement.(Source:GrowthPoint Technology Partners)

[2] Li M, Liu Y, Liu X, et al. The deep learning compiler: A comprehensive survey[J]. IEEE Transactions on Parallel and Distributed Systems, 2020, 32(3): 708-727.

[3] 神经网络中的量化-简介 - 知乎 (zhihu.com).

[4] P. -Y. Chen, H. -C. Lin and J. -I. Guo, “Multi-Scale Dynamic Fixed-Point Quantization and Training for Deep Neural Networks,” 2023 IEEE International Symposium on Circuits and Systems (ISCAS), Monterey, CA, USA, 2023, pp. 1-5.

[5] B. -S. Liang, “AI Computing in Large-Scale Era: Pre-trillion-scale Neural Network Models and Exa-scale Supercomputing,” 2023 International VLSI Symposium on Technology, Systems and Applications (VLSI-TSA/VLSI-DAT), HsinChu, Taiwan, 2023, pp. 1-3.

[6] B. Jacob, S. Kligys, B. Chen, et al, “Quantization and training of neural networks for efficient integer-arithmetic-only inference,” in Proceedings of the IEEE conference on computer vision and pattern recognition, 2018, pp. 2704-2713.

[7] 再读《神经网络量化白皮书》- 0x03 训练后量化(PTQ) - 知乎 (zhihu.com).

[8] 再读《神经网络量化白皮书》- 0x04 训练时量化(QAT) - 知乎 (zhihu.com).

[9] Hubara I, Courbariaux M, Soudry D, et al. Binarized neural networks[J]. Advances in neural information processing systems, 2016, 29.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

颜色检测python项目

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 什么是颜色检测? 颜色检测是检测任何颜色名称的过程。很简单不是吗?嗯,对于人类来说,这是一项极…

nvm下载及管理NodeJs版本,可随意切换,安装,卸载

nvm下载及管理NodeJs版本 nvm下载及管理NodeJs版本,可随意切换,安装,卸载

c++ primer plus笔记 第十八章 探讨c++新标准

复习前面的内容: 1.auto,可以自动识别auto本身在这种语境下是什么类型 2.decltype,让一个变量的类型和另外一个变量的类型相同 decltype(x) y;//让y的类型和x的类型相同 如何理解? decltype是一个关键词,其作用是检查括号内的…

【教程】APP备案全攻略:确保你的应用合规上线

【教程】APP备案全攻略:确保你的应用合规上线 摘要 本文详细介绍了中国大陆地区互联网信息服务提供者(AP)进行APP备案的流程、要求和注意事项。包括备案对象、备案方式、备案内容、备案流程等方面的详细说明,帮助开发者顺利完成…

微软模拟飞行器回放功能

参考b站up主,欢迎大家去关注:https://www.bilibili.com/video/BV1Z34y1P7zz/?spm_id_from333.880.my_history.page.click&vd_source4e0b40493e2382633fab2ddc1bb1d9cc 下载网址:https://flightsim.to/file/8163/flight-recorder 坠毁检…

微信公众号调用沙箱支付

沙箱支付 登录支付宝开放平台,选择底部沙箱支付 下载密钥生成工具 生成应用私钥与公钥,上传沙箱支付,获得支付宝公钥 配置支付通知与支付回调地址 SpringBoot配置 yml文件 这里的地址必须与沙箱配置的一样 controller package com.zq…

如何利用Python进行自动化测试和性能测试

在Python中,我们可以使用多种库和工具来执行自动化测试和性能测试。下面是一些示例代码,用于展示如何使用Python进行这两种类型的测试。 自动化测试 自动化测试通常使用诸如unittest或pytest这样的Python测试框架来执行。下面是一个使用unittest进行自…

RK3568驱动指南|第十三篇 输入子系统-第139章 输入子系统数据结构介绍

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

做抖音小店需要交钱吗?有门槛吗?都有哪些入驻条件和费用?

大家好,我是电商花花。 在抖音上开店已经成为很多人追逐的方向,因为这些人都看到别人在抖音上赚到钱,然后也想在抖音上尝试一下。 然而,许多人心中仍然存着一个问题,就是做抖音小店需要交钱吗?是否存在门…

长期异地就医备案有效期是多久?答记者问!

4、长期异地就医登记的有效期是多长? 答:异地长期就医登记长期有效。 如果您因个人原因需要变更长期居住地,只需提供相应的登记信息即可申请变更。 5、临时异地就医登记的有效期是多长时间? 答:临时异地就医登记包括…

《ElementPlus 与 ElementUI 差异集合》el-form-item CSS 属性 display 有变化

差异 element-ui el-form 中,属性display: flex; 导致元素在一排;element-plus el-form 中,属性display: block; 元素按照自己的属性排列; /* element ui */ display: block;/*element plus */ display: flex;如图所示 解决方案…

web基础05-jQuery

目录 一、jQuery 1.概述 2.原生js与jQuery对比 3.特点 4.使用 (1)入口函数 (2)语法 (3)jQuery选择器 5.方法 (1)获取属性值: (2)删除属…

在手机上欣赏无人直播,享受美好时光!

在这个充满着快节奏、高压力的现代社会中,人们经常感到身心疲惫,渴望找到一些放松和享受美好时光的方式。而随着科技的不断发展,手机已经成为人们生活中必不可缺的工具之一,为我们带来了诸多便利。其中,无人直播就是一…

MS5583N高分辨率模数转换器

产品简述 MS5583N 是一款高分辨率模数转换器,内部集 成高阶 Σ-Δ 调制器、低噪声可编程增益放大器、多 路输入选择器和多种内部数字滤波器。其转换速率 从 250SPS 到 4kSPS 。此外,芯片内部集成失调校准 寄存器和增益校准寄存器。 MS5583N …

精品基于Springboot的聊天交友系统的设计与实现

《[含文档PPT源码等]精品基于Springboot的聊天交友系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: Java——涉及技术: 前端使用技术&#xf…

2023年中国高校大数据挑战赛D题参考论文发布(全网首发)

腾讯文档】2023年大数据挑战赛资料说明 https://docs.qq.com/doc/DSEpWUVFySm1ObFB0 基于数据分析的行业职业技术培训能力评价 摘要 中国是制造业大国,产业门类齐全,每年需要培养大量的技能娴熟的技术工人进入工厂。本文将基于题目给出的数据&#x…

力扣--动态规划5.最长回文子串

class Solution { public:string longestPalindrome(string s) {// 获取输入字符串的长度int n s.size();// 如果字符串长度为1,直接返回原字符串,因为任何单个字符都是回文串if (n 1)return s;// 创建一个二维数组dp,用于记录子串是否为回…

AI生成对抗网络的解释

了解生成对抗网络 (GAN) 的不同方面和复杂性,GAN 是一种在人工智能 (AI) 领域内外使用的神经网络。本文将向您介绍 GAN,介绍什么是 GAN,并解释如何使用它们。 GAN简介 今天对称为 GAN 的通用模…

eclipse maven 项目导入报错

错误:Internal compiler error: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor 环境:eclipse Kepler Service Release 2 ,JDK1.7 解决办法:编码不对,修改

惠海H5118舞台灯芯片方案 RGBW共阳12V/24V/36V大功率 无频闪

H5118是一款外围电路简单的多功能平均电流型LED恒流驱动器,适用于5-48V电压范围的非隔离式大功率恒流LED驱动领域。芯片采用了平均电流模式控制,输出电流精度在3%;输出电流对输入输出电压以及电感不敏感;芯片内部集成了…