Bạn có thể sử dụng tf.config.set_visible_devices
. Một chức năng khả thi cho phép bạn đặt nếu và sử dụng GPU nào là:
import tensorflow as tf
def set_gpu(gpu_ids_list):
gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
gpus_used = [gpus[i] for i in gpu_ids_list]
tf.config.set_visible_devices(gpus_used, 'GPU')
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPU")
except RuntimeError as e:
# Visible devices must be set before GPUs have been initialized
print(e)
Giả sử bạn đang sử dụng một hệ thống có 4 GPU và bạn chỉ muốn sử dụng hai GPU, một có id = 0
và một có id = 2
, thì lệnh đầu tiên trong mã của bạn, ngay sau khi nhập các thư viện, sẽ là:
set_gpu([0, 2])
Trong trường hợp của bạn, để chỉ sử dụng CPU, bạn có thể gọi hàm với một danh sách trống :
set_gpu([])
Để hoàn thiện, nếu bạn muốn tránh việc khởi tạo thời gian chạy sẽ phân bổ tất cả bộ nhớ trên thiết bị, bạn có thể sử dụng tf.config.experimental.set_memory_growth
. Cuối cùng, chức năng quản lý thiết bị nào sẽ sử dụng, chiếm dụng động bộ nhớ GPU, trở thành:
import tensorflow as tf
def set_gpu(gpu_ids_list):
gpus = tf.config.list_physical_devices('GPU')
if gpus:
try:
gpus_used = [gpus[i] for i in gpu_ids_list]
tf.config.set_visible_devices(gpus_used, 'GPU')
for gpu in gpus_used:
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")
except RuntimeError as e:
# Visible devices must be set before GPUs have been initialized
print(e)