TensorFlow的GPU使用相关设置整理

news2024/11/26 13:57:41

前言

TensorFlow是一个在机器学习和深度学习领域被广泛使用的开源软件库,用于各种感知和语言理解任务的机器学习。

在这里插入图片描述
默认情况下,TensorFlow 会映射进程可见的所有 GPU(取决于 CUDA_VISIBLE_DEVICES)的几乎全部内存。这是为了减少内存碎片,更有效地利用设备上相对宝贵的 GPU 内存资源。但有时我们不需要这种特性,所以需要想办法避免这种情况。

本文简要介绍TensorFlow的GPU使用相关设置。

import tensorflow as tf

显卡使用设置方式

  1. 设置进程在指定的显卡上运行

device_id = 5
gpus = tf.config.experimental.list_physical_devices('GPU')
gpu = gpus[device_id]
tf.config.set_visible_devices(gpu, 'GPU')

在这里插入图片描述

  1. 设置单卡分布式模式运行
strategy = tf.distribute.OneDeviceStrategy(device=f"/gpu:{device_id}")
with self.strategy.scope():
	outputs = model(inputs)

在这里插入图片描述
3. 设备指定显卡放置变量和运行计算


device_id = 2
with tf.device(f"/gpu:{device_id}"):
	outputs = model(inputs)

在这里插入图片描述

显存占用设置方式

  1. 设置每张卡上所运行进程占用的显存比

tf_config = tf.compat.v1.ConfigProto()
tf_config.gpu_options.per_process_gpu_memory_fraction = 0.15 # 设置太小可能会导致所加载的网络某些层初始化失败
session = tf.compat.v1.Session(config=tf_config)

该方法为兼容v1版本的TensorFlow的方法,相应的还有set_memory_growth方法。见参考资料[3]。

  1. 设置每张卡上所运行进程的显存占用上限

 gpus = tf.config.experimental.list_physical_devices('GPU')
 for gpu_i in gpus:
     tf.config.experimental.set_virtual_device_configuration(gpu_i, [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=3096)])
        

在这里插入图片描述

其他说明

实测发现以下组合能够较好控制显卡和显存的使用:


device_id = 5

gpus = tf.config.experimental.list_physical_devices('GPU')

gpu = gpus[device_id]

tf.config.experimental.set_virtual_device_configuration(gpu, [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=3096)])

tf.config.set_visible_devices(gpu, 'GPU')

版权说明

本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至tracelessle@163.com或扫描个人介绍栏二维码咨询。
在这里插入图片描述

参考资料

[1] 使用 GPU | TensorFlow Core
[2] 使用 TensorFlow 进行分布式训练 | TensorFlow Core
[3] tf.config.experimental.set_memory_growth | TensorFlow v2.10.0
[4] machine learning - Why Tensorflow’s MirroredStrategy and OneDevicestrategy does not work on colab? - Stack Overflow
[5] tf.distribute.OneDeviceStrategy | TensorFlow v2.10.0
[6] Tensorflow v2 Limit GPU Memory usage · Issue #25138 · tensorflow/tensorflow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国考省考行测:问题型材料主旨分析,有问题有对策,主旨是对策,有问题无对策,要合理引申对策

国考省考行测:问题型材料主旨分析,有问题有对策,主旨是对策,有问题无对策,要合理引申对策 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考…

【Linux】Linux背景、环境的搭建以及用XShell实现远程登陆

目录Linux 背景Linux环境搭建Linux远程登陆Linux 背景 肯尼斯蓝汤普森最早用汇编语言创建了UNIX系统,后来与他的好“基友”丹尼斯里奇(C语言之父),他们两个一同用C语言重新写了UNIX系统,但是操作系统的使用是需要收费…

ActiveState Platform - November 2022

ActiveState Platform - November 2022 ActiveState平台定期更新新的、修补的和版本化的软件包和语言。 Python 3.10.7、3.9.14、3.8.14-解决了许多安全问题的点发布。 Python C库-ibxml 2.10.3、libxslt 1.1.37、libexpat 2.4.9、zlib 1.2.13、curl 7.85.0和sqlite3 3.39.4&am…

Python添加水印简简单单,三行代码教你批量添加

环境使用: Python 3.8Pycharm 如何配置pycharm里面的python解释器? 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)点击齿轮, 选择add添加python安装路径 pycharm如何安装插件? 选择file(文件) …

使用Python PyQt5完成残缺棋盘覆盖仿真作业

摘要:本文内容是关于如何实现残缺棋盘覆盖仿真软件,算法课作业要求设计开发一个残缺棋盘覆盖仿真软件。使用”分治算法“求解问题,Python编程语言实现功能;使用PyQt5和Python热力图实现界面和仿真效果展示。 1 残缺棋盘覆盖仿真作…

[Linux打怪升级之路]-yun安装和gcc的使用

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 本期学习目标&am…

Java:外包Java项目有什么好处?

Java已经成为众多解决方案的通用开发语言,包括web应用、游戏、软件开发等等。超过710万全球的Java程序员都在忙着为业界下一个最好的应用程序编码。 随着企业努力在当今的全球市场中保持竞争力,对Java项目外包的需求不断增加。 以下是你的企业通过外包Ja…

python基于PHP+MySQL的论坛管理系统

互联网给了我们一个互通互信的途径,但是如何能够更加高效的进行各种问题的分享和交流是很多人关心的问题,市面上比较知名的一些分享交流平台也很多,比如百度的贴吧,知乎等高质量内容分享平台,本系统是一个类似这样的论坛分享系统 随着互联网的发展人们分享和交流的分享也变的越…

leetcode刷题(128)——1575. 统计所有可行路径,动态规划解法

leetcode刷题(127)——1575. 统计所有可行路径,DFS解法 给你一个 互不相同 的整数数组,其中 locations[i] 表示第 i 个城市的位置。同时给你 start,finish 和 fuel 分别表示出发城市、目的地城市和你初始拥有的汽油总…

【CSS】CSS字体样式【CSS基础知识详解】

👨‍💻个人主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【CSS】 【CSS专栏】已发布文章 📁【CSS基础认知】 📁【CSS选择器全解指南】 本文目录【CS…

物联网感知-光纤光栅传感器技术

一、光纤光栅传感技术 光纤光栅是利用光纤材料的光敏性,通过紫外光曝光的方法将入射光相干场图样写入纤芯,将周期性微扰作用于光纤纤芯,在纤芯内产生沿纤芯轴向的折射率周期性变化,从而形成永久性空间的相位光栅,其作用…

MySQL数据库的基本操作及存储引擎的使用

大家好呀!我是猿童学🐵,最近在学习Mysql数据库,给初学者分享一些知识,也是学习的总结,关注我将会不断地更新数据库知识,也欢迎大家指点一二🌹。 目录 一、常用的MySQL语句 二、创建…

使用ThinkMusic网站源码配合cpolar,发布本地音乐网站

1、前言 在我们的日常生活中,音乐已经成为不可或缺的要素之一,听几首喜欢的音乐,能让原本糟糕的心情变得好起来。虽然现在使用电脑或移动电子设备听歌都很方便,但难免受到诸多会员或VIP限制,难免让我们回想起音乐网站…

【JavaScript】常用内置对象——数组(Array)对象

文章目录什么是数组创建数组访问数组数组常用方法和属性投票传送门什么是数组 数组(Array)是最基本的集合类型,由于JavaScript是弱类型语言,因此JavaScript的数组和大多数语言的数组有所区别。在大多数语言中,当声明一…

ubuntu 20.04 qemu u-boot-2022.10 开发环境搭建

开发环境 ubuntu 20.04 VMware Workstation Pro 16 基于qemu(模拟器),vexpress-a9 平台 搭建 u-boot-2022.10 (当前最新版本) 准备工作 u-boot下载,下载最新稳定版本,当前为 u-boot-2022.10&#xff0…

代码随想录49——动态规划:121买卖股票的最佳时机、122买卖股票的最佳时机II

文章目录1.121买卖股票的最佳时机1.1.题目1.2.解答1.2.1.贪心算法1.2.2.动态规划2.122买卖股票的最佳时机II2.1.题目2.2.解答1.121买卖股票的最佳时机 参考:代码随想录,121买卖股票的最佳时机;力扣题目链接 1.1.题目 1.2.解答 1.2.1.贪心算…

第七节:类和对象【一】【java】

目录 🧾1. 面向对象的初步认知 1.1 什么是面向对象 1.2 面向对象与面向过程 📕2. 类定义和使用 2.1 简单认识类 2.2 类的定义格式 2.3 课堂练习 🎒3. 类的实例化 3.1 什么是实例化 3.2 类和对象的说明 3.3练习 🧾1. 面…

Hbase2.4.11安装

Hbase2.4.11安装 文章目录Hbase2.4.11安装一、前期准备二、安装三、配置文件(一)添加环境变量(二)修改hbase配置文件1.修改hbase-env.sh 中内容2.在hbase-site.xml中添加以下内容3. 编辑regionservers四、分发文件到Hadoop2、Hadoop3中一、前期准备 hba…

SpringBoot+Vue实现前后端分离的学生选课系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

浏览器无痕模式有什么作用,手机浏览器开启无痕模式的方法

在我们的手机基本上都安装了浏览器,当我们在上网过程中,不想浏览记录被留下,那么开启无痕模式是非常有必要的。那么,浏览器的无痕模式有什么作用,手机浏览器如何开启无痕模式呢?下面教大家如何在手机浏览器…