tf.data.experimental.service.from_dataset_id
Создаёт набор данных, считывающий данные из службы tf.data.
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,
cross_trainer_cache=None,
target_workers='AUTO'
) -> tf.data.Dataset
Это полезно, когда один процесс регистрирует набор данных, а другой использует его. Если один и тот же процесс и регистрирует набор данных, и считывает из него данные, проще использовать 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.TypeSpecs элементов, выдаваемых набором данных. В настоящее время element_spec необходимо задавать явно, и он должен соответствовать набору данных, зарегистрированному под dataset_id. По умолчанию element_spec имеет значение None, чтобы в будущем можно было автоматически определять element_spec, запрашивая службу tf.data.
tf.data.experimental.service.distribute — это вспомогательный метод, объединяющий register_dataset и from_dataset_id в преобразование набора данных. Подробнее о работе from_dataset_id см. в документации по tf.data.experimental.service.distribute.
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> можно использовать для переопределения протокола по умолчанию. Если это кортеж, он должен иметь вид (protocol, address). |
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. |
cross_trainer_cache | (Необязательно.) Если предоставлен объект CrossTrainerCache, итерация по набору данных будет совместно использоваться одновременно работающими обучающими процессами. Подробнее см. на странице https://www.tensorflow.org/api_docs/python/tf/data/experimental/service#sharing_tfdata_service_with_concurrent_trainers. |
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/api_docs/python/tf/data/experimental/service/from_dataset_id