Spec-Zone.ru › TensorFlow 1.15

tf.compat.v2.DeviceSpec

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

tf.compat.v2.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):
  # 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)

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

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

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

  • Job: Имя задания.
  • Replica: Индекс реплики.
  • Task: Индекс задачи.
  • Тип устройства: Строка типа устройства (например, "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
)

Проверяет, является ли DeviceSpec other таким же, как текущий экземпляр, т.е. имеют

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

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

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/compat/v2/DeviceSpec

Spec-Zone.ru

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