Lecture 12 Parallel Machine Learning, Part 1¶
Supervised Learning
这节课的内容量很大很大,大致可以分成以下四个部分:
- Machine Learning && Parallelism Intro
- Neural Network Basics
- What's Training
- CNNs
- Deep Neural Network Training
- Batch Para
- Model Para
- Domain Para
- Pipeline Para
- Support Vector Machines
- Kernel Function
术语汇总
- GD: Gradient Decent, 梯度下降
- SGD: Stochastic Gradient Decent, 随机梯度下降
- CNN: Convolutional Neural Network, 卷积神经网络
- SVM: Support Vector Machine, 支持向量机
- SMO: Sequential Minimal Optimization,最小化次序优化算法 (解SVM问题)
机器学习分类
- 有监督学习 (Supervised Learning)
- 每个数据都有标签
- 用途: Classification | Regression
- 半监督学习 (Semi-supervised Learning)
- 小部分数据有标签,大多数无标签
- 无监督学习 (Unsupervised Learning)
- 任何数据都没标签
- 用途: Clustering | Dimensionality Reduction
- 强化学习 (Reinforcement Learning)
- 单独的支线,暂且不讨论
机器学习中的并行
分类:
- 隐式并行: 算法不变,优化操作方法
- Pros: 精确度不会收到影响
- Cons: 扩展性变差
- 显式并行: 算法重设计以优化
- Pros: 扩展性变好
- Cons: 算法性质变了,精确度或许会下降
经验:
一般来说,数据量越大 / 模型容量(model capacity)越大 -> 精确度越高
神经网络基础
训练神经网络:
- 训练: 调节神经网络各边的权重,旨在改变整体所表现的函数
- 目的: 让 prediction 和 actual data 更接近
- 采用: 损失函数 (Loss Func) 来表示差距
训练方法:
- 梯度下降 (Gradient Descent)
- 随机梯度下降 (Stochastic Gradient Descent, SGD)
- Pure SGD: compute gradient using
1
example, randomly - Mini-batch: compute gradient using
b
examples Batch的size如果太大,会不利于收敛 (convergence),因为他们容易 get trapped
- Pure SGD: compute gradient using
并行的方式
- Data Parallelism
- Batch Parallelism: 每个处理器拿到的是一个完整的样本
- Domain Parallelism: 每个处理器拿到的是“被剖分的样本”的一部分
- Model Parallelism
- Distribute NN (对Weight边权进行并行)
- Pipeline Parallelism
- Inter-batch Parallelism (NN流水线)
Distribute
- Distribute: give parts to processors
- Replicate: all reduce from all processors
Batch Parallelism¶
(1) fetch and update 分成: Sync 和 ASync
- 过度 Sync有损性能
- Update 方式: All Reduce over the whole network
- ASync导致无法复现,且不利于收敛
- Update 方式: Peer2Peer Gossiping
(2) Batch Parallelism can hurt single-node performance
我们考虑batch size对于性能的增益与压制:
- 每一轮 communication cost 与 batch size 无关
- batch size 上升,但 communication cost 不变
- 平均每个epoch的communication cost 下降
- 这是所谓的“增益”
- batch size 过大,也会带来副作用:
- 单processor的workload太大 (memory limitation),导致运行效率低
- 模型训练精度下降
Match Parallelism¶
- Batch Para: col-level的合并,每一轮的communication次数是1
- Model Para: row-level的合并,每一轮的communication次数是2
其实我们可以将上述两者合并,形成 Hybrid Para
:
每一轮有3次communication,2次row,1次col
Domain Parallelism¶
(1) 引入: 卷积神经网络 (CNN)
核心: 卷积核(convolution kernel) 可以提取图像中的信息
(2) domain para:
对于一张图片,其本身包含了信息。回忆之前所说的,domain para实际上是将一个实体(这里就是图片)分成很多“小部分”,每一部分单独处理
那这样会导致一个问题:不同“小部分”之间或许存在“关联的信息”! 直接分割似乎会破坏这部分“互信息”?
因此我们需要在分割时,加入一些“边缘信息”
如何选择并行方式
- Batch + Model: 激活层小 + 参数量大 (全相连层 / transformer)
- Batch + Domain: 激活层大 (卷积层)
Pipelined Parallelism¶
流水线基础
-
Pipeline 依托于 micro-batch, different GPUs work on different micro-batches simultaneously
-
Pipeline 实质是 batch-para 和 model-para 的混合体
- model: 它把 inter-layer 的部分并行起来了
- batch: 它的 micro-batches 将 pipeline 填满了
-
Pipeline Bubbles: 图中的“空隙”,成因是依赖关系
同步和异步的流水线
- GPipe: 非常明显的 Sync 流水线
- 优点: 每个worker的W版本一致,memory友好型(相当于replicated W)
- 缺点: bubble太大 | periodically flush, 成本太高
- PipeStream: ASync 流水线
- 优点: bubble小,利用率高,成本低
- 缺点: 本质是ASync的,会导致精确度下降等
Support Vector Machine¶
支持向量机,SVM
原始问题:最大化间隔,即在特征空间中找到一个超平面,使得不同类别的样本之间的间隔最大化。这个问题可以转化为一个凸二次规划问题
用途:分类
重点:Kernel Function
一般来说,原空间(Input Space
)的点经过 Kernel函数 映射到高维空间(Feature Space
)后,会变得容易分类
Sequential Minimal Optimization (SMO)
解上述凸二次规划问题的方式是 SMO
具体内容看slide吧,全是数学...