当前位置: 首页 > article >正文

MIT 6.5940(一)

记录了Lecture 1~8

Lecture 1 Introduction

TinyML and Efficient Deep Learning Computing

在这里插入图片描述

摘要

AI systems need to continually adapt to new data collected locally

  • 在设备学习:better privacy, lower cost, customization, life-long learning
  • Training is more expensive than inference, hard to fit edge hardware (limited memory)

MCUNetV3 enables efficient on-device training on microcontrollers

Diffusion model、GAN compression。

Lite Trnsformer reduces the model size with pruning and quantization

Large language models show emergent behaviors:

  • zero/few learning
  • chain-of-thought

SpAtten accelerates language models by pruning redundant tokens

LLM Quantization

TihyChat

在这里插入图片描述
PPT里面画的很多图、表都挺不错的。
在这里插入图片描述
Prerequisites:
6.191 Computation Structures and 6.390 Intro to Machine Learning.

在这里插入图片描述

Lecture 2 Basics

在这里插入图片描述
宽浅的神经网络运算效率较低,而深细的神经网络运算效率较高。

Popolar Neural Network Layers

全连接层(Linear Layer)
卷积层:使用权重共享,时间换空间。
在这里插入图片描述
笔记本(似乎是韩松手上的那个遥控器)有一个聚焦功能,贼好用。

Grouped Convolution Layer

组卷积在权重共享机制的基础上,沿着通道的维度进行分组。
在这里插入图片描述

Normalization Layer

归一化特征可以使优化过程更快。
因为归一化常常会将一个通道上的特征图作为最小单位,所以在下面画的归一化的四张图上,将H和W画到一起了。
在这里插入图片描述

网络复杂度指标

latency指的是单个执行器执行代码所需要的时间,而Throughput指的是在某个机器上执行代码所需要的时间。
latency往往是MCU上关心的指标,而Throughput则是数据中心所关心的指标。
在这里插入图片描述
在这里插入图片描述

DRAM内存访问的能量消耗显著高于其他操作,大约是整数加法的200倍。
在这里插入图片描述

在这里插入图片描述
模型大小表示给定的神经网络的权重的存储。
在这里插入图片描述

激活是CNN推理中的内存瓶颈,而不是参数数量。
在这里插入图片描述

MobileNetV2 的内存分布不平衡
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Lecture 3 Pruning and Sparsity Part I

Pruing can release the memory using so that the energy can be saved.
Pruing make neural network smaller by removing synapses and neurons.

随着剪枝率的提升,网络的准确率下降
在这里插入图片描述
加入finetuning,中间那些靠近0的权重的值有所恢复,并且网络的accuracy有所回升。
在这里插入图片描述
如果是迭代剪枝,网络的accuracy可以恢复得很高,并且压缩率更高。
在这里插入图片描述
在这里插入图片描述
修剪 NeuralTalk LSTM 并不会损害图像字幕的质量。

近年来剪枝和稀疏神经网络的出版物在2023年达到顶峰。
在这里插入图片描述

在这里插入图片描述

决定剪枝的颗粒度
在这里插入图片描述
内核级别剪枝并没有减少滤波器的数量;
而通道级别剪枝会减少输入的通道个数,从而减少上一层的滤波器。
在这里插入图片描述

在这里插入图片描述
prune那些scaling factor值小的。
在这里插入图片描述
基于二阶的剪枝。
一阶、二阶也不见得哪个会好很多,里面的效果往往取决于数据集和网络结构。
在这里插入图片描述

在这里插入图片描述
prune里面APoZ最大的:
在这里插入图片描述
最小化pruned matric和unpruned matric。
在这里插入图片描述

  • 最小化beta,这样就可以将最小beta的channel移除了,图中的实例X有四列,所以有4个beta。
  • 固定W,求beta用于通道选择;固定beta,求W用于最小化重建损失。
    在这里插入图片描述
    年度论文数量的折线图统计方法。

Lecture 4 Pruning IV

Part 1 Prunig ratio

AMC效果好过uniform scaling pruning。
分析每一层的敏感性。(result are before retrain)
在这里插入图片描述
这种敏感性分析忽略了层与层之间的交互。
通常,这个过程依赖于人类的专业知识、反复试验和错误。
在这里插入图片描述
在这里插入图片描述

设置一个步长 Δ R \Delta R ΔR
在这里插入图片描述

Section 2: Fine-tuning / Training

迭代剪枝:第一次剪枝30%、第二次50%、第三次70%,每次剪枝后都会train一下weight。

System Support for Sparsity

在这里插入图片描述
(W4A16表示权重被量化为4位,即每个权重用4位二进制数表示;A16表示激活保持16位精度。)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Lecture 5 Quantization Part I

为什么需要quantization?
少位数的操作更便宜。
在这里插入图片描述
数值表示:FP32、FP16、FP4、Int4。
在这里插入图片描述
四位的浮点数表示,就是乘 2 − 4 2^{-4} 24
在这里插入图片描述
浮点数表示:
在这里插入图片描述
如果要表示0,则强制Fraction为0(0就表示为0):
在这里插入图片描述

在这里插入图片描述
Exponent width ->Range;Fraction Width->Precision。
蓝色是Exponent,黄色是Fraction:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

量化是将输入从连续的或其他方面较大的值集约束到离散集的过程。

在这里插入图片描述

K-Means-based Quantization

在这里插入图片描述

在这里插入图片描述
剪枝和quantization可以一起使用:
在这里插入图片描述
先剪枝还是先量化呢?

  • 先剪枝再量化。

在这里插入图片描述
retain后,central会有小小的偏移:

在这里插入图片描述

Linear Quantization

列出来的等式见下图:
在这里插入图片描述
其中, q max ⁡ q_{\max } qmax q min ⁡ q_{\min } qmin r max ⁡ r_{\max } rmax r max ⁡ r_{\max } rmax已知,则可以求S和Z。
进一步的,因为权重的分布是沿Y轴对称的,所以可以假设 Z W Z_{W } ZW=0
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Lecture 6 Quantization Part II

Post-Training Quantization、Quantization-Aware Training
Per-Tensor Quantization:
在这里插入图片描述
Per-channel Quantization:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Post-Training Quantization

在这里插入图片描述
直接戒掉两边的数据
在这里插入图片描述
通过在训练过的FP32模型上运行几批“校准”批样品
使用KL散度来约束。(下面这个图片并没有看懂)
在这里插入图片描述
使用MSE来约束。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Quantization-Aware Training

在这里插入图片描述
计算梯度的时候会省略掉第二项。
在这里插入图片描述
Quantization-Aware Training效果要好于Post-Train Quantization。

Binary/Ternary Quantization

Ninarization有两种方法:直接二值化、随机二值化。

只二值化权重效果还是不错的:
在这里插入图片描述

在这里插入图片描述

Ternary Weight Networks (TWN)

在这里插入图片描述
当正的值和负的值表示得太一样时,则称之为Trained Ternary Quantization:
在这里插入图片描述

Mixed-Precision Quantization
在这里插入图片描述

Lecture 7 Neural Architecture Search Part I

Primitive Operations,基本操作

Fully-connection、
Convolution layer、
Groped Convolution layer、
Depthwise convolution layer、
1*1 convolution layer。

Classic Building Blocks

相比原来的MACs下降了8.5*
在这里插入图片描述
相比原来的Params下降了8.5*
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Peak activation 是指在整个前向传播过程中,任何时间点上激活值占用的最大内存。 这通常发生在某些层(如卷积层、全连接层)处理大量输入数据时。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

What is NAS?

巨大的设计空间,手工设计是不可扩展的。因此,需要NAS。

NAS的目标是在搜索空间中找到最佳的神经网络结构,最大化感兴趣的目标(例如,准确性、效率等)。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Network-level search space: depth dimension

Network-level search space: resolution dimension

Network-level search space: width dimension

Network-level search space: kernel size dimension

Network-level search space: topology connection

Design the Search Space

对于NAS,设计搜索空间十分重要。

在这里插入图片描述

在内存限制下,良好的设计空间有可能实现高的浮点运算次数(FLOPs)。

在这里插入图片描述
搜索策略:
网格搜索、随机搜索。
在这里插入图片描述
搜索策略:强化学习(使用RNN作为控制器)
在这里插入图片描述
搜索策略:梯度下降
在这里插入图片描述
新加一个latency损失项,从而实现对latency的约束。
在这里插入图片描述
搜索策略:
进化搜索
在这里插入图片描述
进化搜索的突变:
在这里插入图片描述
进化搜索的交叉:
在这里插入图片描述

Lecture 8 Neural Architecture Search Part II

在这里插入图片描述

在这里插入图片描述
Performance Estimation Strategy:

  • train from scratch
  • inherit weight
  • hypernetwork
    在这里插入图片描述
    超网络:
  • 在每个训练阶段,一个随机模型架构在搜索空间中采样。
  • 超网络基于模型架构生成权重。
  • 使用梯度下降来更新超网络的权重。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
实际上,MACs != 实际硬件效率。
在这里插入图片描述
通过读取时延查阅表上的数据来读取设备上的时延:
在这里插入图片描述
逐层的预测可以预测得挺准的。
在这里插入图片描述
但问题是,逐层的时延预测不代表整个网络的时延预测,因为网络在GPU上运行有时会出现算子融合的情况,这样两个算子融为一个,则预测的时延会多于实际在设备上运行的时延。

在这里插入图片描述

在这里插入图片描述
神经架构和加速器架构设计对于实现特化和加速都很重要。
在这里插入图片描述

卷积循环巢可分为时间映射和空间并行性两部分

在这里插入图片描述
Once-for-All for 点云理解、GAN、姿态估计、on-device汽车、行人检测、凝视估计、分割、quantum AI。


http://www.kler.cn/a/538068.html

相关文章:

  • Python截图轻量化工具
  • 使用 POI-TL 和 JFreeChart 动态生成 Word 报告
  • 十二、Docker Compose 部署 SpringCloudAlibaba 微服务
  • U3D支持webgpu阅读
  • DeepSeek-R1 32B Windows+docker本地部署
  • Hive的基本查询
  • 用JavaScript实现异步锁
  • aio-pika 快速上手(Python 异步 RabbitMQ 客户端)
  • 模型 反脆弱
  • 前端开发中的主题切换:如何实现灵活的主题变化?
  • 半导体制造工艺讲解
  • sqli-lab靶场学习(五)——Less15-17(post方法盲注、修改密码)
  • 从DeepSeek上线亚马逊云科技,看大模型争霸背后的隐形战场
  • 青少年编程与数学 02-008 Pyhon语言编程基础 23课题、数据库操作
  • 蓝桥杯之c++入门(六)【string(practice)】
  • NFT Insider #168:The Sandbox 推出新春{金蛇礼服}套装;胖企鹅合作 LINE Minini
  • java基础3(黑马)
  • 2014 年中央、国家机关公务员录用考试 《申论》(市地以下)真题详解
  • 人工智能:从概念到未来
  • lvglllllllllll
  • GRU 和 LSTM 公式推导与矩阵变换过程图解
  • 2024 JAVA面试题
  • 【C++入门讲解】
  • uniapp商城之购物车模块
  • Vmware 与 Device/Credential Guard不兼容解决方法
  • CSP晋级组比赛生成文件夹与文件通用代码Python