Tensorflow、Pytorch、Keras的多GPU使用方法



方法一 :使用深度学习工具提供的 API指定

1.1 Tesorflow


with tf.device("/gpu:%d"%i):

with tf.device("cpu:0")

还可以设置GPU的使用率:

ConfigProto()类提供有对GPU使用率的函数方法:

config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存 
session = tf.Session(config=config)

还可以指定GPU的数量是否增长:

config = tf.ConfigProto() 
config.gpu_options.allow_growth = True  session = tf.Session(config=config)



个人认为最好的方式:

import os # 建议使用这种方式
import tensorflow as tf
os.environ["CUDA_VISIBLE_DEVICES"] = "2" # python 的方式指定GPU
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto() 
config.gpu_options.per_process_gpu_memory_fraction = 0.3 # 指定GPUl利用率
set_session(tf.Session(config=config))


1.2 Pytorch


import torch
torch.cuda.set_device(id)

这种方式只能制定一个GPU,不太建议使用

1.3 Keras

keras的后端如果是Tensorflow的话,可以使用Tensorflow的方式指定;

如果是theano的话,就是用theano的方式;




方法二: 在终端指定

这种方法与深度学习工具无关了,无论是Keras tensorflow 还是Pytorch都是可以使用的

CUDA_VISIBLE_DEVICES=0,2,3  python your_file.py

这里的0,1,3是通过nvidia-smi 命令查看的GPU编号.


方法三 在Python代码中指定

这种方法也是与深度学习工具无关的方法。仔细看看这种方式其实和方法二类似,关键字都是一样的

import os

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 多个GPU下使用的方法是“0,1,2,3”

猜你喜欢

转载自www.cnblogs.com/greentomlee/p/9379139.html