【论文解析】HAQ: Hardware-Aware Automated Quantization With Mixed Precision

devtools/2024/11/27 0:11:21/

作者及发刊详情

@inproceedings{haq,
author = {Wang, Kuan and Liu, Zhijian and Lin, Yujun and Lin, Ji and Han, Song},
title = {HAQ: Hardware-Aware Automated Quantization With Mixed Precision},
booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2019}
}

摘要

Motivation

  • DNN硬件加速器开始支持混合精度(1-8位)进一步提高计算效率,这对找到每一层的最佳位宽提出了一个巨大的挑战:它需要领域专家探索巨大的设计空间,在精度,延迟,能耗和模型大小之间权衡。
  • 当前有很多专用的神经网络专用加速器,但没有为这些加速器设计专用的神经网络优化方法。传统的量化算法忽视了不同的硬件架构,网络所有层都采用一种量化方式。

Contribution

1)自动化

提出了自动量化框架,无需领域专家或基于规则的启发式方法,将人力从探索位宽选择中解放出来

2)硬件感知

该框架在循环指令流中考虑了硬件架构,不依赖中间信号(proxy signal),可以直接减少延迟、能耗和存储

3)专用化

为不同的硬件架构都提出专门的量化策略,完全为目标硬件架构定制,以优化延迟和能耗。

4)设计视角

将计算和访存都考虑在内,为不同的硬件架构提供了不同的量化策略解释

Approach

引入了基于硬件感知的自动量化(HAQ)框架,该框架利用强化学习来自动确定量化策略,并在设计回路中获取硬件加速器的反馈。而不是依赖于代理信号,如FLOPS和模型大小,该文使用一个硬件模拟器来生成直接的反馈信号(延迟和能耗)到RL代理。

Experiment

实验验证平台:

选用模型:

训练数据集:

推理任务

工具:

实验评估

在这里插入图片描述

结论

框架有效地减少了1.4-1.95×的延迟和1.9×的能耗,而accu的损失可以忽略不计

参考文献

MIT开源开源项目链接

参考链接:
机器之心@知乎:寻找最佳的神经网络架构,韩松组两篇论文解读
KGback:人工智能和机器学习入门


http://www.ppmy.cn/devtools/137254.html

相关文章

基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功

基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器,2FSK 的两个频率为:fI15KHz,f23KHz,波特率为 1500 bps,比特0映射为f 载波,比特1映射为 载波。 1&#xff09…

大学课程项目中的记忆深刻 Bug —— 一次意外的数组越界

开头 在编程的世界里,每一行代码都像是一个小小的宇宙,承载着开发者的心血与智慧。然而,即便是最精心编写的代码,也难免会遇到那些突如其来的 bug,它们就像是潜伏在暗处的小怪兽,时不时跳出来捣乱。 在我…

云服务器部署WebSocket项目

WebSocket是一种在单个TCP连接上进行全双工通信的协议,其设计的目的是在Web浏览器和Web服务器之间进行实时通信(实时Web) WebSocket协议的优点包括: 1. 更高效的网络利用率:与HTTP相比,WebSocket的握手只…

Web开发:ABP框架7——前端请求头的读取

一、前端请求头的读取 1.注入 高层代码使用注入,IHttpContextAccessor 是 ASP.NET Core 中的一个接口,用于在服务层中获取与当前 HTTP 请求相关的信息,比如请求的头部、Cookie、用户身份等。 private readonly IHttpContextAccessor _http…

性能监控利器:Ubuntu 22.04 上的 Zabbix 安装与配置指南

简介 今天我们来聊聊如何在 Ubuntu 22.04 上安装和配置 Zabbix。我们会用到 PostgreSQL 作为数据库后端,Nginx 作为 Web 服务器,并用 Let’s Encrypt SSL 证书来保驾护航。 什么是 Zabbix? Zabbix 是一个开源的网络监控和管理解决方案&…

【人工智能】Python与Scikit-learn的模型选择与调参:用GridSearchCV和RandomizedSearchCV提升模型性能

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在机器学习建模过程中,模型的表现往往取决于参数的选择与优化。Scikit-learn提供了便捷的工具GridSearchCV和RandomizedSearchCV,帮助我们在参数空间中搜索最佳组合以提升模型表现。本文将从理论和实践两个角度…

计算机网络——第3章 数据链路层(自学笔记)

本文参考【王道计算机考研 计算机网络】 数据链路层的功能 主要任务:实现帧在一段链路上或在一个网络中进行传输。 基本原则:封装成帧、透明传输和差错检测。 信道:点对点信号和广播信道。 数据链路层所处地位 数据进入路由器后&#x…

‌Kotlin中的?.和!!主要区别

目录 1、?.和!!介绍 2、使用场景和最佳实践 3、代码示例和解释 1、?.和!!介绍 ‌Kotlin中的?.和!!主要区别在于它们对空指针的处理方式。‌ ‌?.(安全调用操作符)‌:当变量可能为null时,使用?.可以安全地调用其方法或属性…