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

MIT 6.5940(二)

使用HAN Lab开发的工具进行模型压缩的研究。

Lecture 9 Knowledge Distillation

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可以匹配什么呢?
输出的logits、中间权重、中间特征、梯度、稀疏模式、相关性信息。
在这里插入图片描述
对其梯度的有效性的直观理解:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
KD for 目标检测:
匹配特征和特征图。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
数据增强也十分关键。
Dropout或者数据增强提升大神经网络的性能。
但是,Dropout或者数据增强会损害小神经网络的性能。
在这里插入图片描述
使用Dropout或者数据增强会损害小神经网络的性能的原因是:
小神经网络缺乏容量。
在这里插入图片描述

在这里插入图片描述
第一步:训练比较大块的网络。
第二步:保留中间部分,大块两边的随机选择一些,然后一起训练。
第三步:类似第二步,继续随机选择一些两边的。
在这里插入图片描述

Lecture 10 MCUNet and TinyML

在这里插入图片描述

在这里插入图片描述
memory size对于运行DNN来说,很小。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Tiny的图画得不错啊。
在这里插入图片描述
搜索空间的质量极大程度决定了搜索模型的性能。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

应用于Visual Wake Words(视觉唤醒词)、
Small-footprint Keyword Spotting、
time series/anomaly detection。
使用HAN Lab开发的工具进行模型压缩的研究。

Lecture 11 TinyEngine

在这里插入图片描述
循环重排序:
在这里插入图片描述
仿照CNN的计算:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
不同的线程可以在不同的CPU核心上运行,从而提高性能并允许并行性。
在这里插入图片描述

用Multithreading加速矩阵乘法的速度
使用OpenMP加速矩阵乘法的速度
在这里插入图片描述

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

CUDA编程的内存模型:

  • 不同的主机和设备地址空间
  • 数据可以在不同的地址空间之间移动
    在这里插入图片描述

在这里插入图片描述

也可以获得更高的吞吐量和更多的数据类型。

推理优化

在这里插入图片描述
Winograd Convolution不理解。
在这里插入图片描述

Lecture 12 Transformers and LLM

双方向RNN用于辨别任务(encoding)
单方向RNN用于生成任务(decoding)
在这里插入图片描述
RNN/LSTM的微博图

  • 难于建模长周期关系
  • 有限的并行训练

Transformer

在这里插入图片描述

Tokenization

在这里插入图片描述

Map tokens into embedding

One Hot Encoding: 将每个单词表示为一个向量,该向量中的值与词汇表中的单词一样多。一个向量中的每一列表示一个词汇表中的一个可能的单词。
在这里插入图片描述
Word Emdbedding: 将单词索引映射到通过查找表嵌入的连续单词。

Embeddings go through transformer blocks

在这里插入图片描述
多头注意力机制、前向传播网络、层归一化、残差连接。

多头注意力机制:
多头注意力机制每个头可以捕捉不同的语义信息。

前向传播网络:
自我注意模型是令牌之间的关系,但没有元素级的非线性。
添加一个前馈网络(FFN),以帮助进行功能建模。
在这里插入图片描述
层归一化
残差连接
Pre-Lorm设计现在更流行。因为它有更好的训练稳定性。

问题:注意和FFN不区分输入令牌的顺序(不像卷积)
集编码(坏的),而不是序列编码(好的)
解决方案:位置编码!
在这里插入图片描述
Encoder-only (BERT)
两个预训练方法:MLM、NSP
在这里插入图片描述
Decoder-only: Generative Pre-trained Transformer (GPT)
更大的模型可以运行在zero-shot/few-shot情况下。

Transformer设计变体

  • 绝对位置编码变为相对位置编码。
  • KVcache优化。
  • FFN变为GLU。
    在这里插入图片描述

相对位置编码通过影响注意力分数(增加偏差或修改查询和键)来提供相对距离信息,而不是影响V。

在这里插入图片描述
RoPE: 能够扩展上下文窗口。
在传统的Transformer模型中,位置编码通常被添加到输入嵌入中以保留序列中的位置信息。然而,随着输入序列长度的增加,这种简单的位置编码方式可能会遇到限制,特别是在处理非常长的文本时。RoPE通过将位置信息直接融入到注意力机制中解决了这个问题。

KV cache optimizations

在这里插入图片描述
使用MQA/GQA来降低KV cache的内存使用情况
(GQA挺常用)
在这里插入图片描述
门线性单元(Gated Linear Units, GLU):使用GLU来取代原始FFN。
在这里插入图片描述

LLMs

趋势就是LLM规模越来越大。

将Transformer扩展为few-shot learner(上下文学习)
在这里插入图片描述
GPT家族、OPT、LLaMA、Llama 2、Llama3、Mistral-7B。
扩大规模的方法:The Chinchilla Law。

  • 我们需要扩大模型的大小和数据的大小来进行训练,以获得最佳的训练计算和准确性的权衡。
    在这里插入图片描述

Lecture 13 LLM Deployment Techniques

Quantization;Pruning & Sparsity;LLM Serving Systems。
在这里插入图片描述

当我们将LLM扩展到6.7B以上时,激活中就会出现系统异常值。传统的CNN量化方法会破坏其精度。

  • 权重很容易量化,但激活由于异常值很难量化。
  • 幸运的是,异常值仍然存在于固定的通道中。
  • 将量化难度从激活迁移到权重,所以两者都很容易量化。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
为啥有一些是FP16量化,有一些是INT8量化。
在这里插入图片描述

在这里插入图片描述

我们发现权重并非同等重要,仅保留 1% 的显著权重通道不进行量化,就能够大幅降低困惑度。

AWQ:Activation-aware Weight Quantization

待详读论文和代码。

W8-A8-KV8用于云服务,而W4-A16-KV16用于边缘推断。

在这里插入图片描述

在这里插入图片描述
MoE没看懂
SpAtten: token pruning & head pruning
H2O: token pruning in KV cache

在这里插入图片描述

在这里插入图片描述
总结:LLM Serving Systems完全听不懂。

Lecture 14 LLM Post-training


有监督微调可以让LLM更佳适配客户。
在这里插入图片描述
DPO简化了基于RL的方法的两个模型为单个模型:
在这里插入图片描述
BitFit:仅微调偏差项。
TinyTL:关键原则-保持激活大小较小。1.降低分辨率2.避免倒置瓶颈。
Adapter:在变压器架构中插入可学习层。(每个任务只添加少量可训练参数,可以添加新任务而无需重新访问以前的任务。)
Prompt Tuning:从离散提示到连续提示。tune第一层
Prefix-Tuning:tune每一层。
在这里插入图片描述
LoRA Family:tune without adding any latency。
在这里插入图片描述
QLoRA是具有量化主干和分页优化器状态的LoRA。

Bit-Delta:
设置为系数×sign。
需要优化系数。
将权重增量量化到1位,而不会影响性能,微调缩放因子(每个张量)
在这里插入图片描述

Vision Languange Model

两种方式:

  • 交叉注意力,将视觉信息注入到LLM中(Flamingo风格)
  • 将视觉标记作为输入(PaLM-E风格)

Prompt Engineering

  • In-Context Learning (ICL)
  • Chain-of-Thought (CoT)
  • Retrieval Augmented Generation (RAG)

ICL:
在ICL中,用户通过在提示中提供输入-输出对实例,让模型“模仿”示例的模式来解决新问题

RAG:

  • 嵌入模型:文档被转换成向量,这使得系统更容易管理和比较大量文本数据。人们使用如MTEB这样的基准来评估嵌入模型。
  • 检索器:获取与查询最相关的文档向量。
  • 重排序器(可选):确定检索到的文档与当前问题的相关性,并为每个文档提供一个相关性评分。
  • 语言模型:根据检索器或重排序器提供的顶级文档以及原始问题,构建精确的答案。

Lecture 15 Long Context LLM

长上下文LLM
在这里插入图片描述

Lecture 16 Vision Transformer

在这里插入图片描述
窗口注意力机制
线性机制:

  • 替代Softmax Attention为Linear Attention
  • 加入depthwise convolution到FFN 来增强linear attention的区域特征信息提取能力。

Lecture 17 Efficient GAN, Video, and Point Cloud

在这里插入图片描述

Efficient GANs

GAN Compression:
使用Neural architecture search来做automated channel reduction。
在这里插入图片描述
Anycost GAN:
基于采样的:

  • 多分辨率
  • 多通道

Differentiable Augmentation for Data-Efficient GANs

Efficient Video Understanding

TSM

Efficient Point Cloud Understanding

PVCNN / SPVCNN
BEVFusion

Lecture 18 Diffusion Model

Lecture 19、20 Distributed Training

Lecture 21 On-Device Training and Transfer Learning

22 总结
23 量子机器学习

http://www.xdnf.cn/news/73549.html

相关文章:

  • 搜索二叉树的实现以及一些重点接口的实现思路(包含递归以及非递归版本的实现)
  • DSL(Domain Specific Language,领域特定语言)
  • Java 多态
  • [贪心_2] (含证明)将数组和减半的最少操作次数 | 最大数
  • 【C++类和数据抽象】类的作用域
  • 代码随想录第22天:回溯算法4
  • 基于STC89C52RC和8X8点阵屏、独立按键的小游戏《打砖块》
  • Math.round(),Math.ceil(),Math.floor(),Math.sqrt(),Math.pow(),Math.abs()等!
  • 淘宝店铺详情API接口返回数据说明
  • C语言main的参数;argc与argv
  • Python爬虫实战:获取海口最近2周天气数据,为出行做参考
  • POSIX多线程,解锁高性能编程
  • 深度学习3.3 线性回归的简洁实现
  • 代码实战保险花销预测
  • AXOP38802: 400nA 超低功耗通用双通道运算放大器
  • JumpServer多用户VNC桌面配置指南:实现多端口远程访问
  • KDD2024 | BCGNN解读
  • 读文献先读图:韦恩图怎么看?
  • 第 2 篇:初探时间序列 - 可视化与基本概念
  • 【源码】【Java并发】【AQS】从ReentrantLock、Semaphore、CutDownLunch、CyclicBarrier看AQS源码
  • JFrog Artifactory 制品库命令行操作指南
  • Java虚拟机之GC收集器对比解读
  • 多线程初阶(1.2)
  • 爬虫学习——Item封装数据与Item Pipeline处理数据
  • 垂直机械硬盘与叠瓦机械硬盘的区别及数据恢复难度
  • Kubeflow 快速入门实战(三) - Qwen2.5 微调全流程
  • 影刀RPA - 简单易用且功能强大的自动化工具
  • mybatis plus 多条件查询注意查询条件顺序
  • 2025年渗透测试面试题总结-拷打题库09(题目+回答)
  • LangChain4j-第二篇 |实现声明式 AI 服务 AiService:简化 AI 集成新范式