Mlsys & 深度学习相关方向的技术栈梳理

一些系统性的学习资料:

1. 深度网络设计

神经网络

  1. 经典2D/3D网络(LeNet-5,AlexNet,VCG)
  2. 残差网络:ResNet,DesNet,ResNeXt
  3. 时序网络:RNN,LSTM,GRU
  4. 生成对抗网络:DCGAN,LAPGAN,CycleGAN
  5. 其他:AutoML

2. 模型开发库

对神经网络模型的封装,更易用的API,集成度更高

  1. paddleNLP,paddleDetection,paddleOCR
  2. 其他公司好像没

3. 深度学习框架

面向 AI 的深度学习 toolkit 集合,主要研究的我看有两块,一块是深度学习框架本身,一块是深度学习可视化相关的

  1. 计算框架:
    1. tensorflow
    2. pytorch
    3. mxnet
    4. paddlepaddle
  2. 可视化:
    1. tensorboard
    2. VisualDL
    3. visdom

 

4. 分布式训练

机器学习的训练,是一个从“数据”得到“模型”的过程

有两种视角,一种是ML视角,一种是system视角,关注点不一样

推荐刘铁岩老师的《分布式机器学习》这本书,还有UCB cs294 19fall的这一节

科普:分布式深度学习系统

4.1. ML

主要是从数学角度,优化理论(optimization)、统计学习理论 (statistical learning theory),保证在分布式加速的同时,还可以达到原来的学习效果(loss/accuracy)

资料:

4.2. System

从分布式系统工程视角,研究机器学习相关分布式系统的架构、设计、实现

分布式 ML 设

  1. 理论设计:
    1. 模型怎么分布:
    2. 数据怎么分布:parameter server 模式和 allreduce 模式,多机多卡,硬件拓扑,Decentralized Training
  2. 训练框架:
    1. harovod,
    2. paddlefleet
    3. tf.distribute
    4. pytorch.distribute
  3. 通讯组件:
    1. GPU:nccl,eccl,hccl,blink
    2. CPU:gloo
    3. mpi
  4. 分布式调度
    1. 调度算法:
      1. https://www-users.cselabs.umn.edu/classes/Spring-2019/csci8980/papers/device_placement.pdf
    2. 框架:kubeflow
  5. 传输优化:tcp,rdma,p2p

5. 推理

机器学习的推理,是一个从“模型”得到“数据”的过程,和训练刚好相反

  1. 框架:
    1. TensortRT
    2. onnx
    3. ncnn/cnn:移动端的推理框架
    4. MegEngine:旷视,推理训练一体化
  2. 编译器:
    1. nnvm(前端)
    2. llvm-mlir(偏中间语言)
    3. tvm(后端)
  3. 算子实现
    1. 硬件适配:GPU,FPGA,ASIC(比如google的TPU)
  4. 模型压缩:
    1. 量化:通过优化推理数据的精度(32位浮点数->更低位的int32, int16, int8等),大幅加速推理过程
      1. Google CVPR2018 int8量化算法 https://arxiv.org/pdf/1712.05877.pdf
      2. xx
    2. 剪枝:Eliminating weights, layers, or channels to reduce storage and computation from large pre-trained models.
    3. 蒸馏
  1. 图优化:
    1. 常量折叠
    2. 算子融合
    3. 布局
  1. 部署优化:系统调优?

6. 大数据处理

6.1. rapidsai

RAPIDS 包含一组软件库(BlazingSQL、cuDF、cuML、cuGraph等),用来在 GPU 上执行端到端的数据科学计算和分析。RAPIDS 基于 Apache Arrow 列式存储格式,其中 cuDF 是一个 GPU DataFrame 库,用于加载、连接、聚合、过滤和操作数据,其Python API与pandas API相匹配。

0

核心组建:

  1. cuDF:cudf主要提供了基于python的GPU加速DataFrame的并行算法库,后期为了支持spark,通过JNI完善Java接口;底层依赖Thrust库、cub库、jitify、rmm、arrow等
  2. cuGraph:xx
  3. cuML:xx

7. 推荐系统

xx

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注