創建一個從 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。