解决tensorflow模型加载时把GPU显存占满的问题(亲测效果显著)

本文主要是介绍解决tensorflow模型加载时把GPU显存占满的问题(亲测效果显著),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一次用tensorflow模型进行推理。

初始状态下,显存的占用情况

在这里插入图片描述

模型加载后,电脑显存直接快拉满了,但是模型参数量并不大,这就很奇怪,究竟这是一股什么神秘的力量,竟要试图侵占我可怜的显卡宝贝

在这里插入图片描述

原因分析:安装了tensorflow-gpu后,运行程序默认是把GPU的内存全部占满的,但是正常人都不希望这样,都希望能自己掌握自己的资源,而不是任人摆布,可以这样操作。

解决代码:

import tensorflow as tf
import os# 指定使用的GPU
os.environ['CUDA_VISIBLE_DEVICES'] = "0"  # 指定使用的GPU编号,"0"表示使用第一块GPU。如果有多个GPU,可以更改为其他编号。# 配置TensorFlow使用的GPU资源
config = tf.compat.v1.ConfigProto()# 设置GPU内存分配策略
config.gpu_options.allow_growth = True  # 动态分配GPU内存。程序刚开始会少量申请显存,然后随着需求增长,逐渐增加显存的分配,避免一次性占满整个显存。
"""
好处:默认情况下,TensorFlow会尝试占满所有可用的GPU显存,
这可能会导致其他GPU任务无法运行。通过设置 allow_growth 为 True,
TensorFlow会根据实际需求动态分配显存,而不是一次性占满。
"""# 如果想设置最大GPU显存占用比例,可以使用下面的代码(可选)
# config.gpu_options.per_process_gpu_memory_fraction = 0.8  # 限制TensorFlow进程最多使用80%的GPU显存
"""
如果需要限制TensorFlow进程使用GPU显存的最大比例,
可以通过这个参数来设置。例如,设置为 0.8 表示最多使用80%的显存。
这在多任务环境中非常有用。
"""# 创建Session,并应用配置
sess = tf.compat.v1.Session(config=config)

在这里插入图片描述

适用场景

  • 多任务环境:如果一台机器上有多个GPU任务同时运行,控制每个任务的显存使用是非常重要的,这样可以避免冲突。
  • 显存有限的GPU:在显存较小的GPU上运行大型模型时,动态显存分配可以帮助防止因显存不足而导致的程序崩溃。

这篇关于解决tensorflow模型加载时把GPU显存占满的问题(亲测效果显著)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111463

相关文章

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring