0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow模型优化:模型量化

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2021-02-04 15:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 模型量化需求

为了满足各种 AI 应用对检测精度的要求,深度神经网络结构的宽度、层数、深度以及各类参数等数量急速上升,导致深度学习模型占用了更大的存储空间,需要更长的推理时延,不利于工业化部署;目前的模型都运行在 CPUGPUFPGAASIC 等四类芯片上,芯片的算力有限;对于边缘设备上的芯片而言,在存储、内存、功耗及时延性方面有许多限制,推理效率尤其重要。

作为通用的深度学习优化的手段之一,模型量化将深度学习模型量化为更小的定点模型和更快的推理速度,而且几乎不会有精度损失,其适用于绝大多数模型和使用场景。此外,模型量化解锁了定点硬件(Fixed-point hardware) 和下一代硬件加速器的处理能力,能够实现相同时延的网络模型推理功能,硬件价格只有原来的几十分之一,尤其是 FPGA,用硬件电路去实现网络推理功能,时延是各类芯片中最低的。

TensorFlow 模型优化工具包是一套能够优化机器学习模型以便于部署和执行的工具。该工具包用途很多,其中包括支持用于以下方面的技术:

通过模型量化等方式降低云和边缘设备(例如移动设备和 IoT 设备)的延迟时间和推断成本。将优化后的模型部署到边缘设备,这些设备在处理、内存、耗电量、网络连接和模型存储空间方面存在限制。在现有硬件或新的专用加速器上执行模型并进行优化。

根据您的任务选择模型和优化工具:

利用现成模型提高性能在很多情况下,预先优化的模型可以提高应用的效率。

2. 模型量化过程

大家都知道模型是有权重 (w) 和偏置 (b) 组成,其中 w,b 都是以 float32 存储的,float32 在计算机中存储时占 32bit,int8 在计算机中存储时占 8bit;模型量化就是用 int8 等更少位数的数据类型来代替 float32 表示模型的权重 (w) 和偏置 (b) 的过程,从而达到减少模型尺寸大小、减少模型内存消耗及加快模型推理速度等目标。

模型量化以损失推理精度为代价,将网络中连续取值或离散取值的浮点型参数(权重 w 和输入 x)线性映射为定点近似 (int8/uint8) 的离散值,取代原有的 float32 格式数据,同时保持输入输出为浮点型,从而达到减少模型尺寸大小、减少模型内存消耗及加快模型推理速度等目标。定点量化近似表示卷积和反卷积如下图 所示,左边是原始权重 float32 分布,右边是原始权重 float32 经过量化后又反量化后权重分布。

32703f02-5408-11eb-8b86-12bb97331649.jpg

32a0429c-5408-11eb-8b86-12bb97331649.jpg

图 2.1 Int8 量化近似表示卷积

33082e66-5408-11eb-8b86-12bb97331649.jpg

3341b7da-5408-11eb-8b86-12bb97331649.jpg

图 2.2 Int8 量化近似表示反卷积

3. 模型量化好处

减小模型尺寸,如 8 位整型量化可减少 75% 的模型大小;

减少存储空间,在边缘侧存储空间不足时更具有意义;

减少内存耗用,更小的模型大小意味着不需要更多的内存;

加快推理速度,访问一次 32 位浮点型可以访问四次 int8 整型,整型运算比浮点型运算更快;CPU 用 int8 计算的速度更快

减少设备功耗,内存耗用少了推理速度快了自然减少了设备功耗;

支持微处理器,有些微处理器属于 8 位的,低功耗运行浮点运算速度慢,需要进行 8bit 量化。

某些硬件加速器如 DSP/NPU 只支持 int8

4. 模型量化原理

模型前向推理过程中所有的计算都可以简化为 x= w*x +b; x 是输入,也叫作 FeatureMap,w 是权重,b 是偏置;实际过程中 b 对模型的推理结果影响不大,一般丢弃。原本 w,x 是 float32,现在使用 int8 来表示为 qw,qx;模型量化的原理就是定点 (qw qx) 与浮点 (w,x),建立了一种有效的数据映射关系.。不仅仅量化权重 W ,输入 X 也要量化;详解如下:

R 表示真实的浮点值(w 或者 x),

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3811

    浏览量

    52257
  • 机器学习
    +关注

    关注

    67

    文章

    8561

    浏览量

    137208
  • 深度学习
    +关注

    关注

    73

    文章

    5604

    浏览量

    124610

原文标题:社区分享 | TensorFlow 模型优化:模型量化

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    量化模型在 iMX93 NPU 上运行,但输出不正确怎么解决

    我正在使用 MobileNet 的自定义实现,旨在对 spark 进行二进制分类。转换为 tflite 并将其量化为 int8 后,模型按预期在 NPU 上运行,但输出没有意义。该模型量化
    发表于 03-18 07:53

    在 NPU 上运行了 eIQ TensorFlow Lite 示例模型报错

    1.16.0。我们使用 eIQ Toolkit 将 TensorFlow Lite 模型 .tflite 转换为 NPU 优化模型,但在执行过程中,发生以下错误: 为了排除故障,
    发表于 03-18 06:52

    AWQ/GPTQ量化模型加载与显存优化实战

    大语言模型(LLM)推理显存需求呈指数级增长,70B参数的模型需要约140GB显存(FP16),远超单卡GPU容量。量化技术通过降低模型参数精度(从FP16到INT4),在精度损失最小
    的头像 发表于 03-13 09:45 568次阅读

    微电网经济调度理论:成本最小化与效益最大化的优化模型

    与效益最大化的具体量化指标;约束条件是模型的运行底线,确保调度方案的可行性与安全性;优化变量是模型的调控对象,决定了调度方案的实施路径。
    的头像 发表于 03-12 11:05 210次阅读
    微电网经济调度理论:成本最小化与效益最大化的<b class='flag-5'>优化</b><b class='flag-5'>模型</b>

    安宝特产品丨3DE-实体模型简化-快捷简化和表面收缩

    CAD 实体模型如何轻量化?快捷简化与表面收缩助力版权保护和营销素材制作成本优化
    的头像 发表于 12-01 13:28 378次阅读
    安宝特产品丨3DE-实体<b class='flag-5'>模型</b>简化-快捷简化和表面收缩

    如何利用NPU与模型压缩技术优化边缘AI

    ,AI 模型体积庞大,部署在 NPU上常常面临困难,这凸显了模型压缩技术的重要性。要实现高效的实时边缘 AI,需要深入探讨NPU 与模型压缩技术(如量化与投影)如何协同工作。
    的头像 发表于 11-07 15:26 1404次阅读
    如何利用NPU与<b class='flag-5'>模型</b>压缩技术<b class='flag-5'>优化</b>边缘AI

    如何精准驱动菜品识别模型--基于米尔瑞芯微RK3576边缘计算盒

    程 该工具链为AI模型在边缘端的部署提供了全流程支持: 1. 模型转换 支持多框架输入: 可直接加载PyTorch(.pt)、TensorFlow(.pb)、ONNX(.onnx)等格式的模型
    发表于 10-31 21:19

    西格电力储能容量配置优化模型与工具方法

    科学的储能容量配置,核心是 “以项目目标为导向,结合电源特性、负荷需求、经济约束,通过模型量化计算 + 工具验证,找到‘技术达标、成本最优’的最小合理容量”。本文拆解容量配置的核心影响因素、主流优化
    的头像 发表于 10-24 10:04 801次阅读
    西格电力储能容量配置<b class='flag-5'>优化</b><b class='flag-5'>模型</b>与工具方法

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识别的神经网络
    发表于 10-22 07:03

    如何进行YOLO模型转换?

    我目前使用的转模型代码如下 from ultralytics import YOLOimport cv2import timeimport nncaseimport# 加载预训练的YOLO模型
    发表于 08-14 06:03

    无法在NPU上推理OpenVINO™优化的 TinyLlama 模型怎么解决?

    在 NPU 上推断 OpenVINO™优化的 TinyLlama 模型。 遇到的错误: get_shape was called on a descriptor::Tensor with dynamic shape
    发表于 07-11 06:58

    无法将Tensorflow Lite模型转换为OpenVINO™格式怎么处理?

    Tensorflow Lite 模型转换为 OpenVINO™ 格式。 遇到的错误: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostP
    发表于 06-25 08:27

    使用 NPU 插件对量化的 Llama 3.1 8b 模型进行推理时出现“从 __Int64 转换为无符号 int 的错误”,怎么解决?

    安装了 OpenVINO™ GenAI 2024.4。 使用以下命令量化 Llama 3.1 8B 模型: optimum-cli export openvino -m meta-llama
    发表于 06-25 07:20

    瑞芯微模型量化文件构建

    模型是一张图片输入时,量化文件如上图所示。但是我现在想量化deepprivacy人脸匿名模型,他的输入是四个输入。该模型训练时数据集只标注
    发表于 06-13 09:07

    您的模型诊断专家MI:助力把好模型质量关

    Model Inspector是一款专门针对汽车、航空、轨交等行业的静态模型检查工具,可以对模型进行自动化、批量化建模规范和复杂度量的检查,提升用户模型质量。
    的头像 发表于 06-11 16:57 1081次阅读
    您的<b class='flag-5'>模型</b>诊断专家MI:助力把好<b class='flag-5'>模型</b>质量关