set_distribution
函數keras.distribution.set_distribution(value)
將分散式設定為全域分散式設定。
參數
Distribution
實例。distribution
函數keras.distribution.distribution()
從全域環境中取得目前的分散式設定。
list_devices
函數keras.distribution.list_devices(device_type=None)
根據裝置類型,回傳所有可用的裝置。
注意:在分散式設定中,會回傳全域裝置。
參數
"cpu"
、"gpu"
或 "tpu"
其中之一。如果未提供 device_type
,預設為 "gpu"
或 "tpu"
(如果可用)。否則將回傳 "cpu"
裝置。回傳:可供分散式運算的可用裝置列表。
initialize
函數keras.distribution.initialize(
job_addresses=None, num_processes=None, process_id=None
)
初始化多主機/程序設定的分散式系統。
呼叫 initialize
會為在多主機 GPU 或 TPU 上執行準備後端。它應該在任何計算之前呼叫。
請注意,參數也可以透過環境變數注入,這樣可以更好地由啟動腳本在啟動時控制。對於某些也依賴環境變數來設定的後端,Keras 將正確地轉發它們。
參數
None
,後端會使用 TPU 環境變數找出它。您也可以透過環境變數 KERAS_DISTRIBUTION_JOB_ADDRESSES
設定此值。None
,後端會使用 TPU 環境變數找出它。您也可以透過環境變數 KERAS_DISTRIBUTION_NUM_PROCESSES
設定此值。0
到 num_processes - 1
之間。0
表示目前 Worker/程序是主/協調作業。您也可以透過環境變數 KERAS_DISTRIBUTION_PROCESS_ID
設定此值。假設有兩個 GPU 程序,程序 0 在位址 10.0.0.1:1234
執行,而程序 1 在位址 10.0.0.2:2345
執行。要設定這樣的叢集,您可以執行 - __ 在程序 0 上__
keras.distribute.initialize(
job_addresses="10.0.0.1:1234,10.0.0.2:2345",
num_processes=2,
process_id=0)
keras.distribute.initialize(
job_addresses="10.0.0.1:1234,10.0.0.2:2345",
num_processes=2,
process_id=1)
os.environ[
"KERAS_DISTRIBUTION_JOB_ADDRESSES"] = "10.0.0.1:1234,10.0.0.2:2345"
os.environ["KERAS_DISTRIBUTION_NUM_PROCESSES"] = "2"
os.environ["KERAS_DISTRIBUTION_PROCESS_ID"] = "0"
keras.distribute.initialize()
os.environ[
"KERAS_DISTRIBUTION_JOB_ADDRESSES"] = "10.0.0.1:1234,10.0.0.2:2345"
os.environ["KERAS_DISTRIBUTION_NUM_PROCESSES"] = "2"
os.environ["KERAS_DISTRIBUTION_PROCESS_ID"] = "1"
keras.distribute.initialize()
另請注意,對於 JAX 後端,job_addresses
可以進一步簡化為僅包含主/協調器位址,即 - __10.0.0.1
:1234__。