创建一个从 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, target_workers='AUTO'
)参数
-
processing_modetf.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要读取的数据集的 id。当数据集注册到 tf.data 服务时,此 id 由register_dataset返回。 -
element_spectf.TypeSpec的嵌套结构,表示数据集生成的元素类型。此参数仅在 tf.function 中是必需的。使用tf.data.Dataset.element_spec获取给定数据集的元素规范。 -
job_name(可选。)作业的名称。如果提供,它必须是一个非空字符串。这个论点使得多个数据集共享同一个作业成为可能。默认行为是数据集创建匿名的专有作业。 -
consumer_index(可选。)从0到num_consumers范围内的消费者索引。必须与num_consumers一起指定。指定后,消费者将以严格的 round-robin 顺序从作业中读取,而不是默认的 first-come-first-served 顺序。 -
num_consumers(可选。)将从作业中消费的消费者数量。必须与consumer_index一起指定。指定后,消费者将以严格的 round-robin 顺序从作业中读取,而不是默认的 first-come-first-served 顺序。当指定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",仅从本地 in-processs tf.data 服务人员读取。"AUTO"适用于大多数情况,而用户可以指定其他目标。例如,"LOCAL"有助于避免 RPC 和数据复制,如果每个 TF 工作人员与 tf.data 服务工作人员位于同一位置。共享作业的使用者必须使用相同的target_workers。默认为"AUTO"。
返回
-
从 tf.data 服务读取的
tf.data.Dataset。
当数据集由一个进程注册,然后在另一个进程中使用时,这很有用。当同一个进程同时注册和读取数据集时,使用tf.data.experimental.service.distribute 会更简单。
在使用 from_dataset_id 之前,数据集必须已使用 tf.data.experimental.service.register_dataset 向 tf.data 服务注册。 register_dataset 返回已注册数据集的数据集 ID。那就是应该传递给 from_dataset_id 的 dataset_id 。
element_spec 参数表示数据集生成的元素的tf.TypeSpec。目前 element_spec 必须明确指定,并匹配在 dataset_id 下注册的数据集。 element_spec 默认为None,这样以后我们可以支持通过查询tf.data服务自动发现element_spec。
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]
相关用法
- Python tf.data.experimental.service.DispatchServer用法及代码示例
- Python tf.data.experimental.service.DispatchServer.start用法及代码示例
- Python tf.data.experimental.service.DispatchServer.join用法及代码示例
- Python tf.data.experimental.service.WorkerServer.join用法及代码示例
- Python tf.data.experimental.service.WorkerServer用法及代码示例
- Python tf.data.experimental.service.register_dataset用法及代码示例
- Python tf.data.experimental.service.distribute用法及代码示例
- Python tf.data.experimental.save用法及代码示例
- Python tf.data.experimental.snapshot用法及代码示例
- Python tf.data.experimental.shuffle_and_repeat用法及代码示例
- Python tf.data.experimental.sample_from_datasets用法及代码示例
- Python tf.data.experimental.RandomDataset.group_by_window用法及代码示例
- Python tf.data.experimental.SqlDataset.enumerate用法及代码示例
- Python tf.data.experimental.make_saveable_from_iterator用法及代码示例
- Python tf.data.experimental.SqlDataset.zip用法及代码示例
- Python tf.data.experimental.Counter用法及代码示例
- Python tf.data.experimental.SqlDataset.shard用法及代码示例
- Python tf.data.experimental.CsvDataset.window用法及代码示例
- Python tf.data.experimental.RandomDataset.cache用法及代码示例
- Python tf.data.experimental.SqlDataset.snapshot用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.data.experimental.service.from_dataset_id。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
