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 1example, randomly
- Mini-batch: compute gradient using bexamples 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吧,全是数学...