Tensorflow全域性設定可見GPU編號操作

2022-10-04 14:03:52 字數 4308 閱讀 8445

筆者需要tensorflow僅執行在乙個gpu上(機器本身有多gpu),而且需要依據系統引數動態調節,故無法簡單使用cuda_visible_devices。

一種方式是全域性使用tf.device函式生成的域,但裝置號需要在繪製graph前指定,仍然不夠靈活。

查閱文件發現config的gpuoptions中的visible_device_list可以定義gpu編號從visible到virtual的對映,即可以設定tensorflow可見的www.cppcns.comgpu device,從而全域性設定了tensorflow可見的gpu編號。**如下:

config = tf.configproto()

config.gpu_options.visible_device_list = str(device_num)

sess = tf.session(config=config)

參考 多卡伺服器下隱藏部分 gpu 和 tensorflow 的視訊記憶體使用設定,還可以通過os包設定全域性變數cuda_visible_devices,**如下:

os.environ["程式設計客棧cuda_visible_devices"] = "2"

補充知識:tensorflow 設定程式可見gpu與邏輯分割槽

tensorflow 設定程式可見gpu(多gpu情況)

import matplotlib as mpl

import matplotlib.pyplot as plt

%matplotlib inline

import numpy as np

import sklearn

import pandas as pd

import os

import sys

import time

import tensorflow as tf

from tensorflow_core.python.keras.api._v2 import keras

print(tf.__version__)

print(sys.version_info)

for module in mpl, np, pd, sklearn, tf, keras:

print(module.__name__, module.__version__)

# 列印變數所在位置

tf.debugging.set_log_device_placement(true)

# 獲取物理gpu的個數

gpus = tf.config程式設計客棧.experimental.list_physical_devices("gpu")

if len(gpus) >= 1:

# 設定第幾個gpu 當前程式可見

tf.config.experimental.set_visible_devices(gpus[0], "gpu")

print("物理gpu個數:", len(gpus))

# 獲取邏輯gpu的個數

logical_gpus = tf.config.experimental.list_logical_devices("gpu")

print("邏輯gpu個數:", len(logical_gpus))

tensorflow 設定gpu的 邏輯分割槽

import matplotlib as mpl

import matplotlib.pyplot as plt

%matplotlib inline

import numpy as np

import sklearn

import pandas as pd

import os

import sys

import time

import tensorflow as tf

from tensorflow_core.python.keras.api._v2 import keras

print(tf.__version__)

print(sys.version_info)

for module in mpl, np, pd, sklearn, tf, keras:

print(module.__name__, module.__version__)

# 列印變數所在位置

tf.debugging.set_log_device_placement(true)

# 獲取物理gpu的個數

gpus = tf.config.experimental.list_physical_devices("gpu") 程式設計客棧

if len(gpus) >= 1:

# 設定第幾個gpu 當前程式可見

tf.config.experimental.set_visible_devices(gpus[0], "gpu")

# 設定gpu的 邏輯分割槽

tf.config.experimental.set_virtual_device_configuration(

gpus[0],

[tf.config.experimental.virtualdeviceconfiguration(memory_limit=3072),

tf.config.experimental.virtualdeviceconfiguration(memory_limit=3072)])

print("物理gpu個數:", len(gpus))

# 獲取邏輯gpu的個數

logical_gpus = tf.config.experimental.list_logical_devices("gwww.cppcns.compu")

print("邏輯gpu個數:", len(logical_gpus))

tensorflow 手動設定處理gpu

import matplotlib as mpl

import matplotlib.pyplot as plt

%matplotlib inline

import numpy as np

import sklearn

import pandas as pd

import os

import sys

import time

import tensorflow as tf

from tensorflow_core.python.keras.api._v2 import keras

print(tf.__version__)

print(sys.version_info)

for module in mpl, np, pd, sklearn, tf, keras:

print(module.__name__, module.__version__)

# 列印變數所在位置

tf.debugging.set_log_device_placement(true)

# 自動指定處理裝置

tf.config.set_soft_device_placement(true)

# 獲取物理gpu的個數

gpus = tf.config.experimental.list_physical_devices("gpu")

for gpu in gpus:

# 設定記憶體自增長方式

tf.config.experimental.set_memory_growth(gpu, true)

print("物理gpu個數:", len(gpus))

# 獲取邏輯gpu的個數

logical_gpus = tf.config.experimental.list_logical_devices("gpu")

print("邏輯gpu個數:", len(logical_gpus))

c =

# 迴圈遍歷當前邏輯gpu

for gpu in logical_gpus:

print(gpu.name)

# 手動設定處理gpu

with tf.device(gpu.name):

a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])

b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])

# 矩陣相乘 並且新增至列表

c.append(tf.matmul(a, b))

# 手動設定處理gpu

with tf.device("/gpu:0"):

matmul_sum = tf.add_n(c)

print(matmul_sum)

本文標題: tensorflow全域性設定可見gpu編號操作

本文位址:

Tensorflow全域性設定可見GPU編號

筆者需要tensorflow僅執行在乙個gpu上 機器本身有多gpu 而且需要依據系統引數動態調節,故無法簡單使用cuda visible devices。一種方式是全域性使用tf.device函式生成的域,但裝置號需要在繪製graph前指定,仍然不夠靈活。查閱文件發現config的gpuoptio...

python設定全域性可訪問的driver物件方法

最近專案要用python來寫自動化,我根據之前現有的ruby框架來重寫。發現乙個最大的區別,全域性變數,ruby是可以全工程可見,而python只能在當前py檔案內可見。其實在開發中我們都會要求盡量少用全域性變數,以避免帶來的不可預見的問題。但是在做selenium框架時,driver物件的必須全工...

tensorflow結果可重複

最近在學吳恩達的深度學習課程,在參考別人的 的時候,發現在cpu多執行緒情況下和gpu執行的情況下,同樣的 資料,每次訓練出來的結果都不一樣,這還怎麼調參,於是stackoverflow走起。windows10 64位 python 3.6 tensorflow 1.14 keras 2.2.5 c...