跳转至

Lecture 12 Parallel Machine Learning, Part 1

Supervised Learning

alt text

这节课的内容量很大很大,大致可以分成以下四个部分:

  1. Machine Learning && Parallelism Intro
  2. Neural Network Basics
    • What's Training
    • CNNs
  3. Deep Neural Network Training
    • Batch Para
    • Model Para
    • Domain Para
    • Pipeline Para
  4. 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问题)

机器学习分类

  1. 有监督学习 (Supervised Learning)
    • 每个数据都有标签
    • 用途: Classification | Regression
  2. 半监督学习 (Semi-supervised Learning)
    • 小部分数据有标签,大多数无标签
  3. 无监督学习 (Unsupervised Learning)
    • 任何数据都没标签
    • 用途: Clustering | Dimensionality Reduction
  4. 强化学习 (Reinforcement Learning)
    • 单独的支线,暂且不讨论

机器学习中的并行

分类:

  1. 隐式并行: 算法不变,优化操作方法
    • Pros: 精确度不会收到影响
    • Cons: 扩展性变差
  2. 显式并行: 算法重设计以优化
    • Pros: 扩展性变好
    • Cons: 算法性质变了,精确度或许会下降

经验:

一般来说,数据量越大 / 模型容量(model capacity)越大 -> 精确度越高

神经网络基础

训练神经网络:

  1. 训练: 调节神经网络各边的权重,旨在改变整体所表现的函数
  2. 目的: 让 prediction 和 actual data 更接近
    • 采用: 损失函数 (Loss Func) 来表示差距

训练方法:

  1. 梯度下降 (Gradient Descent)
  2. 随机梯度下降 (Stochastic Gradient Descent, SGD)
    • Pure SGD: compute gradient using 1 example, randomly
    • Mini-batch: compute gradient using b examples Batch的size如果太大,会不利于收敛 (convergence),因为他们容易 get trapped

并行的方式

  1. Data Parallelism
    • Batch Parallelism: 每个处理器拿到的是一个完整的样本
    • Domain Parallelism: 每个处理器拿到的是“被剖分的样本”的一部分
  2. Model Parallelism
    • Distribute NN (对Weight边权进行并行)
  3. 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

  1. 过度 Sync有损性能
    • Update 方式: All Reduce over the whole network
  2. ASync导致无法复现,且不利于收敛
    • Update 方式: Peer2Peer Gossiping

(2) Batch Parallelism can hurt single-node performance

我们考虑batch size对于性能的增益与压制:

  1. 每一轮 communication cost 与 batch size 无关
    • batch size 上升,但 communication cost 不变
    • 平均每个epoch的communication cost 下降
    • 这是所谓的“增益”
  2. 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实际上是将一个实体(这里就是图片)分成很多“小部分”,每一部分单独处理

那这样会导致一个问题:不同“小部分”之间或许存在“关联的信息”! 直接分割似乎会破坏这部分“互信息”?

因此我们需要在分割时,加入一些“边缘信息”

alt text

如何选择并行方式
  1. Batch + Model: 激活层小 + 参数量大 (全相连层 / transformer)
  2. Batch + Domain: 激活层大 (卷积层)

Pipelined Parallelism

alt text

流水线基础

  1. Pipeline 依托于 micro-batch, different GPUs work on different micro-batches simultaneously

  2. Pipeline 实质是 batch-para 和 model-para 的混合体

    • model: 它把 inter-layer 的部分并行起来了
    • batch: 它的 micro-batches 将 pipeline 填满了
  3. Pipeline Bubbles: 图中的“空隙”,成因是依赖关系

同步和异步的流水线

alt text

  1. GPipe: 非常明显的 Sync 流水线
    • 优点: 每个worker的W版本一致,memory友好型(相当于replicated W)
    • 缺点: bubble太大 | periodically flush, 成本太高
  2. PipeStream: ASync 流水线
    • 优点: bubble小,利用率高,成本低
    • 缺点: 本质是ASync的,会导致精确度下降等

Support Vector Machine

支持向量机,SVM

原始问题:最大化间隔,即在特征空间中找到一个超平面,使得不同类别的样本之间的间隔最大化。这个问题可以转化为一个凸二次规划问题

用途:分类

重点:Kernel Function

一般来说,原空间(Input Space)的点经过 Kernel函数 映射到高维空间(Feature Space)后,会变得容易分类

alt text

Sequential Minimal Optimization (SMO)

解上述凸二次规划问题的方式是 SMO

具体内容看slide吧,全是数学...