一些系统性的学习资料:
1. 深度网络设计
神经网络
- 经典2D/3D网络(LeNet-5,AlexNet,VCG)
- 残差网络:ResNet,DesNet,ResNeXt
- 时序网络:RNN,LSTM,GRU
- 生成对抗网络:DCGAN,LAPGAN,CycleGAN
- 其他:AutoML
2. 模型开发库
对神经网络模型的封装,更易用的API,集成度更高
- paddleNLP,paddleDetection,paddleOCR
- 其他公司好像没
3. 深度学习框架
面向 AI 的深度学习 toolkit 集合,主要研究的我看有两块,一块是深度学习框架本身,一块是深度学习可视化相关的
- 计算框架:
- tensorflow
- pytorch
- mxnet
- paddlepaddle
- 可视化:
- tensorboard
- VisualDL
- visdom
4. 分布式训练
机器学习的训练,是一个从“数据”得到“模型”的过程
有两种视角,一种是ML视角,一种是system视角,关注点不一样
推荐刘铁岩老师的《分布式机器学习》这本书,还有UCB cs294 19fall的这一节。
科普:分布式深度学习系统
4.1. ML
主要是从数学角度,优化理论(optimization)、统计学习理论 (statistical learning theory),保证在分布式加速的同时,还可以达到原来的学习效果(loss/accuracy)
资料:
4.2. System
从分布式系统工程视角,研究机器学习相关分布式系统的架构、设计、实现
分布式 ML 设
- 理论设计:
- 模型怎么分布:
- 数据怎么分布:parameter server 模式和 allreduce 模式,多机多卡,硬件拓扑,Decentralized Training
- 训练框架:
- harovod,
- paddlefleet
- tf.distribute
- pytorch.distribute
- 通讯组件:
- GPU:nccl,eccl,hccl,blink
- CPU:gloo
- mpi
- 分布式调度
- 传输优化:tcp,rdma,p2p
5. 推理
机器学习的推理,是一个从“模型”得到“数据”的过程,和训练刚好相反
- 框架:
- TensortRT
- onnx
- ncnn/cnn:移动端的推理框架
- MegEngine:旷视,推理训练一体化
- 编译器:
- nnvm(前端)
- llvm-mlir(偏中间语言)
- tvm(后端)
- 算子实现
- 硬件适配:GPU,FPGA,ASIC(比如google的TPU)
- 模型压缩:
- 量化:通过优化推理数据的精度(32位浮点数->更低位的int32, int16, int8等),大幅加速推理过程
- Google CVPR2018 int8量化算法 https://arxiv.org/pdf/1712.05877.pdf
- xx
- 剪枝:Eliminating weights, layers, or channels to reduce storage and computation from large pre-trained models.
- 蒸馏
- 量化:通过优化推理数据的精度(32位浮点数->更低位的int32, int16, int8等),大幅加速推理过程
- 图优化:
- 常量折叠
- 算子融合
- 布局
- 部署优化:系统调优?
6. 大数据处理
6.1. rapidsai
RAPIDS 包含一组软件库(BlazingSQL、cuDF、cuML、cuGraph等),用来在 GPU 上执行端到端的数据科学计算和分析。RAPIDS 基于 Apache Arrow 列式存储格式,其中 cuDF 是一个 GPU DataFrame 库,用于加载、连接、聚合、过滤和操作数据,其Python API与pandas API相匹配。
核心组建:
- cuDF:cudf主要提供了基于python的GPU加速DataFrame的并行算法库,后期为了支持spark,通过JNI完善Java接口;底层依赖Thrust库、cub库、jitify、rmm、arrow等
- cuGraph:xx
- cuML:xx
7. 推荐系统
xx