解决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

相关文章

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序