ECE408 Lecture 16 Parallel Scan
这次回顾ECE408 Lecture 16,这次介绍了Parallel Scan。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
Inclusive Scan定义定义:
扫描操作采用二元结合运算符$\oplus$和$n$个元素的数组:
\left[x_0, x_1, \ldots, x_{n-1}\right],并返回前缀和数组:
\left[x_0,\left(x_0 \oplus x_1\right), \ldots,\left(x_0 \oplus x_1 \oplus \ldots \oplus x_{ {n}-1}\right)\right].例子:
如果$\oplus$是加法,那么在数组$[3,1,7,0,4,1,6,3]$上执行scan操作的结果会返回$[3,4,11,11,15,16,22,25]$。
Scan应用例子
假设我们有一块$100 ...
ECE408 Lecture 15 Parallel Computation Patterns Reduction Trees
这次回顾ECE408 Lecture 15,这次介绍了Reduction Trees。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
Amdahl定律Amdahl定律描述一个程序的可优化程度,一个程序分为并行和非并行部分,只有并行部分可以优化:
其中:
$k$是可并行的比例;
$p$是并行的资源;
所以加速比例为$\frac{1}{(1-k)+\left(\frac{k}{p}\right)}$。
Reduction无处不在,往往是并行计算的最后阶段
Reduction将一组输入转化为单个值;
Max, Min, Sum, Product;
基本上,任何满足以下条件的运算符/函数都是Reduction:
满足结合律和交换律;
有幺元,即一个特殊的元素,sum时是0,product时是1;
Partition和Summarize
数据集的常用策略
如 ...
ECE408 Lecture 12 Convolutional Neural Networks
这次回顾ECE408 Lecture 12,这次介绍了卷积神经网络。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
卷积层剖析输入:
$A$个形状为$N_1\times N_1$;
卷积层:
$B$个形状为$K_1\times K_2$的卷积核;
输出:
$A\times B$个输出,形状为$(N_1-K_1+1)\times (N_2-K_2+1)$;
Pooling(降采样)
降采样层
有时内置偏差和非线性;
常见类型
最大值、平均值、L2 范数、加权平均值;
有助于使表示对输入中的大小缩放和平移保持不变;
卷积前向传播
序列版本的代码void convLayer_forward(int B, int M, int C, int H, int W, int K, float* X, float* W, float* Y) { ...
ECE408 Lecture 11 Feed-Forward Networks and Gradient-Based Training
这次回顾ECE408 Lecture 11,这次介绍了前馈神经网络和梯度下降法。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
这一章大部分内容都比较熟悉,这里只回顾为什么要使用CNN做图像分类。
用MLP做图像分类考虑一张$250\times 250$的图像:
输入:将二维图像处理为一维向量;
全连接层太大:
每个节点$250^2=62500$个权重!
大约总共有~4B总权重!
如果层数大于1参数就会更多,并且这样的网络无法处理更大的图像;
总的来说,需要太多的计算和内存开销;
图像处理中传统的特征检测使用:
滤波器,卷积核;
我们可以在神经网络中使用它们吗?
2D卷积
MLP和卷积的对比
MLP层有固定的结构,所以输入/输出的数量是固定的;
卷积支持可变大小的输入(对同一事物的观察)
不同长度的音频;
不同像素的图像;
为什么使用卷积
稀疏 ...
Deep Learning Systems Lecture 6 Fully connected networks and optimization
这里回顾dlsys第六讲,本讲内容是全连接神经网络和优化。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
全连接神经网络;
优化;
初始化;
全连接神经网络现在我们已经涵盖了自动微分的基础知识,我们可以回到深度网络的“标准”形式。一个$L$层全连接网络,又名多层感知机(MLP),现在有一个明确定义:
\begin{aligned} & z_{i+1}=\sigma_i\left(W_i^T z_i+b_i\right), \quad i=1, \ldots, L \\ & h_\theta(x) \equiv z_{L+1} \\ & z_1 \equiv x\end{aligned}其中参数为\theta=\left\{W_{1: L}, b_{1: L}\right\},$\sigma_i(x)$是非线性函数。
矩阵形式和广播的微妙之处让我们考虑迭代的矩阵形式:
Z_{i+1}=\sigma_i\left(Z ...
Deep Learning Systems Lecture 4 Automatic Differentiation
这里回顾dlsys第四讲,本讲内容是自动微分。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
不同微分方法的介绍;
反向模式自动微分;
不同微分方法的介绍微分在机器学习的那个步骤起作用回顾:每个机器学习算法都包含三个不同的元素。计算关于假设类参数的损失函数梯度是机器学习中最常见的操作:
数值微分数值微分是根据定义直接计算梯度:
\frac{\partial f(\theta)}{\partial \theta_i}=\lim _{\epsilon \rightarrow 0} \frac{f\left(\theta+\epsilon e_i\right)-f(\theta)}{\epsilon}一种更精确的近似梯度的方法:
\frac{\partial f(\theta)}{\partial \theta_i}=\frac{f\left(\theta+\epsilon e_i\right)-f\left(\th ...
ECE408 Lecture 10 Introduction to Machine Learning
这次回顾ECE408 Lecture 10,这次介绍了机器学习。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
引子
计算技术的发展是基于这样一个前提,即有一天,计算机器将能够模仿一般的人类智能;
从计算能力的角度来看,摩尔定律推动了智能机器的发展:硬件速度每18个月提高2倍;
然而,软件方面一直是一个令人烦恼的悬而未决的问题;
用软件解决难题(既定方法)使用传统方法解决问题的思路是从算法包到软件然后到问题:
机器学习重新定义了范式
例子:CNN
机器学习
构建逻辑未被人们完全理解的应用程序;
使用标记数据——带有输入值及其所需输出值的数据——来了解逻辑应该是什么;
机器学习任务
分类
输出属于$k$个类别中的哪一个;
例如:物体识别;
回归
预测给定一些输入的数值;
例如:预测明天的温度;
Transcription
将非结构化数据转化 ...
ECE408 Lecture 9 Tiled Convolution Analysis
这次回顾ECE408 Lecture 9,这次介绍了分块卷积分析(Tiled Convolution Analysis)。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
GPU内存架构
模板模式
数字处理算法根据某种固定模式更新数组元素,称为模板;
卷积只是其中一个例子;
示例:
除此之外,卷积还可以应用于卷积神经网络。
1D卷积
上图是块1的输出和输入块;
第一行为输入,第二行为输出;
对于$\text{MASK_WIDTH}$为5,每个块加载8 + (5 – 1) = 12个元素(12个内存加载);
$P[8]$使用$N[6],N[7],N[8],N[9],N[10]$;
$P[9]$使用$N[7],N[8],N[9],N[10],N[11]$;
……
$P[15]$使用$N[13],N[14],N[15],N[16],N[17]$;
一共 ...
Deep Learning Systems Lecture 3 Manual Neural Networks and Backprop
这里回顾dlsys第三讲,本讲内容是神经网络和反向传播。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
从线性到非线性假设类;
神经网络;
反向传播(即计算梯度);
从线性到非线性假设类线性假设类的问题回想一下,我们需要一个假设函数来将$\mathbb R^n$中的输入映射到$\mathbb R^k$中的输出,因此我们最初使用线性假设类:
h_\theta(x)=\theta^T x, \quad \theta \in \mathbb{R}^{n \times k}这个分类器本质上形成了输入的$k$个线性函数,然后预测值最大的类,相当于把输入分成每个类对应的$k$个线性区域:
非线性分类边界呢?如果我们的数据不能被一组线性区域分开怎么办?我们想要一些方法通过一组非线性的类边界来分离这些点:
一个想法:将线性分类器应用于数据的某些(可能是更高维度的)特征:
\begin{gathered}
h_\theta(x) ...
Deep Learning Systems Lecture 2 ML Refresher and Softmax Regression
这里回顾dlsys第二讲,本讲内容是机器学习回顾以及Softmax回归。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
机器学习基础;
Softmax回归;
机器学习基础机器学习是数据驱动的编程
假设您要编写一个程序,将手写的数字图分类为适当的类别:0,1,…,9;
您可以认真思考数字的性质,尝试确定表示数字类型的逻辑,并编写一个程序来编码此逻辑(尽管我是一个合格的程序员,但我认为我不能很好地做到这一点 );
一个简单的方式是使用机器学习,特别的,有监督学习:收集一组具有已知标签的图像训练集,并将其输入机器学习算法,该算法(如果做得好)将自动生成解决此任务的“程序”:
机器学习算法的三要素每个机器学习算法都包含三个不同的元素:
假设类:“程序结构”,通过一组参数参数化,描述了我们如何将输入(例如,数字图像)映射到输出(例如,类标签或不同类标签的概率);
损失函数:指定给定假设(即参数的选择)在感兴趣的任务上执 ...
Deep Learning Systems Lecture 1 Introduction and Logistics
这里回顾dlsys第一讲,本讲内容是课程介绍。
课程主页:
https://dlsyscourse.org/
https://forum.dlsyscourse.org/
https://mugrade-online.dlsyscourse.org/
大纲
为什么要研究深度学习系统?
课程信息和规划;
课程目标
本课程将为您介绍现代深度学习系统的功能;
您将了解现代深度学习系统的基本概念,例如自动微分、神经网络架构、优化以及在GPU等系统上的高效操作;
为了巩固您的理解,在此过程中(在您的家庭作业中),您将构建(从头开始)needle,这是一个与PyTorch松类似的深度学习库,并在该库中实现许多常见的架构;
为什么要研究深度学习系统?为什么学习深度学习?在回答为什么要研究深度学习系统之前,老师首先给出了为什么要学习深度学习的原因?深度学习最近10年来取得惊人的进展,老师这里给出了一些例子:
这些例子大部分都是大机构利用大算力做出来的结果,那么小玩家是否有机会呢?这里老师举了三个例子:
为什么学习深度学习系统?从谷歌趋势可以看出,深度学习越来越流行,其中几个关键点是深度 ...
ECE408 Lecture 8 Tiled Convolution
这次回顾ECE408 Lecture 8,这次介绍了分块卷积(Tiled Convolution)。
课程主页:
https://wiki.illinois.edu/wiki/display/ECE408
搬运视频:
https://www.youtube.com/playlist?list=PL6RdenZrxrw-UKfRL5smPfFFpeqwN3Dsz
本讲目标
了解分块卷积算法
分块算法的一些复杂方面;
输出分块与输入分块;
三种不同风格的输入分块加载;
我们受到内存限制吗
对于1D情况,每个输出元素需要2*MASK_WIDTH负载(每个M和N)和2*MASK_WIDTH浮点运算, 受到内存限制;
对于2D情况,每个输出元素需要2*MASK_WIDTH^2加载和2*MASK_WIDTH^2浮点运算, 受到内存限制;
分块1D卷积基本思想思路是将每个输入按照某个方式划分为分块,然后分别计算,注意需要填充一些元素:
有多少重用?考虑分块1
分析:
元素2用于计算输出4 (1×);
元素3用于计算输出4、5 (2×);
元素4用于计算输出4、5、6 (3×); ...