问题描述: import tensorflow之后, train model时报错;
报错信息:Internal: failed initializing StreamExecutor for CUDA device ordinal 3: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY;
total memory reported: 8506179584
报错原因: Tensorflow默认会使用尽可能多的GPU,并且占用所使用的GPU。因此如果有别的Tensorflow正在使用GPU,而自己的程序使用默认配置,那么是无法使用已经被使用的GPU的,也无法单独使用一块没有被使用的GPU,导致报错。
查看此时服务器上GPU的使用情况:可以看出我自己的程序报错正是这个原因,服务器上的jupyter已经在运行其他程序,占用了一块GPU,而我的程序并没有对GPU进行设置,而是使用的是默认的配置。
文章图片
解决方法: 在程序里指定其他的GPU,比如‘1’
import os
os.environ["CUDA_VISIBLE_DEVICES"]="1"
【tensorflow多GPU多进程占用问题】更改之后,就可以正常运行了。
查看此时GPU的使用情况,两个程序占用两块GPU.
文章图片
1
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 深度学习|深度学习笔记总结
- 机器学习|机器学习Sklearn学习总结
- 机器学习|线性回归原理与python实现