異步 multi-worker 參數服務器 tf.distribute 策略。
繼承自:Strategy
用法
tf.compat.v1.distribute.experimental.ParameterServerStrategy(
cluster_resolver=None
)
參數
-
cluster_resolver
可選的tf.distribute.cluster_resolver.ClusterResolver
對象。默認為tf.distribute.cluster_resolver.TFConfigClusterResolver
。
屬性
-
cluster_resolver
返回與此策略關聯的集群解析器。一般來說,當使用multi-worker
tf.distribute
策略如tf.distribute.experimental.MultiWorkerMirroredStrategy
或tf.distribute.TPUStrategy()
時,有一個tf.distribute.cluster_resolver.ClusterResolver
與所使用的策略相關聯,並且這樣的實例由該屬性返回。打算擁有關聯
tf.distribute.cluster_resolver.ClusterResolver
的策略必須設置相關屬性,或覆蓋此屬性;否則,默認返回None
。這些策略還應提供有關此屬性返回的內容的信息。Single-worker 策略通常沒有
tf.distribute.cluster_resolver.ClusterResolver
,在這些情況下,此屬性將返回None
。當用戶需要訪問集群規範、任務類型或任務 ID 等信息時,
tf.distribute.cluster_resolver.ClusterResolver
可能很有用。例如,os.environ['TF_CONFIG'] = json.dumps({ 'cluster':{ 'worker':["localhost:12345", "localhost:23456"], 'ps':["localhost:34567"] }, 'task':{'type':'worker', 'index':0} }) # This implicitly uses TF_CONFIG for the cluster and current task info. strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy() ... if strategy.cluster_resolver.task_type == 'worker': # Perform something that's only applicable on workers. Since we set this # as a worker above, this block will run on this particular instance. elif strategy.cluster_resolver.task_type == 'ps': # Perform something that's only applicable on parameter servers. Since we # set this as a worker above, this block will not run on this particular # instance.
有關詳細信息,請參閱
tf.distribute.cluster_resolver.ClusterResolver
的 API 文檔字符串。 -
extended
tf.distribute.StrategyExtended
與其他方法。 -
num_replicas_in_sync
返回聚合梯度的副本數。
該策略需要兩個角色:workers 和參數服務器。變量和對這些變量的更新將分配給參數服務器,其他操作分配給工作人員。
當每個工作人員擁有多個 GPU 時,操作將在所有 GPU 上複製。即使操作可以被複製,變量也不會被複製,並且每個工作人員共享一個共同的視圖,用於將變量分配給哪個參數服務器。
默認情況下,它使用TFConfigClusterResolver
來檢測multi-worker 訓練的配置。這需要 'TF_CONFIG' 環境變量,並且 'TF_CONFIG' 必須具有集群規範。
此類假定每個工作人員都獨立運行相同的代碼,但參數服務器運行的是標準服務器。這意味著雖然每個工作人員將在所有 GPU 上同步計算單個梯度更新,但工作人員之間的更新是異步進行的。僅在第一個副本上發生的操作(例如遞增全局步驟)將在每個工作人員的第一個副本上發生。
即使隻有 CPU 或一個 GPU,對於可能跨副本(即多個 GPU)複製的任何操作,預計都會調用 call_for_each_replica(fn, ...)
。定義 fn
時,需要格外小心:
1) 一般不建議在策略的範圍下開設備範圍。設備範圍(即調用 tf.device
)將與設備合並或覆蓋以進行操作,但不會更改設備的變量。
2) 也不建議在策略範圍下打開托管範圍(即調用tf.compat.v1.colocate_with
)。對於並置變量,請改用strategy.extended.colocate_vars_with
。操作的托管可能會產生設備分配衝突。
注意:此策略僅適用於 Estimator API。創建 RunConfig
時,將此策略的實例傳遞給 experimental_distribute
參數。然後,此RunConfig
實例應傳遞給調用train_and_evaluate
的Estimator
實例。
例如:
strategy = tf.distribute.experimental.ParameterServerStrategy()
run_config = tf.estimator.RunConfig(
experimental_distribute.train_distribute=strategy)
estimator = tf.estimator.Estimator(config=run_config)
tf.estimator.train_and_evaluate(estimator,...)
相關用法
- Python tf.compat.v1.distribute.experimental.ParameterServerStrategy.experimental_make_numpy_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.ParameterServerStrategy.experimental_distribute_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.ParameterServerStrategy.reduce用法及代碼示例
- Python tf.compat.v1.distribute.experimental.ParameterServerStrategy.make_input_fn_iterator用法及代碼示例
- Python tf.compat.v1.distribute.experimental.ParameterServerStrategy.scope用法及代碼示例
- Python tf.compat.v1.distribute.experimental.ParameterServerStrategy.run用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.experimental_distribute_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.experimental_make_numpy_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy.make_input_fn_iterator用法及代碼示例
- Python tf.compat.v1.distribute.experimental.MultiWorkerMirroredStrategy.reduce用法及代碼示例
- Python tf.compat.v1.distribute.experimental.MultiWorkerMirroredStrategy.experimental_make_numpy_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.scope用法及代碼示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy.run用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy用法及代碼示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy.experimental_distribute_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.reduce用法及代碼示例
- Python tf.compat.v1.distribute.experimental.MultiWorkerMirroredStrategy用法及代碼示例
- Python tf.compat.v1.distribute.experimental.MultiWorkerMirroredStrategy.run用法及代碼示例
- Python tf.compat.v1.distribute.experimental.CentralStorageStrategy.reduce用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.distribute.experimental.ParameterServerStrategy。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。