Spec-Zone.ru › TensorFlow

tf.keras.distribution.initialize

Инициализирует систему распределения для многосерверной/многопроцессной среды.

tf.keras.distribution.initialize(
    job_addresses=None, num_processes=None, process_id=None
)

Вызов initialize подготовит бэкенд к выполнению на нескольких GPU или TPU. Его следует вызывать до начала любых вычислений.

Обратите внимание, что параметры также можно передавать через переменные среды, настройку которых при запуске может удобнее выполнять запускающий скрипт. Для некоторых бэкендов, которые также используют переменные среды для настройки, Keras корректно передаст их дальше.

Аргументы
job_addresses строка. IP-адреса всех задач, разделённые запятыми, которые образуют весь вычислительный кластер. Обратите внимание, что для бэкенда JAX требуется только адрес задачи 0 (координатора). Для некоторых сред выполнения, например Cloud TPU, это значение может быть None, и бэкенд определит его по переменным среды TPU. Это значение также можно настроить с помощью переменной среды KERAS_DISTRIBUTION_JOB_ADDRESSES.
num_processes целое число. Количество рабочих процессов/процессов, которые образуют весь вычислительный кластер. Для некоторых сред выполнения, например Cloud TPU, это значение может быть None, и бэкенд определит его по переменным среды TPU. Это значение также можно настроить с помощью переменной среды KERAS_DISTRIBUTION_NUM_PROCESSES.
process_id целое число. Идентификатор текущего рабочего процесса/процесса. Значение должно находиться в диапазоне от 0 до num_processes - 1. 0 указывает, что текущий рабочий процесс/процесс является главным/координирующим. Это значение также можно настроить с помощью переменной среды KERAS_DISTRIBUTION_PROCESS_ID.
Example Предположим, что есть два процесса GPU: процесс 0 запущен по адресу 10.0.0.1:1234, а процесс 1 — по адресу 10.0.0.2:2345. Чтобы настроить такой кластер, выполните следующие команды

В процессе 0:

keras.distribute.initialize(
    job_addresses="10.0.0.1:1234,10.0.0.2:2345",
    num_processes=2,
    process_id=0)

В процессе 1:

keras.distribute.initialize(
    job_addresses="10.0.0.1:1234,10.0.0.2:2345",
    num_processes=2,
    process_id=1)

или используйте переменные среды: в процессе 0:

os.environ[
    "KERAS_DISTRIBUTION_JOB_ADDRESSES"] = "10.0.0.1:1234,10.0.0.2:2345"
os.environ["KERAS_DISTRIBUTION_NUM_PROCESSES"] = "2
os.environ["KERAS_DISTRIBUTION_PROCESS_ID"] = "0"
keras.distribute.initialize()

В процессе 1:

os.environ[
    "KERAS_DISTRIBUTION_JOB_ADDRESSES"] = "10.0.0.1:1234,10.0.0.2:2345"
os.environ["KERAS_DISTRIBUTION_NUM_PROCESSES"] = "2
os.environ["KERAS_DISTRIBUTION_PROCESS_ID"] = "1"
keras.distribute.initialize()

Также обратите внимание, что для бэкенда JAX значение job_addresses можно дополнительно сократить до одного адреса главного/координирующего узла — 10.0.0.1:1234.

© 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/keras/distribution/initialize

Spec-Zone.ru

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