Keras 3 API 文件 / 多裝置分散式 / 分散式工具

分散式工具

[原始碼]

set_distribution 函數

keras.distribution.set_distribution(value)

將分散式設定為全域分散式設定。

參數

  • value: 一個 Distribution 實例。

[原始碼]

distribution 函數

keras.distribution.distribution()

從全域環境中取得目前的分散式設定。


[原始碼]

list_devices 函數

keras.distribution.list_devices(device_type=None)

根據裝置類型,回傳所有可用的裝置。

注意:在分散式設定中,會回傳全域裝置。

參數

  • device_type: 字串,為 "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 將正確地轉發它們。

參數

  • job_addresses: 字串。以逗號分隔的所有將形成整個計算叢集的作業的 IP 位址。請注意,對於 JAX 後端,只需要作業 0 (協調器) 的位址。對於某些執行階段 (如雲端 TPU),此值可以為 None,後端會使用 TPU 環境變數找出它。您也可以透過環境變數 KERAS_DISTRIBUTION_JOB_ADDRESSES 設定此值。
  • num_processes: 整數。將形成整個計算叢集的 Worker/程序數量。對於某些執行階段 (如雲端 TPU),此值可以為 None,後端會使用 TPU 環境變數找出它。您也可以透過環境變數 KERAS_DISTRIBUTION_NUM_PROCESSES 設定此值。
  • process_id: 整數。目前 Worker/程序的 ID 號碼。該值應介於 0num_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)
  • __ 在程序 1 上__
keras.distribute.initialize(
  job_addresses="10.0.0.1:1234,10.0.0.2:2345",
  num_processes=2,
  process_id=1)
  • __ 或透過環境變數__
  • 在程序 0 上:
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()
  • __ 在程序 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"] = "1"
keras.distribute.initialize()

另請注意,對於 JAX 後端,job_addresses 可以進一步簡化為僅包含主/協調器位址,即 - __10.0.0.1:1234__。