CS336 Lab 1 实验笔记

本文记录了 CS336 Lab 1 的实验笔记,整个 Lab 的工作量很大,主要内容包括从头实现 BPE Tokenizer、一系列算子和基于 Transformer 的语言模型,并在此基础上进行大量的调优和消融实验。做完这个 Lab 可以对分词器的实现细节有高细粒度的理解,也能积攒对 Transformer 模型各组件的直观认识。 ...

发表于10月24日 · 更新于12月28日 · 共4541字

CS336 学习笔记之第二讲:PyTorch 与资源计算

本文是 CS336 系列笔记的第二讲,PyTorch 与资源计算。本讲比较简单,从两个问题出发,讨论如何计算计算量,并顺带讲一些 PyTorch 的入门概念。本讲的重点不在于 PyTorch 基础,而在于培养“资源计算”的思维模式。 ...

发表于10月19日 · 更新于10月19日 · 共1044字

CS336 学习笔记之第一讲:总览与分词器

本文是 CS336 第一讲的学习笔记,主要介绍开设这门课程的背景和动机,并对课程主要内容做了概览。还介绍了不同的分词器基本原理及其优缺点。 引入 为什么要学习这门课程 现象:研究人员与底层技术越来越远。八年前,他们需要自己实现和训练模型;六年前,他们需要下载一个模型,并进行微调;现如今,他们仅仅修改模型的提示词。 ...

发表于10月19日 · 更新于10月19日 · 共2802字

MIT 6.5940 EfficientML Lab 2 实验笔记

本文为 EfficientML Lab 2 实验笔记,包含 K-Means 量化、K-Means QAT、线性量化等内容,难度不大,内容丰富。 Part 1: K-Means Quantization Qustion 1 第一个问题是实现 K-means 量化的核心算法,其中 K-means 本身是调库实现的。 ...

发表于2月25日 · 更新于2月25日 · 共1474字

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字