博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com
常见问题
本节回答了 mxnet/issues上的常见问题。在提问前,请先检查该页面。如果你想要贡献本页面,请尽量使问题和答案简单。如果你的回答非常详细,请发布在其它地方并提供链接。
构建和安装
关于构建和安装的问题,绝大多数问题的答案都可以在 build page 上找到。
速度
在GPU上启动花费很长时间
尝试禁止OpenCV使用GPU: build opencv from source with GPU module disabled.
It’s slow on a single GPU
检查下面几条:
- 确保 CUDA/驱动 版本不是太老。
- 构建时使用
USE_CUDNN=1
。这一般能提速 50+%。尝试使用最近版。 - 在运行前执行
export MXNET_CUDNN_AUTOTUNE_DEFAULT=1
。这一般能提速 10%-15%。 - 如果你使用的是 Tesla GPUs,那么执行命令
nvidia-smi -e 0
,来禁用ECC。这需要root权限和重启。You might need root permission and have to reboot. - 对于 Tesla 显卡,执行命令
nvidia-smi -ac ??
,设置最大时钟。详细细节,参考 this blog。 - No throttle reason 一般是由于温度引起的。
nvidia-smi -q -d PERFORMANCE
。
使用多个GPU或机器,但速度没有提升
检查下面几条:
- 你的神经网络是否已经很快了?比如,>1000样本/秒,或>10 批/秒?如果是的话,由于通信开销,不能通过添加更多资源来提速。
- 批的尺度是不是很小?尝试增大批尺度。
- GPUs数量是否超过4个? 使用
--kv-store=device
。
内存使用
CPU内存使用异常
这可能是因为数据预取。查看 issue 2111。
等待审核
下面的话题需要被审核。
如何将部分参数复制到另一个模型
大部分MXNet包含2部分,参数数组和符号。你可以简单地将参数数组复制到另一个模型的参数数组。例如,在Python模型API中,你可以如下操作:
copied_model = mx.model.FeedForward(ctx=mx.gpu(), symbol=new_symbol,
arg_params=old_arg_params, aux_params=old_aux_params,
allow_extra_params=True);
关于从已存的old_arg_params
复制模型参数的更多信息,请查看 notebook。
如何提取某一层的特征图
请查看 notebook.
MXNet 和 CXXNet, Minerva, 与 Purine2是什么关系?
- MXNet 是由来自以上3个项目的作者们相互协作创建的。
- MXNet 反映了我们已从这些项目中学习到的东西。
- MXNet 组合了这些项目的重要方面:效率高,灵活和内存利用率高。
- MXNet 也包含了新的方法:允许你组合使用不同的编程方式,写出比 CXXNet 和 Purine内存利用率高的CPU/GPU应用,比Minerva更加灵活。
MXNet 和 TensorFlow的是什么关系?
-
MXNet 和 TensorFlow都使用计算图抽象化,它最早在Theano中使用,后来被其它库所采用,比如,CGT, Caffe2, 和 Purine。当前,TensorFlow 使用一个优化的符号API。MXNet 支持一种混合方法,该方法使用动态依赖调度器来组合符号编程和命令编程。
-
简而言之,MXNet是轻量级的,混合的。既有命令式编程的灵活性,又因计算图(符号编程)而变得速度快和内存高效。