Lec9 工具介绍
1. CPU vs GPU
- NVIDIA dominant
深度学习中大量的矩阵乘法,可以拆分成元素与元素之间的乘法,从而很好的配合GPU的并行运算能力。
GPU编程
OpenCL可以跑在GPU(both Nvidia and AMD)、CPU上,但CUDA(only Nvidia)的优化(cuDNN)好于OpenCL。
CPU与GUP的通信
两者之间的数据交换很费时间。
2. 框架frameworks
学术界转移到产业界
numpy只能在cpu上run
框架能够提供计算图建立、梯度的计算、CPU/GPU的切换
caffe/caffe2
有时候可以不需要编写代码就可以训练,在预存文件(prototxt)中修改设置,然后直接运用训练命令开始训练。
caffe2中可以使用pathon定义计算图
Google’s TensorFlow: one framework to rule them all
Facebook’s(Pytorch(Research,高效快速)+Caffe2(Production产品化))Theano/TensorFlow
一般分为 定义计算图(static graphs) 和 运行计算图。计算的数据保存为numpy形式。
一些包:Keras、Tensorflow Fold(支持TensorFlow的dynamic graph建立)及其他
TensorBoard 作图,支持计算图可视化
支持分布式计算,split one graph over multiplemachinesTorch/PyTorch
(dynamic graphs)
PyTorch抽象程度很高
Visdom 作图Static graghs vs Dynamic graphs
Dynamic适用于需要灵活调整动态图的网络,如RNN等,用于语言识别、内容描述等。
选择建议参考