MIT 6.5940 EfficientML 第六讲学习笔记

本文介绍了训练后量化(PTQ)和量化感知训练(QAT)技术,PTQ 通过 Per-Tensor/Channel/Vector 等不同粒度划分量化参数,结合动态范围裁剪(校准集统计或 KL 散度优化)和 AdaRound 学习式舍入来平衡精度与效率;QAT 则在前向传播中模拟量化并利用直通估计器(STE)绕过梯度断层,而二元/三元量化通过引入可学习缩放因子减少极低比特(1-2bit)下的精度损失,在压缩模型的同时实现硬件加速与内存优化。 ...

发表于2月17日 · 更新于2月21日 · 共1929字

百度飞桨「启航计划」小结——CINN后端Pass改造

在过去八周时间里,我参加了由飞桨开源社区组织的 飞桨启航计划集训营(第四期),认领并完成 【开源任务】CINN编译器后端Pass改造 系列任务。趁最近在准备期末考试,除了复习干啥都有意思,好好总结一下在启航里的收获。(逃 🤐 Why 启航? 为什么选择了启航计划?在回答这个问题之前,先介绍一下背景:当时学习了 CMU 10414 DLSys 课程,准备学习 TVM 或者 MLIR,但相关基础欠缺,一直苦于找不到切入口。在互联网上🏄‍♀️的时候无意中发现了启航计划,了解到其对新手相当友好:没有面试筛选、任务比较简单、有专门答疑研发老师,当时第三期正在进行,遂订阅了第三期的 ISSUE,蹲第四期的活动。 ...

发表于1月8日 · 更新于1月8日 · 共3199字

MIT 6.5940 EfficientML Lab 1 实验笔记

实验准备 Python 环境 需要用到如下 Python 环境: PyTorch GPU 版本 jupyter notebook tqdm matplotlib torchprofile 数据集准备 Lab 1 中用到了 CIFAR-10 数据集,可以使用 https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 直接下载,并将整个 cifar-10-batched-py 文件夹解压到 data/cifar10 文件夹内。 Part 1: Fine-grained Pruning Question 1 除最后一层分类头外,其它层均服从均值为 0 的无偏正态分布,这意味着占很大比例的参数是可以被移除的,这为模型压缩留下了很大的空间。 ...

发表于11月27日 · 更新于2月12日 · 共2209字

MIT 6.5940 EfficientML 第五讲学习笔记

本讲开始介绍量化技术,首先介绍各种数据表示格式,然后介绍了两种量化技术:K-means和线性量化,最后提到了模型压缩的流水线。 数值数据类型 课程第一部分介绍了整型、定点小数、浮点数的数据表示格式,属于计算机组成原理的基本知识,此处不再赘述。 ...

发表于11月18日 · 更新于2月17日 · 共1672字

如何在VSCode中“优雅”地配置CMake —— 以PaddlePaddle为例

通过本文,你将了解如何在 VSCode 中配置 CMake 项目,包括但不限于语法高亮、代码跳转、CMake 配置、构建、测试。 环境说明 本文使用 WSL Ubuntu 22.04 作为演示环境,VSCode 版本为 1.95.2,使用项目为 PaddlePaddle。 ...

发表于11月15日 · 更新于11月17日 · 共1949字

MIT 6.824 Distributed Systems Spring 2023 第三讲学习笔记

MIT 6.824 Distributed Systems 第三讲学习笔记,简单介绍了存储系统和一致性,主要介绍了 GFS 中的文件读写流程。 存储系统概述 存储系统在分布式系统中相当重要:如果能够建立一个可靠的存储系统,可以讲其它应用构建为无状态的,而在存储系统中持久存储状态,这能够大量简化应用设计。这种情况下,应用即使崩溃也可以迅速重启,并从存储系统中读取状态进行恢复。 ...

发表于11月13日 · 更新于11月17日 · 共1778字

MIT 6.5940 EfficientML 第四讲学习笔记

本讲延续上一讲继续介绍了两种确定剪枝比例的算法:灵敏度分析和强化学习。此外还介绍了为稀疏网络提供支持的硬件加速器,包括 EIE、NVIDIA Tensor Core、TorchSparse 等。 ...

发表于11月11日 · 更新于11月12日 · 共2293字

MIT 6.824 Distributed Systems Spring 2023 第二讲学习笔记

MIT 6.824 Distributed Systems 第二讲学习笔记,包括 Go 语言和并发编程的简单介绍,以及对 RPC 和故障情况下的 RPC 语义的说明。 Lecture 2: RPC and Threads 为什么选择 Go 语言 对于线程和 RPC 的良好支持 拥有垃圾回收机制 类型安全 简单 可以编译 并行编程入门 在 Go 中,线程被称为 go routine,线程具有独立的 PC、栈和寄存器。线程之间共享内存地址,处于同一片内存空间内。 ...

发表于11月10日 · 更新于11月10日 · 共842字

MIT 6.5940 EfficientML 第三讲学习笔记

MIT 6.5940 EfficientML 第三讲学习笔记,主要介绍剪枝的定义、效果和粗细程度,并详细介绍了多种剪枝标准。 Lecture 3: Pruning and sparsity 剪枝和稀疏性 剪枝的动机 在上一讲提到,内存操作的代价相当昂贵,因此为了加速模型的运行,一个思路就是减少模型中一切内存的占用,包括减小模型大小、减小激活层大小和数量。 ...

发表于11月9日 · 更新于11月10日 · 共1622字

MIT 6.5940 EfficientML 第二讲学习笔记

如无另外说明,本文图片截取自 EfficientML 课程幻灯片。 Lecture 2: Basics of neural networks 神经网络基础 神经网络 基本术语 如下图所示,我们使用术语 Synapses(突触?)、权重、参数来指代网络中的参数,使用术语神经元、特征、激活层来指代网络中每一层的计算结果。 模型的宽度指的是隐藏层的维度,对于相同的参数量,宽而浅的模型相比窄而深的模型计算效率更高,因为其核函数调用次数更少,并且能够充分进行并行计算。然而后者在准确率上往往表现得更好,这需要进行折中。 ...

发表于11月5日 · 更新于11月10日 · 共952字