GPU使用设置

本文详细介绍了如何在Keras和TensorFlow中高效使用GPU资源,包括限制GPU使用率、动态分配GPU内存以及分布式训练的方法。同时,提供了Python代码示例,帮助读者理解和实践GPU资源管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keras参考资料:https://keras.io/zh/getting-started/faq/#sample-batch-epoch
https://keras-cn.readthedocs.io/en/latest/


参考资料:https://www.jianshu.com/p/5d47f152ff62
https://blog.youkuaiyun.com/A632189007/article/details/77978058

###写法一:充分利用申请的资源
import tensorflow as tf
import keras.backend.tensorflow_backend as KTF
config = tf.ConfigProto()  

config.gpu_options.allow_growth=True
session = tf.Session(config=config)
KTF.set_session(session)


#######写法二:限制GPU使用率
import os
import tensorflow as tf
import keras.backend.tensorflow_backend as KTF
config = tf.ConfigProto()


# 获取环境变量
env_dist = os.environ
#单卡GPU最大显存
card_gpu_mem_total = int(env_dist['ALIYUN_COM_GPU_MEM_CONTAINER'])
#启动Notebook分配的GPU显存
request_card_gpu_mem = int(env_dist['ALIYUN_COM_GPU_MEM_DEV'])

# percent=0.7 is because tensorflow control gpu memory is not accurate, it is recommended to multiply by 0.7 to ensure that the upper limit is not exceeded.
percent=0.7
fraction = round(card_gpu_mem_total*percent/request_card_gpu_mem, 1)
config.gpu_options.per_process_gpu_memory_fraction = fraction

session = tf.Session(config=config)
KTF.set_session(session)
##tensorflow调用GPU命名行

import os
import tensorflow as tf

# 获取环境变量
env_dist = os.environ
#单卡GPU最大显存
card_gpu_mem_total=int(env_dist['ALIYUN_COM_GPU_MEM_CONTAINER'])
#启动Notebook分配的GPU显存
request_card_gpu_mem=int(env_dist['ALIYUN_COM_GPU_MEM_DEV'])

# percent=0.7 is because tensorflow control gpu memory is not accurate, it is recommended to multiply by 0.7 to ensure that the upper limit is not exceeded.
percent=0.7
fraction=round(card_gpu_mem_total*percent/request_card_gpu_mem , 1)

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = fraction
sess = tf.Session(config=config)

# write your code
a = tf.constant(3)
b = tf.constant(4)
print('a + b =  {0}'.format(sess.run(a+b)))





##pytorch调用GPU命令行
import os, torch
torch.cuda.is_available()
os.environ["CUDA_VISIBLE_DEVICES"] = os.getenv("ALIYUN_COM_GPU_MEM_IDX")
##pytorch按卡使用,不能按显存按需使用


###################
###keras调用GPU命令行
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

import tensorflow as tf
import keras.backend.tensorflow_backend as KTF
config = tf.ConfigProto()

config.gpu_options.allow_growth=True
session = tf.Session(config=config)
KTF.set_session(sess)



####查看GPU使用状态:nvidia-smi实时刷新并高亮显示状态
##其他参考资料:https://blog.youkuaiyun.com/huangfei711/article/details/79230446#
watch -n 1 -d nvidia-smi


####参考资料:https://blog.youkuaiyun.com/HaixWang/article/details/83349023
##https://blog.youkuaiyun.com/u013066730/article/details/77510015
##https://blog.youkuaiyun.com/silent56_th/article/details/60154637
##其他补充说明:
import os
import tensorflow as tf
import keras.backend.tensorflow_backend as KTF

#进行配置,每个GPU使用60%上限现存
os.environ["CUDA_VISIBLE_DEVICES"]="1,2" # 使用编号为1,2号的GPU
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.6  #每个GPU现存上限控制在60%以内
session = tf.Session(config=config)

# 设置session
KTF.set_session(session)


##########
##分布式
##keras的分布式是利用TensorFlow实现的,要想完成分布式的训练,你需要将Keras注册在连接一个集群的TensorFlow会话上:
server = tf.train.Server.create_local_server()
sess = tf.Session(server.target)
from keras import backend as K
K.set_session(sess)

##########

转载于:https://my.oschina.net/kyo4321/blog/3061774

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值