我在一个共享计算资源的环境中工作,也就是说,我们有一些服务器机器配备了几个Nvidia Titan X GPU.
对于小到中等大小的型号,12GB的Titan X通常足以让2-3人在同一GPU上同时进行训练.如果模型足够小以至于单个模型没有充分利用Titan X的所有计算单元,那么与在另一个训练过程之后运行一个训练过程相比,这实际上可以导致加速.即使在并发访问GPU确实减慢了单个培训时间的情况下,仍然可以灵活地让多个用户同时在GPU上运行.
TensorFlow的问题在于,默认情况下,它在启动时会在GPU上分配全部可用内存.即使对于一个小的2层神经网络,我也看到12 GB的Titan X已用完.
有没有办法让TensorFlow只分配4GB的GPU内存,如果有人知道这个数量对于给定的模型来说足够了?
将张量从NHWC格式转换为NCHW格式的最佳方法是什么,反之亦然?
是否有专门用于执行此操作的操作,或者我是否需要使用split/concat类型操作的某些组合?
遵循Tensorflow的性能最佳实践,我使用的是NCHW数据格式,但我不确定要在tensorflow.nn.conv2d中使用的过滤器形状.
该文件称[filter_height, filter_width, in_channels, out_channels]
用于NHWC格式,但不清楚如何处理NCHW.
应该使用相同的形状?