TensorFlow禁用GPU和动态分配显存

禁用GPU

import os
os.environ["CUDA_VISIBLE_DEVICES"]="-1"   

动态分配显存

第一种方式大家应该都知道,主要是给Session用的

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

但我使用的是Tensorflow的Estimator,可以采用以下方法

session_config = tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)
session_config.gpu_options.per_process_gpu_memory_fraction = 0.8
session_config.gpu_options.allow_growth = True # 自适应
run_config = tf.estimator.RunConfig(
        session_config=session_config,
        model_dir=FLAGS.output_dir,
        save_checkpoints_steps=FLAGS.save_checkpoints_steps)

如果是TPU,也是一样,无非就是tf.estimator改为tf.estimator.tpu

### TensorFlow GPU 使用示例 为了展示如何在 TensorFlow 中配置使用 GPU 进行计算,下面提供了一个完整的 Python 脚本实例。此脚本不仅展示了如何检测可用的 GPU 设备,还说明了怎样通过限制显存分配以及选择特定编号的 GPU 来优化性能。 #### 导入必要的库并打印 Tensorflow 版本 ```python import tensorflow as tf print("TensorFlow version:", tf.__version__) ``` #### 配置 GPU 设置 当有多个 GPU 可用时,可以通过如下代码指定仅使用第二块 GPU (索引为 1),并且设置初始显存增长模式以防止一次性占用过多资源[^2]: ```python gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: # 禁用除第一个之外的所有其他 GPUs tf.config.set_visible_devices(gpus[1], 'GPU') # 动态申请显存空间 for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) logical_gpus = tf.config.experimental.list_logical_devices('GPU') print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU(s)") except RuntimeError as e: print(e) ``` #### 创建简单的模型并在选定的 GPU 上执行操作 定义一个简单的人工神经网络结构,并将其放置于之前所选的 GPU 上运行: ```python with tf.device('/device:GPU:0'): model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) ``` #### 实时监控 GPU 利用率 可以利用 `nvidia-smi` 命令每隔一段时间查看一次 GPU 的工作状态,这对于调试非常有用[^3]: 打开一个新的命令行窗口输入以下指令来每两秒钟更新一次 GPU 的信息: ```bash nvidia-smi -l 2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值