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

    文章

    3160

    浏览量

    48703
  • 机器学习
    +关注

    关注

    66

    文章

    8375

    浏览量

    132397
  • 深度学习
    +关注

    关注

    73

    文章

    5492

    浏览量

    120962

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

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

收藏 人收藏

    评论

    相关推荐

    Meta发布Llama 3.2量化模型

    近日,Meta在开源Llama 3.2的1B与3B模型后,再次为人工智能领域带来了新进展。10月24日,Meta正式推出了这两个模型量化版本,旨在进一步优化
    的头像 发表于 10-29 11:05 304次阅读

    理解LLM中的模型量化

    在本文中,我们将探讨一种广泛采用的技术,用于减小大型语言模型(LLM)的大小和计算需求,以便将这些模型部署到边缘设备上。这项技术称为模型量化。它使得人工智能
    的头像 发表于 10-25 11:26 173次阅读
    理解LLM中的<b class='flag-5'>模型</b><b class='flag-5'>量化</b>

    AI大模型的性能优化方法

    AI大模型的性能优化是一个复杂而关键的任务,涉及多个方面和策略。以下是一些主要的性能优化方法: 一、模型压缩与优化
    的头像 发表于 10-23 15:01 447次阅读

    快速部署Tensorflow和TFLITE模型在Jacinto7 Soc

    电子发烧友网站提供《快速部署Tensorflow和TFLITE模型在Jacinto7 Soc.pdf》资料免费下载
    发表于 09-27 11:41 0次下载
    快速部署<b class='flag-5'>Tensorflow</b>和TFLITE<b class='flag-5'>模型</b>在Jacinto7 Soc

    【飞凌嵌入式OK3576-C开发板体验】rkllm模型量化构建

    (model = modelpath) if ret != 0: print(\'Load model failed!\') exit(ret) 模型量化构建 # Build model ret
    发表于 08-27 22:50

    stm32mp135d的板子可不可以跑tensorflow模型啊?

    请问是stm32mp135d的板子可不可以跑tensorflow模型啊?
    发表于 07-18 06:49

    深度神经网络模型量化的基本方法

    深度神经网络模型量化是深度学习领域中的一种重要优化技术,旨在通过减少模型参数的精度(即从高精度浮点数如32位浮点数FP32降低到低精度整数如8位整数INT8或更低)来降低
    的头像 发表于 07-15 11:26 594次阅读

    深度学习模型量化方法

    深度学习模型量化是一种重要的模型量化技术,旨在通过减少网络参数的比特宽度来减小模型大小和加速推理过程,同时尽量保持
    的头像 发表于 07-15 11:01 452次阅读
    深度学习<b class='flag-5'>模型</b><b class='flag-5'>量化</b>方法

    使用TensorFlow进行神经网络模型更新

    使用TensorFlow进行神经网络模型的更新是一个涉及多个步骤的过程,包括模型定义、训练、评估以及根据新数据或需求进行模型微调(Fine-tuning)或重新训练。下面我将详细阐述这
    的头像 发表于 07-12 11:51 342次阅读

    请问ESP32如何运行TensorFlow模型

    请问ESP32如何运行TensorFlow模型
    发表于 07-09 07:30

    tensorflow简单的模型训练

    在本文中,我们将详细介绍如何使用TensorFlow进行简单的模型训练。TensorFlow是一个开源的机器学习库,广泛用于各种机器学习任务,包括图像识别、自然语言处理等。我们将从安装
    的头像 发表于 07-05 09:38 501次阅读

    keras模型tensorflow session

    在这篇文章中,我们将讨论如何将Keras模型转换为TensorFlow session。 Keras和TensorFlow简介 Keras是一个高级神经网络API,它提供了一种简单、快速的方式来构建
    的头像 发表于 07-05 09:36 456次阅读

    如何使用Tensorflow保存或加载模型

    TensorFlow是一个广泛使用的开源机器学习库,它提供了丰富的API来构建和训练各种深度学习模型。在模型训练完成后,保存模型以便将来使用或部署是一项常见的需求。同样,加载已保存的
    的头像 发表于 07-04 13:07 1294次阅读

    如何使用TensorFlow构建机器学习模型

    在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单的机器学习模型
    的头像 发表于 01-08 09:25 907次阅读
    如何使用<b class='flag-5'>TensorFlow</b>构建机器学习<b class='flag-5'>模型</b>

    解读大模型FP量化的解决方案

    在 LLaMA, BERT 以及 ViTs 模型上,4-bit 量化皆取得了远超 SOTA 的结果。特别是,这篇文章展示了 4-bit 量化的 LLaMA-13B 模型,在零样本推理任
    发表于 11-24 11:15 887次阅读
    解读大<b class='flag-5'>模型</b>FP<b class='flag-5'>量化</b>的解决方案