主要功能改進(jìn)
tf.distribution 通過(guò)tf.distribution.experimental.ParameterServerStrategy API 引入了對(duì) Keras 模型異步訓(xùn)練實(shí)驗(yàn)性支持。更多細(xì)節(jié)請(qǐng)參見(jiàn)下文。
MultiWorkerMirroredStrategy不再是一個(gè)實(shí)驗(yàn)性 API,現(xiàn)在已進(jìn)入穩(wěn)定版本。針對(duì)命令執(zhí)行失敗和其他錯(cuò)誤進(jìn)行了修復(fù)。請(qǐng)查看具體教程,了解如何使用 Keras 進(jìn)行多任務(wù)并行訓(xùn)練。
對(duì) tf.experimental.numpy 的新模塊進(jìn)行了實(shí)驗(yàn)性支持,此 API 不僅與NumPy 兼容,更便于編寫(xiě) TF 程序,可參閱詳細(xì)指南了解更多信息,更多細(xì)節(jié)請(qǐng)參見(jiàn)下文。
針對(duì) Ampere 架構(gòu)的 GPU 添加了 TensorFlow-32(簡(jiǎn)稱(chēng)TF32) 的支持,這是一種基于 Nvidia Ampere 的GPU模式,默認(rèn)情況下將啟用。
Keras Functional API 的內(nèi)部重構(gòu)已經(jīng)完成,這次重構(gòu)提高了構(gòu)建 Functional 模型的可靠性、穩(wěn)定性和性能。
Keras 混合精度訓(xùn)練的 API tf.keras.mixed_precision 已穩(wěn)定,不再為實(shí)驗(yàn)性支持。這允許在訓(xùn)練過(guò)程中使用 16 位浮點(diǎn)數(shù)格式,在 GPU 上的性能提升高達(dá) 3 倍,在 TPU 的提升也高達(dá) 60 %。
TF Profiler 現(xiàn)在支持使用采樣模式 API ,對(duì)多個(gè)工作進(jìn)程進(jìn)行性能分析。
TFLite Profiler Android 版本現(xiàn)已推出。請(qǐng)參閱指南以了解更多信息。
TensorFlow pip 安裝包現(xiàn)已使用 CUDA11 和 cuDNN 8.0.2構(gòu)建。
重大改進(jìn)
TF Core
C-API 的字符串張量的字節(jié)布局已被更新,已與 TF Core/C++ 匹配,即 tensorflow::tstring/TF_TString的連續(xù)數(shù)組。
C-API 函數(shù) TF_StringDecode、TF_StringEncode 和 TF_StringEncodedSize 不再被使用,現(xiàn)已移除;關(guān)于 C 語(yǔ)言中的字符串訪問(wèn)/修改,請(qǐng)參見(jiàn)core/platform/ctstring.h。
tensorflow.python、tensorflow.core和tensorflow.compiler 模塊現(xiàn)在被隱藏。這些模塊不再是 TensorFlow 可訪問(wèn) API 的一部分。
tf.raw_ops.Max 和 tf.raw_ops.Min 不再接受類(lèi)型為tf.complex64 或 tf.complex128 的輸入,因?yàn)檫@些操作對(duì)于復(fù)雜類(lèi)型的行為沒(méi)有被明確定義。
由于使用了 TensorFloat-32,某些 float32 操作在基于 Ampere 架構(gòu)的 GPU 上以較低的精度運(yùn)行,包括乘法和卷積。具體來(lái)說(shuō),這類(lèi)運(yùn)算的輸入從 23 位精度四舍五入到 10 位。這對(duì)于深度學(xué)習(xí)模型來(lái)說(shuō),在實(shí)踐中不太會(huì)造成問(wèn)題。但在某些情況下,TensorFloat-32 (單精度浮點(diǎn)數(shù)值)也被用于 complex64 操作??梢酝ㄟ^(guò)調(diào)用config.experimental.enable_tensor_float_32_execution(False) 來(lái)禁用 TensorFloat-32 。
默認(rèn)情況下,XLA:CPU 和 XLA:GPU 設(shè)備不再注冊(cè)。如果你真的需要它們,請(qǐng)使用 TF_XLA_FLAGS=--tf_xla_enable_xla_devices,但該標(biāo)志位也將在后續(xù)版本中刪除。
tf.keras:
compile() 中的 steps_per_execution 參數(shù)已穩(wěn)定,不再為實(shí)驗(yàn)性支持,如果您傳遞的是experimental_steps_per_execution,請(qǐng)?jiān)谀愕拇a中重新命名為 steps_per_execution 。這個(gè)參數(shù)控制了在調(diào)用 fit() 時(shí),每次調(diào)用 tf.function 時(shí)要運(yùn)行的批次數(shù)量。在單次 tf.function 調(diào)用中運(yùn)行多個(gè)批次可以極大地提高在 TPU 中或帶有大量 Python 計(jì)算的小型模型的性能。
對(duì) Keras Functional API 內(nèi)部的重大重構(gòu)可能會(huì)影響到以下代碼:
在檢查 Keras 符號(hào)輸入/輸出時(shí),使用isinstance(x, tf.Tensor) 而不是 tf.is_tensor的代碼,應(yīng)該改用 tf.is_tensor。
過(guò)分依賴(lài)符號(hào)張量所附加的確切名稱(chēng)的代碼(例如,假設(shè)輸入的結(jié)尾為":0",將名稱(chēng)作為唯一的標(biāo)識(shí)符,而不是使用tensor.ref() 等)。
使用 get_concrete_function 直接跟蹤 Keras 符號(hào)輸入的代碼,應(yīng)該改成直接構(gòu)建匹配的 tf.TensorSpecs 并跟蹤TensorSpec對(duì)象。
依賴(lài)于 TensorFlow 操作轉(zhuǎn)換為操作層后所對(duì)應(yīng)的確切數(shù)量和名稱(chēng)的代碼,可能需要更改。
使用了tf.map_fn/tf.cond/tf.while_loop/control flow 作為操作層的代碼,且碰巧能在 TF 2.4 之前的版本工作的代碼?,F(xiàn)在將明確地不支持這些功能。在 TF 2.4 之前,將這些操作轉(zhuǎn)換為 Functional API 操作層是不可靠的,而且容易出現(xiàn)難以理解或無(wú)法定位的錯(cuò)誤。
直接對(duì) Keras 符號(hào)值進(jìn)行斷言操作的代碼,如 tf.rank 這樣可根據(jù)輸入是靜態(tài)值或符號(hào)值而返回對(duì)應(yīng)的類(lèi)型的操作,現(xiàn)在這些操作將統(tǒng)一返回符號(hào)值。
能夠直接泄露張量到計(jì)算圖以外的代碼,在這個(gè)版本中將更易于導(dǎo)致泄露。
嘗試直接計(jì)算 Keras 符號(hào)輸入/輸出的梯度的代碼?,F(xiàn)在可以使用 GradientTape ,來(lái)代替?zhèn)鬟f給已構(gòu)建模型的實(shí)際張量。
需要通過(guò)轉(zhuǎn)換后的操作層進(jìn)行非常復(fù)雜的形狀操作才能工作的代碼。Keras 符號(hào)形狀推理被證明是不夠的。
試圖手動(dòng)逐層遍歷 tf.keras.Model 的代碼。它假設(shè)層中只有一個(gè)位置參數(shù)。單這個(gè)假設(shè)在 TF 2.4 之前也不成立,新版本中更容易引起問(wèn)題。
在構(gòu)建模型之前需要手動(dòng)輸入keras.backend.get_graph() 的代碼,現(xiàn)在已經(jīng)不需要這么做了。
在調(diào)用 Functional API Keras 模型一開(kāi)始便強(qiáng)制進(jìn)行輸入形狀假釋的代碼。這可能對(duì)一些用戶造成影響,如 在 Functional 模型中創(chuàng)建 Input 對(duì)象時(shí)使用的形狀與傳遞給該模型的數(shù)據(jù)的形狀不匹配時(shí)。您可以通過(guò)使用正確形狀的數(shù)據(jù)調(diào)用模型,或者通過(guò)放寬 Input 形狀假設(shè)來(lái)解決不匹配的問(wèn)題(您可以將 shape 屬性設(shè)為 None ,將此作為軸(axis)以表示這是動(dòng)態(tài)的),您也可以通過(guò)設(shè)置 model.input_spec = None 來(lái)完全禁止輸入檢查。
tf.data:
tf.data.experimental.service.DispatchServer 現(xiàn)在采用配置元組而不是單個(gè)參數(shù)。用法更新為 tf.data.experimental.service.DispatchServer(dispatcher_config)。
tf.data.experimental.service.WorkerServer 現(xiàn)在采用配置元組,而不是單個(gè)參數(shù)。用法更新為 tf.data.experimental.service.WorkerServer(worker_config)。
tf.distribute:
移除 tf.distribution.Strategy.experimental_make_numpy_dataset。請(qǐng)使用 tf.data.Dataset.from_tensor_slices 來(lái)代替。
將 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,因?yàn)樗粌H支持實(shí)驗(yàn)環(huán)境。
刪除了 tf.distribut.Strategy.experimental_run_v2 方法,該方法在 TF 2.2 中已被廢棄。
tf.lite:
引入了 tf.quantization.quantize_and_dequantize_v2,它更新了超過(guò)范圍的量化的梯度定義。要模擬tf.quantization.quantize_and_dequantize(...)的 V1 行為,使用tf.grad_pass_through(tf.quantization.quantize_and_dequantize_v2)(...)。
如果您想詳細(xì)了解 本文提及 的相關(guān)內(nèi)容,請(qǐng)參閱以下文檔。這些文檔深入探討了這篇文章中提及的許多主題:
使用 Keras 進(jìn)行多任務(wù)并行訓(xùn)練
https://tensorflow.google.cn/tutorials/distribute/multi_worker_with_keras
tf.experimental.numpy
https://tensorflow.google.cn/api_docs/python/tf/experimental/numpy
詳細(xì)指南
https://tensorflow.google.cn/guide/tf_numpy
tf.keras.mixed_precision
https://tensorflow.google.cn/api_docs/python/tf/keras/mixed_precision?version=nightly
采樣模式 API
https://tensorflow.google.cn/guide/profiler#profiling_apis
指南
https://tensorflow.google.cn/lite/performance/measurement#trace_tensorflow_lite_internals_in_android
TensorFloat-32
https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/
責(zé)任編輯:xj
原文標(biāo)題:TensorFlow 2.4.0 候選版本發(fā)布
文章出處:【微信公眾號(hào):TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
API
+關(guān)注
關(guān)注
2文章
1624瀏覽量
64076 -
GitHub
+關(guān)注
關(guān)注
3文章
483瀏覽量
17702 -
tensorflow
+關(guān)注
關(guān)注
13文章
330瀏覽量
61188
原文標(biāo)題:TensorFlow 2.4.0 候選版本發(fā)布
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
直流負(fù)載箱的主要功能有哪些?
繼電器的主要功能與應(yīng)用
變頻電源的主要功能及特點(diǎn)
畫(huà)面分割器的主要功能
負(fù)載管理器的主要功能
數(shù)字化智能工廠的主要功能組成

自動(dòng)調(diào)壓器的主要功能有哪些
漏洞掃描的主要功能是什么
直流負(fù)載箱的主要功能有哪些?
電子地圖的主要功能與應(yīng)用

評(píng)論