tensorflow到底是什么(tensorflow算法)

2022-07-25 14:09:47 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

今天刚把服务器搭建起来 结果程序就跑不起来 当时差点把自己吓尿了

错误类型:CUDA_ERROE_OUT_OF_MEMORY

代码语言:javascript复制
E tensorflow/stream_executor/cuda/cuda_driver.cc:924] failed to alloc 17179869184 bytes on host: CUDA_ERROR_OUT_OF_MEMORY
W ./tensorflow/core/common_runtime/gpu/pool_allocator.h:195] could not allocate pinned host memory of size: 17179869184
Killed

其实很容易理解 大致意思就是 服务器的GPU大小为M

tensorflow只能申请N(N<M)

也就是tensorflow告诉你 不能申请到GPU的全部资源 然后就不干了

解决方法:

找到代码中Session

在session定义前 增加

config = tf.ConfigProto(allow_soft_placement=True)

#最多占gpu资源的70% gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)

#开始不会给tensorflow全部gpu资源 而是按需增加 config.gpu_options.allow_growth = True sess = tf.Session(config=config)

这样就没问题了

其实tensorflow 算是一个比较贪心的工具了

就算用device_id指定gpu 也会占用别的GPU的显存资源 必须在执行程序前

执行

代码语言:javascript复制
export CUDA_VISIBLE_DEVICES=n python main.py

(n为可见的服务器编号)

再去执行python 代码.py 才不会占用别的GPU资源

最近刚开始搞tensorflow 之前都是caffe

这周连续3天被实验室的人 举报 占用过多服务器资源 真是心累 只要用上面的方法

也就是执行代码前 执行 export CUDA_VISIBLE_DEVICES=n

只让1个或者个别GPU可见 其他GPU看不见 就行了

举例而言,例如 服务器上的GPU有8块,3个人共用这个服务器,你在运行代码前,首先要输入命令

代码语言:javascript复制
nvidia-smi

用上面的命令看下哪些GPU没有被使用,例如3号和5号没有被使用,则你可以用如下命令运行你的程序

代码语言:javascript复制
export CUDA_VISIBLE_DEVICES=3,5 python main.py

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127615.html原文链接:https://javaforall.cn

0 人点赞