คุณสามารถใช้tf.config.set_visible_devices
. ฟังก์ชันที่เป็นไปได้อย่างหนึ่งที่ช่วยให้คุณตั้งค่าว่าจะใช้ GPU หรือไม่:
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)
สมมติว่าคุณอยู่ในระบบที่มี GPU 4 ตัวและคุณต้องการใช้ GPU เพียงสองตัวคือ GPU ที่มีid = 0
และตัวที่มีid = 2
จากนั้นคำสั่งแรกของโค้ดของคุณทันทีหลังจากนำเข้าไลบรารีจะเป็น:
set_gpu([0, 2])
ในกรณีของคุณหากต้องการใช้เฉพาะ CPU คุณสามารถเรียกใช้ฟังก์ชันด้วยรายการว่าง :
set_gpu([])
tf.config.experimental.set_memory_growth
เพื่อความสมบูรณ์ถ้าคุณต้องการที่จะหลีกเลี่ยงที่เริ่มต้นรันไทม์จะจัดสรรหน่วยความจำทั้งหมดเกี่ยวกับอุปกรณ์ที่คุณสามารถใช้ สุดท้ายฟังก์ชั่นจัดการอุปกรณ์ที่จะใช้โดยครอบครองหน่วยความจำ GPU แบบไดนามิกจะกลายเป็น:
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)