PS :我现在学的是 TensorFlow
硬件
一、CPU vs GPU
1.CPU
AMD vs Intel
CPU擅长处理具有复杂计算步骤和复杂数据依赖的计算任务
2.GPU (显卡)
NVIDIA(英伟达) vs AMD 深度学习用的大多是NVIDIA的GPU
GPU的核数远超CPU,称为众核,但每个核拥有的缓存大小相对小,数字逻辑运算单元也少。GPU拥有超高的运算速度,擅长做并行算法(矩阵乘法)的处理。
二、CUDA 和OpenCL
1.CUDA
CUDA是NVIDIA 发明的一种并行计算平台和编程模型
CUDA 代码只能在NVIDIA的GPU上运行,NVIDIA 提供了很多库,不需要直接写CUDA的代码。
2.OpenCL
OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。提供了基于任务分割和数据分割的并行计算机制。
三、从磁盘中读取数据降低训练速度
解决方法:
1.数据小:将数据存储在RAM
2.数据大:使用SSD固态硬盘而非HHD混合硬盘存储
3.使用多线程CPU提前取数据,GPU在处理数据的同时,CPU从磁盘中读取数据
四、深度学习框架
1.为什么需要深度学习框架?
(1)使用GPU可以高效执行深度学习神经网络的计算
深度学习是包含许多节点的神经网络,并且每个节点都需要在学习过程中不断更新,计算量很大。使用GPU,可以高效执行深度学习神经网络的计算(GPU是专门为并行计算相同指令而设计的)。
(2)深度学习框架是在GPU上高效运行深度学习
这些深度学习框架都依赖于计算图的概念,计算图定义了需要执行的计算顺序。然后,计算图可以并行地在目标GPU中优化和运行。
2. 开源深度学习框架
PyTorch(Facebook)
Tensorflow(Google)
使用框架的优点
1.很容易创建computation graph(计算图)
2.很容易在计算图中计算梯度
3.不需要考虑像CUDA这样的底层代码,就能在GPU上高效运行