Spec-Zone.ru › TensorFlow 2.9

tf.data.experimental.service.from_dataset_id

Создаёт набор данных, который считывает данные из службы tf.data.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.data.experimental.service.from_dataset_id

tf.data.experimental.service.from_dataset_id(
    processing_mode,
    service,
    dataset_id,
    element_spec=None,
    job_name=None,
    consumer_index=None,
    num_consumers=None,
    max_outstanding_requests=None,
    data_transfer_protocol=None,
    target_workers='AUTO'
)

Это полезно, когда набор данных регистрируется одним процессом, а затем используется другим процессом. Когда один и тот же процесс и регистрирует, и считывает набор данных, проще использовать tf.data.experimental.service.distribute вместо этого.

Перед использованием from_dataset_id, набор данных должен быть зарегистрирован в службе tf.data с помощью tf.data.experimental.service.register_dataset. register_dataset возвращает идентификатор зарегистрированного набора данных. Это dataset_id, которое следует передать в from_dataset_id.

Аргумент element_spec указывает tf.TypeSpec для элементов, производимых набором данных. В настоящее время element_spec необходимо явно указать и он должен соответствовать набору данных, зарегистрированному в dataset_id. element_spec по умолчанию равен None, чтобы в будущем мы могли поддерживать автоматическое обнаружение element_spec путём запроса к службе tf.data.

tf.data.experimental.service.distribute — это удобный метод, который объединяет register_dataset и from_dataset_id в преобразование набора данных. См. документацию для tf.data.experimental.service.distribute для получения более подробной информации о том, как работает from_dataset_id.

dispatcher = tf.data.experimental.service.DispatchServer()
dispatcher_address = dispatcher.target.split("://")[1]
worker = tf.data.experimental.service.WorkerServer(
    tf.data.experimental.service.WorkerConfig(
        dispatcher_address=dispatcher_address))
dataset = tf.data.Dataset.range(10)
dataset_id = tf.data.experimental.service.register_dataset(
    dispatcher.target, dataset)
dataset = tf.data.experimental.service.from_dataset_id(
    processing_mode="parallel_epochs",
    service=dispatcher.target,
    dataset_id=dataset_id,
    element_spec=dataset.element_spec)
print(list(dataset.as_numpy_iterator()))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Аргументы
processing_mode tf.data.experimental.service.ShardingPolicy, определяющий, как распределить набор данных между tf.data-рабочими. См. tf.data.experimental.service.ShardingPolicy для получения подробностей. Для обратной совместимости processing_mode также можно задать строки "parallel_epochs" или "distributed_epoch", которые соответственно эквивалентны ShardingPolicy.OFF и ShardingPolicy.DYNAMIC.
service Строка или кортеж, указывающий, как подключиться к службе tf.data. Если это строка, она должна быть в формате [<protocol>://]<address>, где <address> идентифицирует адрес диспетчера, а <protocol> необязательно используется для переопределения протокола по умолчанию. Если это кортеж, он должен быть (протокол, адрес).
dataset_id Идентификатор набора данных для чтения. Этот идентификатор возвращается register_dataset при регистрации набора данных в службе tf.data.
element_spec Вложенная структура tf.TypeSpec, представляющая тип элементов, производимых набором данных. Этот аргумент требуется только внутри tf.function. Используйте tf.data.Dataset.element_spec для получения спецификации элемента для данного набора данных.
job_name (Необязательно.) Название задачи. Если указано, должно быть непустой строкой. Этот аргумент позволяет нескольким наборам данных совместно использовать одну задачу. По умолчанию набор данных создаёт анонимные, исключительно собственные задачи.
consumer_index (Необязательно.) Индекс потребителя в диапазоне от 0 до num_consumers. Должен быть указан вместе с num_consumers. При указании потребители будут читать из задачи в строгом порядке круговой очереди вместо стандартного порядка «первый пришёл — первый обслужен».
num_consumers (Необязательно.) Количество потребителей, которые будут потреблять из задачи. Должен быть указан вместе с consumer_index. При указании потребители будут читать из задачи в строгом порядке круговой очереди вместо стандартного порядка «первый пришёл — первый обслужен». При указании num_consumers, набор данных должен обладать бесконечной мощностью, чтобы предотвратить преждевременное исчерпание данных у поставщика и разсинхронизацию потребителей.
max_outstanding_requests (Необязательно.) Ограничение на количество элементов, которые могут быть запрошены одновременно. Вы можете использовать этот параметр для управления объёмом используемой памяти, поскольку distribute не будет использовать более element_size * max_outstanding_requests памяти.
data_transfer_protocol (Необязательно.) Протокол, используемый для передачи данных с помощью службы tf.data. По умолчанию данные передаются с помощью gRPC.
target_workers (Необязательно.) Рабочие, с которых нужно читать. Если "AUTO", среда выполнения tf.data сама определяет, с каких рабочих читать. Если "ANY", читает с любых рабочих службы tf.data. Если "LOCAL", читает только с локальных рабочих службы tf.data в процессе. "AUTO" подходит для большинства случаев, но пользователи могут указать и другие цели. Например, "LOCAL" помогает избежать RPC и копирования данных, если каждый рабочий TF соположен с рабочим службы tf.data. Потребители совместно используемой задачи должны использовать ту же target_workers. По умолчанию "AUTO".
Возвращаемое значение
tf.data.Dataset, который считывает из службы tf.data.

© 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/versions/r2.9/api_docs/python/tf/data/experimental/service/from_dataset_id

Spec-Zone.ru

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