Spec-Zone.ru › TensorFlow

tf.DeviceSpec

Представляет (возможно, частичную) спецификацию устройства TensorFlow.

tf.DeviceSpec(
    job=None, replica=None, task=None, device_type=None, device_index=None
)

DeviceSpec используются в TensorFlow для описания того, где хранится состояние и выполняются вычисления. С помощью DeviceSpec можно анализировать строки спецификаций устройств, проверять их корректность, объединять их или создавать программно.

Пример:

# Place the operations on device "GPU:0" in the "ps" job.
device_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
with tf.device(device_spec.to_string()):
  # Both my_var and squared_var will be placed on /job:ps/device:GPU:0.
  my_var = tf.Variable(..., name="my_variable")
  squared_var = tf.square(my_var)

При отключенном eager execution (по умолчанию в TensorFlow 1.x и при вызове disable_eager_execution() в TensorFlow 2.x) можно использовать следующий синтаксис:

tf.compat.v1.disable_eager_execution()

# Same as previous
device_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
# No need of .to_string() method.
with tf.device(device_spec):
  my_var = tf.Variable(..., name="my_variable")
  squared_var = tf.square(my_var)

Если DeviceSpec задана частично, она будет объединена с другими DeviceSpec в соответствии с областью видимости, в которой она определена. Компоненты DeviceSpec, определенные во внутренних областях видимости, имеют приоритет над компонентами, определенными во внешних областях.

gpu0_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
with tf.device(DeviceSpec(job="train").to_string()):
  with tf.device(gpu0_spec.to_string()):
    # Nodes created here will be assigned to /job:ps/device:GPU:0.
  with tf.device(DeviceSpec(device_type="GPU", device_index=1).to_string()):
    # Nodes created here will be assigned to /job:train/device:GPU:1.

DeviceSpec состоит из 5 компонентов, каждый из которых указывается по желанию:

  • Задание: имя задания.
  • Реплика: индекс реплики.
  • Задача: индекс задачи.
  • Тип устройства: строка с типом устройства (например, "CPU" или "GPU").
  • Индекс устройства: индекс устройства.
Аргументы
job строка. Необязательное имя задания.
replica int. Необязательный индекс реплики.
task int. Необязательный индекс задачи.
device_type Необязательная строка с типом устройства (например, "CPU" или "GPU")
device_index int. Необязательный индекс устройства. Если он не указан, устройство представляет собой «любое» устройство с индексом device_index.
Атрибуты
device_index
device_type
job
replica
task

Методы

from_string

Посмотреть исходный код

@classmethod
from_string(
    spec
)

Создает DeviceSpec из строки.

Аргументы
spec строка вида /job:/replica:/task:/device:CPU: или /job:/replica:/task:/device:GPU:, поскольку CPU и GPU взаимоисключают друг друга. Все записи необязательны.
Возвращает
Объект DeviceSpec.

make_merged_spec

Посмотреть исходный код

make_merged_spec(
    dev
)

Возвращает новую спецификацию DeviceSpec, включающую dev.

При объединении спецификаций dev будет иметь приоритет над текущей спецификацией. Например:

first_spec = tf.DeviceSpec(job=0, device_type="CPU")
second_spec = tf.DeviceSpec(device_type="GPU")
combined_spec = first_spec.make_merged_spec(second_spec)

эквивалентно следующему:

combined_spec = tf.DeviceSpec(job=0, device_type="GPU")
Аргументы
dev объект DeviceSpec
Возвращает
Новую DeviceSpec, объединяющую self и dev

parse_from_string

Посмотреть исходный код

parse_from_string(
    spec
)

Разбирает имя DeviceSpec на составляющие.

Изменение поведения в версии 2.x:

В TensorFlow 1.x эта функция изменяет собственное состояние и возвращает себя. В версии 2.x объекты DeviceSpec неизменяемы, поэтому функция возвращает DeviceSpec, содержащий спецификацию.

  • Рекомендуется:

    # my_spec and my_updated_spec are unrelated.
    my_spec = tf.DeviceSpec.from_string("/CPU:0")
    my_updated_spec = tf.DeviceSpec.from_string("/GPU:0")
    with tf.device(my_updated_spec):
      ...
    
  • Работает в версиях 1.x и 2.x (хотя в версии 2.x считается устаревшим):

    my_spec = tf.DeviceSpec.from_string("/CPU:0")
    my_updated_spec = my_spec.parse_from_string("/GPU:0")
    with tf.device(my_updated_spec):
      ...
    
  • НЕ работает в версии 2.x:

    my_spec = tf.DeviceSpec.from_string("/CPU:0")
    my_spec.parse_from_string("/GPU:0")  # <== Will not update my_spec
    with tf.device(my_spec):
      ...
    

В целом, DeviceSpec.from_string должна полностью заменить DeviceSpec.parse_from_string, а DeviceSpec.replace должна полностью заменить прямое присваивание атрибутам.

Аргументы
spec необязательная строка вида /job:/replica:/task:/device:CPU: или /job:/replica:/task:/device:GPU:, поскольку CPU и GPU взаимоисключают друг друга. Все записи необязательны.
Возвращает
Объект DeviceSpec.
Вызывает исключение
ValueError если спецификация некорректна.

replace

Посмотреть исходный код

replace(
    **kwargs
)

Вспомогательный метод для создания новой спецификации DeviceSpec с переопределением полей.

Например:

my_spec = DeviceSpec=(job="my_job", device="CPU")
my_updated_spec = my_spec.replace(device="GPU")
my_other_spec = my_spec.replace(device=None)
Аргументы
**kwargs Этот метод принимает те же аргументы, что и конструктор DeviceSpec.
Возвращает
Объект DeviceSpec, в котором переопределены поля, указанные в kwargs.

to_string

Посмотреть исходный код

to_string()

Возвращает строковое представление этой DeviceSpec.

Возвращает
строку вида /job:/replica:/task:/device::.

__eq__

Посмотреть исходный код

__eq__(
    other
)

Проверяет, совпадает ли other DeviceSpec с текущим экземпляром, то есть имеют ли они

одинаковые значения всех внутренних полей.

Аргументы
other Другой объект DeviceSpec
Возвращает
Возвращает True, если other также является экземпляром DeviceSpec и имеет те же значения, что и текущий экземпляр. В противном случае возвращает False.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/DeviceSpec

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API