• 提高GPU利用率


    如何提高GPU利用率(更新中)

    核心宗旨:通过调整网络结构,batcsize大小,worker 数量,让数据读取的时间与网络前向传播和反向更新时间大致相同

    1. 一般的瓶颈就在 I/O 上面,因此可以预先把很多图片、特征等小文件存储到 LMDB 数据库,加快磁盘 I/O 速度,工具传送门, 项目首页有安装方法。

    2. 如果网络本身很简单,那么增加batchsize是无济于事的,因为网络训练很快,时间还是在等数据,因此应该适当降低 batchsize 大小,并同时增加 worker 数量,进而减少一个 batch 数据读取时间,力求达到与网络前向,后向时间一致,充分发挥多 worker 的优势。可以通过 top 命令估计 worker 的数量,如果每个 worker 的 CPU 利用率都不是0,那么就是合适的。

    注意:

    1. batchsize 并不是越大越好,一方面,batchsize越大那么 variance 估计越准确,但是导致 bias 估计不准,模型未必有好的效果。另一方面,简单网络增加batchsize会让数据准备时间更长,GPU利用率显然上不去。
    2. worker 并不是越大越好,worker 越多进程之间通信越复杂,内存占用也很高,并且通过观察发现,pytroch 的 batch 读取通常是根据 worker 的数量一次性读取完成才会给出一个 batch。举例:batchsize 20,worker 3,那么当获得到第一个 batch 即数据为20的时候,并不会开始模型的训练,而是等待 20*3 读取完成之后才会进行模型训练,并且后两个 2*20 batch 的读取时间极短,大部分时间都集中在第一个 batch 上。
  • 相关阅读:
    SecureCRT 连接 虚拟机Linux 命令
    如何使用secureCRT连接vmware中的虚拟主机?
    SecureCRT8.1+SecureCRT_keygen完成注册
    常用python机器学习库总结
    Torch7在Ubuntu下的安装与配置
    朴素贝叶斯算法 & 应用实例
    编写MR代码中,JAVA注意事项
    march.
    Docker CentOS 7.2镜像systemd问题解决办法
    Docker 基础命令 简要入门
  • 原文地址:https://www.cnblogs.com/TianyuSu/p/13590775.html
Copyright © 2020-2023  润新知