תוספים למכשירי GPU

ארכיטקטורת המכשיר הניתנת לחיבור של TensorFlow מוסיפה תמיכה במכשירים חדשים כחבילות פלאג-אין נפרדות המותקנות לצד החבילה הרשמית של TensorFlow.

המנגנון אינו דורש שינויים ספציפיים למכשיר בקוד TensorFlow. הוא מסתמך על ממשקי API של C כדי לתקשר עם הבינארי TensorFlow בצורה יציבה. מפתחי תוספים שומרים על מאגרי קוד וחבילות הפצה נפרדות עבור התוספים שלהם ואחראים על בדיקת המכשירים שלהם.

השתמש בתוספים למכשיר

כדי להשתמש במכשיר מסוים, כמו שיעשה במכשיר מקורי ב-TensorFlow, המשתמשים צריכים רק להתקין את חבילת הפלאג-אין של המכשיר עבור אותו מכשיר. קטע הקוד הבא מראה כיצד התוסף למכשיר הדגמה חדש, Awesome Processing Unit (APU) מותקן ומשתמש בו. לשם הפשטות, לפלאגין לדוגמא של APU זה יש רק ליבה מותאמת אישית אחת עבור ReLU:

# Install the APU example plug-in package
$ pip install tensorflow-apu-0.0.1-cp36-cp36m-linux_x86_64.whl
...
Successfully installed tensorflow-apu-0.0.1

כשהפלאגין מותקן, בדוק שהמכשיר גלוי והפעל פעולה במכשיר ה-APU החדש:

import tensorflow as tf   # TensorFlow registers PluggableDevices here.
tf.config.list_physical_devices()  # APU device is visible to TensorFlow.
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:APU:0', device_type='APU')]

a = tf.random.normal(shape=[5], dtype=tf.float32)  # Runs on CPU.
b =  tf.nn.relu(a)         # Runs on APU.

with tf.device("/APU:0"):  # Users can also use 'with tf.device' syntax.
  c = tf.nn.relu(a)        # Runs on APU.

with tf.device("/CPU:0"):
  c = tf.nn.relu(a)        # Runs on CPU.

@tf.function  # Defining a tf.function
def run():
  d = tf.random.uniform(shape=[100], dtype=tf.float32)  # Runs on CPU.
  e = tf.nn.relu(d)        # Runs on APU.

run()  # PluggableDevices also work with tf.function and graph mode.

מכשירים זמינים

מתכת PluggableDevice עבור macOS GPUs:

DirectML PluggableDevice עבור Windows ו-WSL (תצוגה מקדימה):

הרחבת Intel® עבור TensorFlow PluggableDevice עבור לינוקס ו-WSL: