创建一个从 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_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
要读取的数据集的 id。当数据集注册到 tf.data 服务时,此 id 由register_dataset
返回。 -
element_spec
tf.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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。