TensorFlow 2.9 釋出,支援 WSL2、預設啟用 oneDNN

2022-05-20 09:00:39

TensorFlow 是一個用於機器學習的端到端開源平臺。它有一個全面靈活的工具、庫和社群資源所組成的生態,讓開發人員輕鬆建立和部署由 ML 驅動的應用程式。TensorFlow 最初用於進行機器學習和深度神經網路研究。但該系統具有足夠的通用性,也適用於其他廣泛的領域。

TensorFlow 2.9 近日正式釋出,更新內容包括 oneDNN 的效能改進,以及 DTensor 的釋出,其中後者是一個用於模型分佈的 API,可以用來無縫地從資料並行遷移到模型並行。

TensorFlow 還對核心庫進行了改進,包括 Eigen 和 tf.function 的統一,以及對 Windows 的 WSL2 的支援。最後,新版本還為 tf.function retracingKeras Optimizers 釋出了新的實驗性 API。

改進 CPU 效能:預設啟用 oneDNN

TensorFlow 與英特爾合作,將 oneDNN 效能庫與 TensorFlow 整合在一起,以便在英特爾 CPU 上實現更好的效能。自 TensorFlow 2.5 以來,TensorFlow 對 oneDNN 有實驗性的支援,它可以提供高達 4 倍的效能改進。在 TensorFlow 2.9 中,在 Linux x86 上預設開啟了 oneDNN 優化,併為具有神經網路硬體功能的 CPU 開啟了優化,這些功能在英特爾 Cascade Lake 以及更新的 CPU 上都具備。

使用 DTensor 的模型並行

DTensor 是一個用於分散式模型處理的新的 TensorFlow API,它允許模型可以無縫地從資料並行遷移到基於單程式多資料(SPMD)的模型並行。

DTensor 的設計以下列原則為核心。

  • 一個與裝置無關的 API:這允許在 CPU、GPU 或 TPU 上使用相同的模型程式碼,包括跨裝置型別劃分的模型。
  • 多使用者端執行:移除協調器,讓每個任務驅動其本地連線的裝置,允許在不影響啟動時間的情況下擴充套件一個模型。
  • 傳統上,TensorFlow 的分散式模型程式碼是圍繞副本編寫的,但在 DTensor 中,模型程式碼是從全域性角度編寫的,每個副本的程式碼由 DTensor 執行時生成和執行。

tf.function 的 TraceType

新版本修改了 tf.function 回溯的方式,使其更加簡單、可預測和可設定。

tf.function 的所有引數都被分配了一個 tf.type.experimental.TraceType。自定義使用者類可以使用跟蹤協定( tf.types.experimental.SuppersTracingProtocol )宣告一個 TraceType。

對 WSL2 的支援

Windows Subsystem for Linux 讓開發者直接在 Windows 上執行 Linux 環境,而不需要傳統的虛擬機器器或雙啟動設定。TensorFlow 現在支援 WSL2,包括 GPU 加速。

確定性的行為

API tf.config.experimental.enable_op_determinism 使 TensorFlow 操作具有確定性。

確定性意味著,如果你用相同的輸入多次執行一個操作,該操作每次都會返回完全相同的輸出。這對於偵錯模型很有用,如果你用確定性從頭開始訓練你的模型幾次,你的模型權重每次都是一樣的。通常情況下,由於在操作中使用執行緒,可以以非確定性的順序新增浮點數,所以許多操作是非確定性的。

用 Keras 優化訓練

在 TensorFlow 2.9 中,釋出一個新的實驗版本的 Keras Optimizer API, tf.keras.optimizers.experimental。該 API 讓開發者可以更容易地客製化和擴充套件。

在未來的版本中, tf.keras.optimizers.experimental.Optimizer(和子類)將取代 tf.keras.optimizers.Optimizer(和子類),這意味著使用傳統的 Keras 優化器的工作流將自動切換到新的優化器。當前的 tf.keras.optimizers.* API 仍將可以通過 tf.keras.optimizers.legacy.* 存取。

更多詳情可檢視:

展開閱讀全文