【必看】TensorFlow 2.4.0 候選版本釋出
近日,TensorFlow 2.4.0 候選版本最新發布,有哪些具體內容改進呢?趕緊一睹為快!
主要功能改進
tf.distribution
通過tf.distribution.experimental.ParameterServerStrategy
API 引入了對 Keras 模型非同步訓練實驗性支援。更多細節請參見下文。MultiWorkerMirroredStrategy
不再是一個實驗性 API,現在已進入穩定版本。針對命令執行失敗和其他錯誤進行了修復。請檢視具體教程,瞭解如何使用 Keras 進行多工並行訓練。- 對 tf.experimental.numpy 的新模組進行了實驗性支援,此 API 不僅與 NumPy 相容,更便於編寫 TF 程式,可參閱詳細指南瞭解更多資訊,更多細節請參見下文。
- 針對 Ampere 架構的 GPU 新增了 TensorFlow-32(簡稱TF32) 的支援,這是一種基於 Nvidia Ampere 的GPU模式,預設情況下將啟用。
- Keras Functional API 的內部重構已經完成,這次重構提高了構建 Functional 模型的可靠性、穩定性和效能。
- Keras 混合精度訓練的 API tf.keras.mixed_precision 已穩定,不再為實驗性支援。這允許在訓練過程中使用 16 位浮點數格式,在 GPU 上的效能提升高達 3 倍,在 TPU 的提升也高達 60 %。
- TF Profiler 現在支援使用取樣模式 API ,對多個工作程式進行效能分析。
- TFLite Profiler Android 版本現已推出。請參閱指南以瞭解更多資訊。
- TensorFlow pip 安裝包現已使用 CUDA11 和 cuDNN 8.0.2 構建。
重大改進
TF Core:
- C-API 的字串張量的位元組佈局已被更新,已與 TF Core/C++ 匹配,即
tensorflow::tstring/TF_TString
的連續陣列。 - C-API 函式
TF_StringDecode
、TF_StringEncode
和TF_StringEncodedSize
不再被使用,現已移除;關於 C 語言中的字串訪問/修改,請參見core/platform/ctstring.h
。 tensorflow.python
、tensorflow.core
和tensorflow.compiler
模組現在被隱藏。這些模組不再是 TensorFlow 可訪問 API 的一部分。tf.raw_ops.Max
和tf.raw_ops.Min
不再接受型別為tf.complex64
或tf.complex128
的輸入,因為這些操作對於複雜型別的行為沒有被明確定義。- 由於使用了 TensorFloat-32,某些 float32 操作在基於 Ampere 架構的 GPU 上以較低的精度執行,包括乘法和卷積。具體來說,這類運算的輸入從 23 位精度四捨五入到 10 位。這對於深度學習模型來說,在實踐中不太會造成問題。但在某些情況下,TensorFloat-32 (單精度浮點數值)也被用於 complex64 操作。
- 可以通過呼叫
config.experimental.enable_tensor_float_32_execution(False)
來禁用 TensorFloat-32 。 - 預設情況下,XLA:CPU 和 XLA:GPU 裝置不再註冊。如果你真的需要它們,請使用
TF_XLA_FLAGS=--tf_xla_enable_xla_devices
,但該標誌位也將在後續版本中刪除。
tf.keras:
compile()
中的steps_per_execution
引數已穩定,不再為實驗性支援,如果您傳遞的是experimental_steps_per_execution
,請在你的程式碼中重新命名為steps_per_execution
。這個引數控制了在呼叫fit()
時,每次呼叫tf.function
時要執行的批次數量。在單次tf.function
呼叫中執行多個批次可以極大地提高在 TPU 中或帶有大量 Python 計算的小型模型的效能。- 對 Keras Functional API 內部的重大重構可能會影響到以下程式碼:
○ 在檢查 Keras 符號輸入/輸出時,使用 isinstance(x, tf.Tensor)
而不是 tf.is_tensor
的程式碼,應該改用 tf.is_tensor
。
○ 過分依賴符號張量所附加的確切名稱的程式碼(例如,假設輸入的結尾為":0",將名稱作為唯一的識別符號,而不是使用tensor.ref()
等)。
○ 使用 get_concrete_function
直接跟蹤 Keras 符號輸入的程式碼,應該改成直接構建匹配的 tf.TensorSpecs
並跟蹤 TensorSpec
物件。
○ 依賴於 TensorFlow 操作轉換為操作層後所對應的確切數量和名稱的程式碼,可能需要更改。
○ 使用了tf.map_fn
/tf.cond
/tf.while_loop
/control flow 作為操作層的程式碼,且碰巧能在 TF 2.4 之前的版本工作的程式碼。現在將明確地不支援這些功能。在 TF 2.4 之前,將這些操作轉換為 Functional API 操作層是不可靠的,而且容易出現難以理解或無法定位的錯誤。
○ 直接對 Keras 符號值進行斷言操作的程式碼,如 tf.rank
這樣可根據輸入是靜態值或符號值而返回對應的型別的操作,現在這些操作將統一返回符號值。
○ 能夠直接洩露張量到計算圖以外的程式碼,在這個版本中將更易於導致洩露。
○ 嘗試直接計算 Keras 符號輸入/輸出的梯度的程式碼。現在可以使用 GradientTape ,來代替傳遞給已構建模型的實際張量。
○ 需要通過轉換後的操作層進行非常複雜的形狀操作才能工作的程式碼。Keras 符號形狀推理被證明是不夠的。
○ 試圖手動逐層遍歷 tf.keras.Model
的程式碼。它假設層中只有一個位置引數。單這個假設在 TF 2.4 之前也不成立,新版本中更容易引起問題。
○ 在構建模型之前需要手動輸入 keras.backend.get_graph()
的程式碼,現在已經不需要這麼做了。
○ 在呼叫 Functional API Keras 模型一開始便強制進行輸入形狀假釋的程式碼。這可能對一些使用者造成影響,如在 Functional 模型中建立 Input
物件時使用的形狀與傳遞給該模型的資料的形狀不匹配時。您可以通過使用正確形狀的資料呼叫模型,或者通過放寬Input
形狀假設來解決不匹配的問題(您可以將 shape 屬性設為 None
,將此作為軸(axis)以表示這是動態的),您也可以通過設定 model.input_spec = None
來完全禁止輸入檢查。
tf.data:
tf.data.experimental.service.DispatchServer
現在採用配置元組,而不是單個引數。用法更新為tf.data.experimental.service.DispatchServer(dispatcher_config)
。tf.data.experimental.service.WorkerServer
現在採用配置元組,而不是單個引數。用法更新為tf.data.experimental.service.WorkerServer(worker_config)
。
tf.distribute:
- 移除
tf.distribution.Strategy.experimental_make_numpy_dataset
。請使用tf.data.Dataset.from_tensor_slices
來代替。 - 將
tf.distribut.StrategyExtended.reduce_to
、tf.distribut.StrategyExtended.batch_reduce_to
、tf.distribut.ReplicaContext.all_reduce
中的experimental_hints
重新命名為options
。 - 將
tf.distribution.experimental.CollectiveHints
重新命名為tf.distribution.experimental.CommunicationOptions
。 - 將
tf.distribution.experimental.CollectiveCommunication
重新命名為tf.distribution.experimental.CommunicationImplementation
。 - 將
tf.distribut.Strategy.experimental_distribute_datasets_from_function
重新命名為distribute_datasets_from_function
,因為它不僅支援實驗環境。 - 刪除了
tf.distribut.Strategy.experimental_run_v2
方法,該方法在 TF 2.2 中已被廢棄。
tf.lite:
- 引入了
tf.quantization.quantize_and_dequantize_v2
,它更新了超過範圍的量化的梯度定義。要模擬tf.quantization.quantize_and_dequantize(...)
的 V1 行為,使用tf.grad_pass_through(tf.quantization.quantize_and_dequantize_v2)(...)
。
瞭解更多,請點選連結訪問 GitHub。
如果你對本文中提到的一些資訊存在疑問,歡迎移步“問答”版塊發帖提問。你的問題有機會得到 CSDN 百大熱門技術博主、資深社群作者或者 TensorFlow 資深開發者的解答哦!同時,我們也歡迎你積極地在這個版塊裡,回答其他小夥伴提出的問題,成為 CSDN 社群貢獻者,邁出出道第一步!馬上開始討論吧!
想了解更多產品釋出和更新資訊?掃碼關注TensorFlow官方微信公眾號(TensorFlow_official),產品更新、課程教學、技術實踐、應用例項等精彩內容一網打盡!
相關文章
- MAUI候選版本3釋出啦UI
- 雲原生週刊:Argo CD v2.12 釋出候選版本 | 2024.06.24Go
- Linus Torvalds釋出支援暢玩遊戲的Linux 5.16核心候選版本遊戲Linux
- Nacos 2.4.0 正式釋出,帶來重磅更新!
- .NET MAUI釋出了期待已久的候選版本(RC1)UI
- 在嗎?看看MAUI候選版本3!UI
- TensorFlow 1.11.0 已正式釋出!
- Javalin2.4.0釋出,Kotlin/Java輕量級Web框架JavaKotlinWeb框架
- 什麼時候釋出
- TensorFlow 2.0 Alpha 版釋出啦!
- 新版什麼時候釋出?
- CityPicker城市選擇器v4.0.0版本釋出
- jQuery 釋出 3.4.0 版本jQuery
- Rust 1.83.0 版本釋出Rust
- Debian 12 到底啥時候釋出?
- Spring Boot 2.4.0 釋出,配置檔案重大調整,不要亂升級!!Spring Boot
- Windows Server 2008 RC候選版要釋出了WindowsServer
- SOA新版本釋出
- openGauss 2.0.0 版本正式釋出
- [版本釋出]ThinkOX V1正式版釋出【版本號V1.0.2】
- Apache Doris 1.2.4 Release 版本正式釋出|版本通告Apache
- Scapy 2.4.0 釋出,基於 Python 的互動式資料包處理庫Python
- 優麒麟 14.04.6 LTS 版本釋出!
- Laravel-admin 釋出 1.6.10 版本Laravel
- Apache Doris 2.0.5 版本正式釋出Apache
- Apache Doris 2.0.5 版本正式釋出!Apache
- Apache Doris 2.0.4 版本正式釋出Apache
- Apache Doris 2.0.3 版本正式釋出Apache
- Android Studio 4.1 Canary 版本釋出Android
- yiigo 3.x 版本釋出Go
- Swoftcli: 釋出 v0.1.5 版本
- yiigo 4.x 版本釋出Go
- Laravel-admin 釋出 1.7.3 版本Laravel
- Kali Linux釋出2020.1a版本Linux
- Laravel-admin 釋出 1.7.0 版本Laravel
- Laravel-admin 釋出 1.7.2 版本Laravel
- Rust 1.82.0版本釋出Rust
- Apache DolphinScheduler 3.2.2 版本正式釋出!Apache