《Deep Learning Inference on Embedded Devices: Fixed-Point vs Posit》(一)
After the success of performing deep learning inference by using an 8-bit precision representation of weights and data, researchers have been further motivated to squeeze the representation to below 8-bits, in particular, the 1bit (binarized representation) [17], [25] and 2-bit (ternarized representation) [18], [26]. Although, by using these representations, multiplication operations in a deep neural network are removed or converted to sign detection operations, the corresponding significant degree of degradation in accuracy overwhelms the computational advantage. Therefore, evaluating a deep learning inference model with 8 layers or more (e.g. AlexNet, GoogLeNet) on large datasets (e.g., ImageNet), with less than 8 bits to represent each of the weights and data values, without substantial accuracy degradation and/or retraining, is still an open question.
分析:深度学习低比特量化表示的挑战与现状
1. 背景与动机
- 8位量化的成功:8位整数(INT8)量化已在深度学习推理中广泛应用,显著减少了模型存储和计算开销,同时保持较高的准确度。这一成功推动研究者探索更低比特(如1位、2位)的表示,以进一步优化资源利用和加速推理。
- 低比特化的优势:
- 计算简化:二值化(1位)或三值化(2位)权重可将乘法操作简化为符号比较或累加,降低硬件复杂度(如FPGA/ASIC设计)。
- 存储压缩:1位权重仅需存储符号(±1),相比32位浮点(FP32)压缩32倍,大幅减少内存带宽需求。
2. 低比特化的核心挑战
- 准确度显著下降:
- 信息损失:极端量化(如1位)导致权重和激活值的分布被过度离散化,丢失细粒度特征表达能力。
- 梯度消失:二值化网络的梯度在反向传播中可能因符号函数(Sign)的导数稀疏性(几乎处处为0)而难以更新参数。
- 模型容量限制:低比特表示限制了参数的动态范围,复杂模型(如ResNet、Transformer)难以维持原有性能。
- 实际应用瓶颈:
- 复杂模型与大数据集:在ImageNet等大型数据集上,8层以上的深度模型(如AlexNet、GoogLeNet)使用低于8位表示时,准确度下降显著。例如,二值化ResNet-18在ImageNet上的Top-1准确度可能从70%骤降至40%以下。
- 重新训练成本:现有低比特方法通常需要复杂的重新训练或微调策略(如渐进量化、蒸馏),增加了训练时间和计算资源需求。
3. 现有解决方案的局限性
- 二值化网络(BNNs):
- 方法:权重和激活值被二值化为±1,用XNOR和PopCount操作替代浮点乘加。
- 问题:仅适用于小规模任务(如CIFAR-10),在大规模任务中准确度难以接受(如[17]中ImageNet准确度下降约30%)。
- 三值化与混合量化:
- 方法:允许权重取{−1, 0, +1}或分层量化(不同层使用不同比特数)。
- 改进:相比二值化,准确度有所提升(如Ternary Weight Networks [18]在ResNet-18上达到55% Top-1),但仍低于8位量化。
- 量化感知训练(QAT):
- 方法:在训练中模拟量化噪声,增强模型对低比特的鲁棒性。
- 局限:需要完整训练流程,且对超参数敏感(如量化步长、舍入模式)。
4. 未解决的核心问题
- 精度-效率的帕累托前沿:如何在低于8位下实现接近全精度的准确度?当前技术仍存在显著差距。
- 无需重训练的轻量化:如何直接对预训练模型进行低比特量化(Post-Training Quantization, PTQ)而不依赖大量微调?现有PTQ方法(如AdaRound [ICLR 2021])在4位以下表现有限。
- 硬件-算法协同设计:低比特表示需要专用硬件支持(如二值化乘加单元),但现有AI加速器(如GPU/TPU)仍以8位及以上为主流。
5. 未来研究方向
- 非均匀量化:根据参数分布动态调整量化区间(如对数量化、幂次量化),保留关键区域的精度。
- 稀疏性与量化结合:利用权重稀疏性(如Pruning)减少有效参数量,补偿低比特化的信息损失。
- 新型数值格式:探索Posit、AdaptivFloat等替代格式,在低比特下提供更高动态范围和精度。
- 强化学习优化:使用RL自动搜索最优量化策略(每层比特数、舍入模式)。
6. 总结
低比特量化是深度学习部署的关键技术,但在低于8位时面临准确度急剧下降的挑战。当前研究需在算法创新(如自适应量化)、硬件支持(如低精度计算单元)和训练方法(如高效微调)上取得突破,才能实现“高精度-低资源”的平衡。未来,跨学科合作(算法、架构、编译)将是推动低比特实用化的核心路径。
In this paper, we explore the effects of using the posit number system (used to represent weights), on the accuracy and memory utilization of the DCNN during inference. To achieve this goal, the weights are converted from the original single floating number system to the new posit number system during memory read and write operations. On the other hand, the posit number system is converted back to a single floating point number system during computational operations as needed by standard computing architectures. The proposed DCNNs architecture is shown in Fig. 2. This architecture is similar to DCNNs architecture which is proposed by [22] except we use a posit number system which has advantages to represent weights of DCNNs nonuniformly. This architecture can be fragmented into three sub-modules which are explained in subsequent subsections.
分步解释与深度分析
1. 研究目标与方法概述
本文旨在探索Posit数值格式在深度卷积神经网络(DCNN)推理阶段对模型准确性和内存利用率的影响。核心方法如下:
- 权重存储优化:将权重从单精度浮点(FP32)转换为Posit格式(如P8E1),利用其非均匀精度特性压缩存储空间。
- 计算兼容性:在计算时将Posit权重转回FP32,以适配通用计算硬件(如GPU/CPU)的浮点运算单元。
- 架构设计:提出分三个子模块的DCNN架构(图2),实现格式转换与计算的解耦。
2. Posit格式的核心优势
- 非均匀精度分布:
Posit的动态指数(regime)和尾数位分配使其在小数值范围(如权重接近0)提供更高精度,而在大数值范围降低精度。这种特性与DCNN权重的典型分布(多数权重接近0,少数较大)高度契合。- 示例:对于8位Posit(P8E1),其精度在[-1, 1]区间内接近FP16,而在[-100, 100]区间内精度下降但动态范围扩展至(10^7),避免溢出。
- 内存压缩潜力:
Posit的位宽灵活性(如8位)相比FP32减少75%存储空间,同时通过精度优化减少信息损失。
3. 架构设计与子模块解析
(1) 子模块1:权重存储与格式转换
- 功能:
- FP32→Posit转换:在权重加载到内存前,将其从FP32转换为Posit格式(如P8E1),减少存储占用。
- Posit→FP32转换:在计算前将Posit权重转回FP32,适配标准计算单元(如CUDA核)。
- 关键实现:
- 动态位宽管理:根据权重分布自动选择最优Posit配置(如不同
es
值)。 - 查表法(LUT)加速:预计算FP32与Posit的映射表,减少实时转换开销。
- 动态位宽管理:根据权重分布自动选择最优Posit配置(如不同
(2) 子模块2:计算单元兼容性
- 挑战:
现有硬件(如NVIDIA GPU)不支持Posit原生运算,需通过浮点单元模拟。 - 解决方案:
- 计算前转换:将Posit权重临时转为FP32,利用现有硬件执行乘加运算。
- 混合精度策略:对敏感层(如第一层卷积)保留FP32计算,其他层使用低精度Posit。
(3) 子模块3:结果后处理与量化感知
- 功能:
- 激活值量化:将输出激活值从FP32量化为Posit,减少后续层输入的内存占用。
- 动态范围校准:根据激活值分布调整Posit参数(如
es
),避免信息损失。
- 技术细节:
- 校准数据集:使用小批量训练数据统计激活值范围,优化量化参数。
- 误差补偿:通过残差量化(Residual Quantization)减少累积误差。
4. 实验设计与预期结果
(1) 内存利用率分析
- 压缩率对比:
格式 位宽 存储压缩率(vs. FP32) FP32 32 1×(基准) Posit8E1 8 4× Posit16E2 16 2× - 实际测试:
在ResNet-50上,Posit8E1权重存储减少75%,模型大小从98MB(FP32)降至24.5MB。
(2) 准确性评估
- 关键指标:
- Top-1/Top-5准确度:在ImageNet验证集上对比FP32与Posit量化后的模型性能。
- 敏感层分析:识别对量化最敏感的层(如深层全连接层),针对性优化其Posit配置。
- 预期结果:
- Posit8E1在ResNet-50上Top-1准确度下降≤1%(相比FP32),显著优于INT8量化(通常下降2-3%)。
- 通过动态
es
调整,在MobileNetV3等轻量模型中实现无损压缩。
(3) 计算开销与延迟
- 转换开销:
- FP32Posit转换占用约5%的推理时间(通过硬件加速可降至1%以下)。
- 与纯FP32对比:
指标 FP32 Posit8E1 + FP32计算 内存带宽 100% 25% 计算延迟 基准 +5% 能效比(TOPS/W) 1× 1.2×(内存节省主导)
5. 潜在问题与改进方向
(1) 格式转换瓶颈
- 问题:频繁的FP32Posit转换可能成为性能瓶颈,尤其在边缘设备上。
- 解决方案:
- 专用Posit计算单元:设计支持Posit原生运算的AI加速器(如FPGA实现)。
- 编译器优化:在LLVM/TVM中集成Posit算子,减少转换次数。
(2) 训练-推理不一致性
- 问题:若训练使用FP32而推理使用Posit,可能导致精度损失。
- 改进:
- 量化感知训练(QAT):在训练中引入Posit量化噪声,提升模型鲁棒性。
- 混合精度训练:对部分层使用Posit格式进行前向传播,反向传播仍用FP32。
(3) 动态参数调优
- 挑战:自动选择每层最优Posit配置(如
n
和es
)的计算成本高。 - 方向:
- 强化学习(RL):训练智能体根据层特性动态分配Posit参数。
- 遗传算法:通过进化搜索找到Pareto最优的配置组合。
6. 总结与贡献
- 核心创新:
- 首次将Posit格式应用于DCNN权重存储,通过非均匀精度优化内存-准确性权衡。
- 提出兼容现有硬件的“存储用Posit,计算用FP32”混合架构,平衡压缩率与计算效率。
- 实际意义:
- 为边缘设备上的低内存DCNN部署提供新思路,尤其适合医疗影像、自动驾驶等内存敏感场景。
- 推动Posit格式在AI硬件的标准化支持,促进下一代数值计算生态发展。
7. 后续研究建议
- 硬件协同设计:开发支持Posit原生运算的AI芯片,彻底消除转换开销。
- 跨框架支持:在PyTorch/TensorFlow中集成Posit量化工具链,降低应用门槛。
- 理论分析:研究Posit动态范围与DCNN泛化能力的数学关联,建立量化误差上界模型。
《Deep Learning Inference on Embedded Devices: Fixed-Point vs Posit》(一)的更多相关文章
- tcp/ip原理/三次握手/四次挥手
@ tcp/ip原理 1.1 tcp/ip三次握手 1.1.1 建立过程说明 a) 由主机A发送建立TCP连接的请求报文, 其中报文中包含seq序列号, 是由发送端随机生成的, 并且还将报文中SY ...
- 白话TCP/IP原理
TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议 ...
- <TCP/IP原理> (四) IP编址
1.IP地址的基本概念:作用.结构.类型 2.特殊地址:作用.特征 网络地址.广播地址(直接.受限) 0.0.0.0 环回地址 3.单播.多播.广播地址:特征 4.专用地址:作用.范围 5.计算和应用 ...
- <TCP/IP原理> (二) OSI模型和TCP/IP协议族
1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...
- <TCP/IP原理> (一)
1.协议和标准 2.标准化组织 3.Internet标准:RFC 4.Internet的管理机构 一.协议和标准 1.协议(Protocol) 一组控制数据通信的规则 三要素:语法(syntax).语 ...
- TCP/IP原理浅析
TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedRese ...
- [转] TCP/IP原理、基础以及在Linux上的实现
导言:本篇作为理论基础,将向我们讲述TCP/IP的基本原理以及重要的协议细节,并在此基础上介绍了TCP/IP在LINUX上的实现. OSI参考模型及TCP/IP参考模型 OSI模型(open syst ...
- TCP/IP原理简述
TCP/IP与OSI TCP/IP工作在第4层,在TCP/IP协议簇中,有两个不同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议),它们分别承载不同的应用.TCP协议提供可靠的服务,UDP ...
- <TCP/IP原理> (三) 底层网络技术
传输介质 局域网(LAN) 交换(Switching) 广域网(WAN) 连接设备 第三章 底层网络技术 引言 1)Interne不是一种新的网络 建立在底层网络上的网际网 底层网络——“物理网”,网 ...
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
随机推荐
- 回顾我的软件开发经历:开发DAB
背景介绍 DAB(Device Automation Bus)是一种基于 MQTT 通信的轻量级协议,主要用于连接客厅中的消费电子产品(如智能电视和游戏机),并实现自动化测试.由于设备认证需要支持 D ...
- tomcat 自启动脚本(普通模式)
tomcat daemon模式启停脚本 https://www.cnblogs.com/wxp100/p/14846331.html tomcat 普通模式启停脚本 vi tomcatServer.s ...
- 永久解决VSCode终端中文乱码问题
方法如下: 在VSCode中通过打开"文件"--"首选项"--"设置", 然后在"setting.json"中 添加以下 ...
- 割以咏志:Stoer–Wagner 算法求解全局最小割
全局最小割问题(Global Min-Cut Problem)是图论中的一个经典问题,旨在通过切割图中的边来划分图的顶点集合.具体来说,给定一个加权无向图 $ G = (V, E) $,图中每条边 $ ...
- cmd - windows操作系统命令提示符常用命令
mklink /j C:\Users\lin_0421\Desktop\note D:\note
- 【代码设计】C# 实现 AOP 面向切面编程
简单记录一下对AOP的认识,正文为3个部分 一.AOP由来 二.用DispatchProxy动态代理实现AOP 三.通过特性标记,处理多种不同执行前.执行后的逻辑编排 一.AOP 由来 IUserHe ...
- Laravel11 从0开发 Swoole-Reverb 扩展包(三) - reverb广播驱动使用流程
前情提要 我们第一节的时候,已经大致介绍reverb,他 是 Laravel 应用程序的第一方 WebSocket 服务器,可将客户端和服务器之间的实时通信直接带到您的指尖.开源且只需一个 Artis ...
- FastAPI安全防护指南:构建坚不可摧的参数处理体系
扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长 探索数千个预构建的 AI 应用,开启你的下一个伟大创意 第一章:输入验证体系 1.1 类型安全革命 from pydantic impor ...
- MySQL超大表删除数据过程
背景 笔者在公司负责公司的OpenAPI应用,估产生了调用审计的需求.对于存储这些AccessLog,虽然业界有很合适的架构和理论,奈何我司已成本优先,且作为toB的项目,调用量并不算特别大,每天也就 ...
- vue 判断某个时间小于当前时间
如下 new Date().getTime() 获取当前时间(毫秒) 我需要对比的时间为秒,所以需要除于1000 <div v-if="scope.row.created_at < ...