深度学习训练速度的提高的一些浅见(1)gpu,cpu,硬盘等硬件 |
您所在的位置:网站首页 › 显卡运行速度突然变慢 › 深度学习训练速度的提高的一些浅见(1)gpu,cpu,硬盘等硬件 |
文章目录
背景可能的瓶颈本身训练代码(软件)可能的问题服务器(硬件)的问题
硬件可能的问题1.CPUCPU的主要问题解决方案
2.GPUGPU的主要问题
3.硬盘io硬盘io的主要问题解决方法
4.内存内存的主要问题解决方法
总结
本文着重于硬件方面的问题,代码方面的问题后续会讨论。
背景
多人使用一台服务器,常常会发生由于某个任务占用某个计算资源(cpu,gpu,内存,硬盘io等)过多,而导致其他任务由于该计算资源过少而训练速度过慢的问题 可能的瓶颈 本身训练代码(软件)可能的问题 有无多线程多进程输入。op操作是否有做gpu优化。将数据集的预处理过程放入训练过程。请参考学习tensorflow以及pytorch的performance guide。 服务器(硬件)的问题 CPU使用。GPU使用。内存使用。硬盘使用等等。 硬件可能的问题 1.CPU CPU的主要问题pytorch以及tensorflow的多线程输入设定过大,一般推荐较大数据流4线程,较小2线程。具体问题具体分析,要看数据输入是否是训练速度优化的瓶颈。 numpy或者opencv等的多线程操作或者tensorflow以及pytorch在cpu运行上的op。这些模块使用OMP或者MKL进行多线程加速,一般默认为cpu线程总数的一半,十分浪费计算力,推荐使用4线程,详见下表。 在python文件中加入 import os os.environ["MKL_NUM_THREADS"] = '4' os.environ["NUMEXPR_NUM_THREADS"] = 4' os.environ["OMP_NUM_THREADS"] = '4'置于顶部,并放在import numpy等的前面,提前声明全局环境变量。 2.GPU GPU的主要问题 多任务单GPU,但这种情况在所难免。 gpu处理单元有限,多任务运行一个gpu减慢训练速度,详见下表。内存对于训练速度的影响 内存占用过大 交换空间使用过多 cpu负荷大,io读写速度慢 内存的主要问题 数据并不是实时地读入模型,而是将所有数据先读取到内存,再通过placeholder等方法读取。忘记进行垃圾回收。 解决方法 tensorflow的queue runner(python多线程)以及Data(C++多线程)以及tfrecord。pytorch的DataLoader.memory_profiler模快+gc模快. 总结 Kunth大神说过的“过早的优化是万恶之源+寻找真正的瓶颈”。纯属一点点实验性总结,希望能有一点点帮助。思维导图 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |