GPU cihaz eklentileri

TensorFlow'un takılabilir cihaz mimarisi, resmi TensorFlow paketinin yanında kurulan ayrı eklenti paketleri olarak yeni cihaz desteği ekler.

Mekanizma, TensorFlow kodunda cihaza özel herhangi bir değişiklik gerektirmez. TensorFlow ikili dosyasıyla istikrarlı bir şekilde iletişim kurmak için C API'lerine güvenir. Eklenti geliştiricileri, eklentileri için ayrı kod depoları ve dağıtım paketleri bulundurur ve cihazlarının test edilmesinden sorumludur.

Cihaz eklentilerini kullanın

TensorFlow'daki yerel bir cihaz gibi belirli bir cihazı kullanmak için kullanıcıların yalnızca o cihaza yönelik cihaz eklenti paketini yüklemeleri gerekir. Aşağıdaki kod parçacığı, yeni bir tanıtım cihazı olan Awesome Processing Unit (APU) eklentisinin nasıl yüklendiğini ve kullanıldığını gösterir. Basitlik açısından, bu örnek APU eklentisinde ReLU için yalnızca bir özel çekirdek bulunur:

# 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

Eklenti yüklendiğinde cihazın görünür olup olmadığını test edin ve yeni APU cihazında bir işlem çalıştırın:

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.

Mevcut cihazlar

MacOS GPU'lar için Metal PluggableDevice :

Windows ve WSL için DirectML PluggableDevice (önizleme):

Linux ve WSL için TensorFlow PluggableDevice yönelik Intel® Uzantısı: