MxNet系列——how_to——env_var

2023-05-16

博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com


环境变量

环境可以修改MXNet的一些设置。一般情况下,你不需要修改这些设置。本节将它们罗列出来,用于参考。

设置线程数目

  • MXNET_GPU_WORKER_NTHREADS (默认值=2)
    • 每个GPU上,进行计算的最大线程数
  • MXNET_GPU_COPY_NTHREADS (默认值=1)
    • 每个GPU上,内存复制的最大线程数
  • MXNET_CPU_WORKER_NTHREADS (默认值=1)
    • CPU上的计算任务的最大线程数
  • MXNET_CPU_PRIORITY_NTHREADS (默认值=4)
    • 优先的CPU任务的线程数

内存选项

  • MXNET_EXEC_ENABLE_INPLACE (默认值=true)
    • 在符号计算中,是否使用原地(计算)优化。
  • MXNET_EXEC_MATCH_RANGE (默认值=10)
    • 符号计算内存分配器中的粗略匹配规模
    • 如果不想使用(图的)节点间共享内存(用于调试时),可以将该环境变量设置为0。
  • MXNET_EXEC_NUM_TEMP (默认值=1)
    • 每个设备上分配的临时工作空间的最大数目
    • 将它设置成比较小的数字,可以节省GPU内存。它也可能会降低并行度,但这通常是可接受的。
  • MXNET_GPU_MEM_POOL_RESERVE (默认值=5)
    • 分配给非GPU数组的GPU内存的比例,比如内核启动器或cudnn句柄空间。
    • 如果在迭代多次之后,看到一个来自内核启动器的内存溢出错误,尝试增大该环境变量的值。

Engine Type

  • MXNET_ENGINE_TYPE (默认值=ThreadedEnginePerDevice)
    • MXNet的实质执行引擎的类型。
    • 可选值:
      • NaiveEngine: 非常简单的引擎,使用主线程来计算。
      • ThreadedEngine: 使用全局线程池来调度作业。
      • ThreadedEnginePerDevice: 每个GPU上分配线程。

控制数据通信

  • MXNET_KVSTORE_REDUCTION_NTHREADS (默认值=4)
    • 用于大数组求和的CPU线程数
  • MXNET_KVSTORE_BIGARRAY_BOUND (默认值=1e6)
    • 大数组的最小尺寸
    • 当数组的容量大于该阈值时,将使用线程 MXNET_KVSTORE_REDUCTION_NTHREADS 进行规约。
  • MXNET_ENABLE_GPU_P2P (默认值=1)
    • 如果为True,MXNet尝试使用GPU的 peer-to-peer 通信(前提是P2P可用),当 kvstore 的类型是 device 时。

Memonger

  • MXNET_BACKWARD_DO_MIRROR (默认值=0)
    • 在训练过程中,是否执行 mirror 以节省设备存储。
    • 当设置成1时,在前向传播过程中,图计算器将会对一些层的特征图进行 mirror 操作,并抛弃它们;但当需要时,会重新计算这些抛弃的特征图。MXNET_BACKWARD_DO_MIRROR=1 时,将会节省 30%~50% 的设备内存,同时保持 95% 的运行速度。
    • 在MXNet中,mirror 的一个拓展叫做 memonger technology,它可以在保持75%运行速度的同时节省 O(sqrt(N)) 内存。

其它环境变量

  • MXNET_CUDNN_AUTOTUNE_DEFAULT (默认值=0)
    • 用于卷积层的cudnn_tune的默认值。
    • Auto tuning 默认是关闭的。For benchmarking, set this to 1 to turn it on by default.

设置最小内存使用


  • 务必确保 min(MXNET_EXEC_NUM_TEMP, MXNET_GPU_WORKER_NTHREADS) = 1
    • 默认设置满足这个条件。

设置更多的GPU并行


  • MXNET_GPU_WORKER_NTHREADS设置成一个较大的数(比如 2)
    • 为了减少内存的使用,考虑设置 MXNET_EXEC_NUM_TEMP
  • 这可能不会加速,尤其是图像任务。因为GPU通常会被充分利用(甚至在序列化作业中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MxNet系列——how_to——env_var 的相关文章

随机推荐

  • Python中类成员函数均为虚函数的理解

    python中类成员函数均为虚函数 我们可以通过下面的函数见识其威力 class A def foo self print 39 a 39 class B A def foo self print 39 b 39 for x in A B
  • MxNet系列——Windows上安装MxNet

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 开发环境 操作系统 xff1a Win7 64bit C 43 43 编译器 xff1a Visual Studio 2010
  • Eigen教程1 - 基础

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 固定大小的矩阵和向量 参考链接 xff1a http eigen tuxfamily org dox 2 0 Tutorial
  • Eigen教程2 - 入门

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 安装Eigen 无需安装 只需将Eigen位置添加到include路径中 Demo 1 MatrixXd xff0c X表示动
  • Eigen教程3 - 稀疏矩阵操作

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 稀疏矩阵操作 操作和求解稀疏问题需要的模块 xff1a SparseCore SparseMatrix 和 SparseVec
  • Eigen教程4 - 稀疏矩阵快速参考指南

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 本文对稀疏矩阵SparseMatrix的主要操作进行了总结 首先 xff0c 建议先阅读 Eigen教程2 稀疏矩阵操作 关于
  • Eigen教程5 - 求解稀疏线性方程组

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com Eigen中有一些求解稀疏系数矩阵的线性方程组 由于稀疏矩阵的特殊的表示方式 xff0c 因此获得较好的性能需要格外注意 查看
  • Eigen教程6 - Matrix-free solvers

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com Matrix free solvers 像ConjugateGradient 和 BiCGSTAB这样的迭代求解器可以用在 m
  • Eigen教程7 - Eigen和Matlab的比较

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com Eigen和Matlab比较 参考 http eigen tuxfamily org dox AsciiQuickRefere
  • MxNet系列——how_to——perf

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 性能 下面是一些技巧 xff0c 以尽可能的获取MXNet的最佳性能 数据 对于输入数据 xff0c 需要注意以下内容 xff
  • MxNet系列——how_to——visualize_graph

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何将神经网络可视化为计算图 该章节描述了如何在MXNet中使用在mx viz plot network来可视化 xff08
  • 修改antlr错误信息输出格式的方法

    找到 antlr DefaultFileLineFormatter java 修改类DefaultFileLineFormatter的函数getFormatString 我将其修改如下 以适应vc的错误信息输出格式 package antl
  • MxNet系列——how_to——torch

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何将MXNet用作Torch的前后端 本章节描述了如何将MXNet用作Torch的两个主要功能 xff08 前端和后端 xf
  • MxNet系列——how_to——smart_device

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 将深度学习库压缩成一个文件 xff0c 以便移植到智能设备中 深度学习系统是复杂的 xff0c 并且常常有些依赖环境 将深度学
  • MxNet系列——how_to——new_op

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 如何创建新的操作符 网络层 本节内容描述了创建新的MXNet操作符 xff08 或网络 xff09 的过程 我们已经尽了最大努
  • MxNet系列——how_to——multi_devices

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 在多个CPU GPUs上以数据并行方式运行MXNet MXNet 支持在多个CPUs和GPUs上进行训练 其中 xff0c 这
  • MxNet系列——how_to——model_parallel_lstm

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 使用模型并行的方式在多个GPUs上训练LSTM 由于复杂的数据依赖 xff0c LSTM评价很困难 LSTM的训练过程 xff
  • MxNet系列——how_to——index

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com MXNet 怎么办系列 How tos 提供了一系列的有关安装 xff0c 基本概念 xff0c 说明 xff0c 命令和使用
  • MxNet系列——how_to——faq

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 常见问题 本节回答了 mxnet issues上的常见问题 在提问前 xff0c 请先检查该页面 如果你想要贡献本页面 xff
  • MxNet系列——how_to——env_var

    博客新址 http blog xuezhisd top 邮箱 xff1a xuezhisd 64 126 com 环境变量 环境可以修改MXNet的一些设置 一般情况下 xff0c 你不需要修改这些设置 本节将它们罗列出来 xff0c 用于