当前位置:   article > 正文

Keras调用单个或者多个GPU训练的方法_keras调用gpu

keras调用gpu

前期准备:

  • 下载和安装自己 nvidia 驱动
  • 按照nvidia 驱动的版本号安装 cuda 和 cudnn
  • 安装 anaconda
  • 添加 anaconda 的环境变量
  • 创建 conda 的虚拟环境

1. 安装 keras-gpu

(因为 conda 会将一系列的附带包全部安装适配版本,例如 cudatoolkit,tensorflow-gpu,所以直接用 conda 安装 keras-gpu 即可)

进行这一步,默认读者已经安装了 anaconda 并且创建了自己的虚拟环境;

conda install keras-gpu
  • 1

2. 调用单个 gpu 设备:

  • 查看你都 gpu 设备编号:nvidia-smi
    在这里插入图片描述
    根据上面显示,有 0 1 2 3 一共四个 gpu

  • 在代码第一行添加下面一句话:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"	//使用的gpu的编号,使用第 0 个

model = .... //创建、定义自己使用的模型

model.compile(loss='categorical_crossentropy',
              optimizer=opt,
              metrics=['accuracy'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 调用多个 gpu 设备

3.1 数据并行计算

什么叫数据并行呢?
数据集一共 10000 个数据,他们太多了,没办法一同放到内存里面,所以要进行 batch_size的拆分,如果 batch_size = 64, 那么我们把 64 个数据叫做一个 batch,这个batch 是我们根据经验人为设定的;而多个 gpu 的数据并行计算会把一个 batch 的数据拆分成几个部分放在并行的 gpu 设备上,这样可以节省时间提高效率。

具体操作

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1,2,3"	

model = .... //创建、定义自己使用的模型

model = keras.utils.multi_gpu_model(model, gpus=3)	//compile 之前加这句话,gpus=3指的是 gpu 的数量用 3 个

model.compile(loss='categorical_crossentropy',
              optimizer=opt,
              metrics=['accuracy'])

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.2 设备并行计算

什么叫设备并行呢?
设备并行性包括在不同设备上运行同一模型的不同部分。对于具有并行体系结构的模型,例如有两个分支的模型,这种方式很合适。这种并行可以通过使用 tf.device来实现。一个简单的例子:

## 模型中共享的 LSTM 用于并行编码两个不同的序列

input_a = keras.Input(shape=(140, 256))
input_b = keras.Input(shape=(140, 256))

shared_lstm = keras.layers.LSTM(64)

## 在一个 GPU 上处理第一个序列

with tf.device('/device:GPU:0'):
    encoded_a = shared_lstm(input_a)
# 在另一个 GPU上 处理下一个序列
with tf.device('/device:GPU:1'):
    encoded_b = shared_lstm(input_b)

# 在 CPU 上连接结果
with tf.device('/cpu:0'):
    merged_vector = keras.layers.concatenate([encoded_a, encoded_b], axis=-1)

# 整个全连接层
fc1 = keras.layers.Dense(50, activation='softmax')(merged_vector)

# 新建模型
model = keras.Model(inputs=[input_a, input_b], outputs=fc1)
# 其他代码
...         
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/53734
推荐阅读
相关标签
  

闽ICP备14008679号