查看: 1757|回复: 0

[AI服务] keras多GPU使用

[复制链接]

13

主题

15

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2018-12-4 18:59:52 | 显示全部楼层 |阅读模式
本帖最后由 VD0 于 2018-12-28 09:59 编辑

keras多GPU使用

1.keras提供了实现单机多GPU数据并行性的功能,为multi_gpu_model函数,以下引自keras中文文档:



keras.utils.multi_gpu_model(model, gpus=None, cpu_merge=True, cpu_relocation=False)

将模型复制到不同的 GPU 上。

具体来说,该功能实现了单机多 GPU 数据并行性。 它的工作原理如下:

  • 将模型的输入分成多个子批次。
  • 在每个子批次上应用模型副本。 每个模型副本都在专用 GPU 上执行。
  • 将结果(在 CPU 上)连接成一个大批量。

例如, 如果你的 batch_size 是 64,且你使用 gpus=2, 那么我们将把输入分为两个 32 个样本的子批次, 在 1 个 GPU 上处理 1 个子批次,然后返回完整批次的 64 个处理过的样本。

这实现了多达 8 个 GPU 的准线性加速。

此功能目前仅适用于 TensorFlow 后端。

参数

  • model: 一个 Keras 模型实例。为了避免OOM错误,该模型可以建立在 CPU 上, 详见下面的使用样例。
  • gpus: 整数 >= 2 或整数列表,创建模型副本的 GPU 数量, 或 GPU ID 的列表。
  • cpu_merge: 一个布尔值,用于标识是否强制合并 CPU 范围内的模型权重。
  • cpu_relocation: 一个布尔值,用来确定是否在 CPU 的范围内创建模型的权重。如果模型没有在任何一个设备范围内定义,您仍然可以通过激活这个选项来拯救它。

返回

一个 Keras Model 实例,它可以像初始 model 参数一样使用,但它将工作负载分布在多个 GPU 上。

关于模型保存

要保存多 GPU 模型,请通过模板模型(传递给 multi_gpu_model 的参数)调用 .save(fname) 或 .save_weights(fname) 以进行存储,而不是通过 multi_gpu_model 返回的模型。



keras中文文档:https://keras.io/zh/utils/

keras英文文档:https://keras.io/utils/

例子:

im.png

注意:multi_gpu_model不是一个.py文件,所以不能直接用import keras.utils.multi_gpu_model导入,

要用import keras.utils 或者from keras.utils import multi_gpu_model导入

keras2.png

可以用  watch -n -9 nvidia-smi  命令在linux下看GPU使用情况
keras1.png





怎么在远程主机的命令行上运行代码


1.先租个实例,进入实例的jupyter notebook。



2.点击上传

linux执行ex.png


3.选择要上传的代码文件和数据集

linux执行ex0.png


4.在jupyter上点击上传,上传时文件过大可能有点卡,我上传的数据集大概10M,等待了大概10s才上传好
linux执行ex1.png

5.上传好后打开一个终端
linux执行ex2.png

6.进入到上传了文件的文件夹,并用  python3 [代码名]   执行代码
linux执行ex3.png

可以看到代码开始运行:
linux执行ex4.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表