TensorFlow 2.8.0正式上線(xiàn),修復(fù)眾多Bug,發(fā)布50多個(gè)漏洞補(bǔ)丁
近日 TensorFlow 官方發(fā)布了 2.8.0 正式版,距離上次 2.7 版本的更新過(guò)去沒(méi)多久,新版本提供了更多的 bug 修復(fù)和功能改進(jìn),此外新版本還針對(duì)漏洞發(fā)布了補(bǔ)丁。
對(duì)于 TensorFlow 2.8.0 的上線(xiàn),網(wǎng)友也紛紛感嘆,這次的 Bug 修復(fù)也太棒了!
不過(guò)也有網(wǎng)友已經(jīng)迫不及待的期待 TensorFlow 3.0 的到來(lái),并表示 TensorFlow 1 到 TensorFlow 2 是一個(gè)巨大的飛躍,將來(lái) 2 到 3 又會(huì)有哪些亮眼的表現(xiàn)呢?
眾所周知,TensorFlow 由谷歌開(kāi)發(fā),最初版本可追溯到 2015 年開(kāi)源的 TensorFlow0.1,之后發(fā)展穩(wěn)定,擁有強(qiáng)大的用戶(hù)群體,成為最受歡迎的深度學(xué)習(xí)框架。但是用戶(hù)在使用時(shí),也暴露了 TensorFlow 缺點(diǎn),例如 API 穩(wěn)定性不足、靜態(tài)計(jì)算圖編程復(fù)雜等缺陷。因此在 TensorFlow2.0 版本,谷歌將 Keras 納入進(jìn)來(lái),成為 tf.keras,到目前為止,TensorFlow 已經(jīng)更新到 2.8 版本,那么新版本有哪些重要的改進(jìn)呢?
TensorFlow 2.8.0 主要功能和改進(jìn)
在 tf.lite 中,增加了 TFLite 內(nèi)置 op 支持以下功能:
- tf.raw_ops.Bucketize op 可在 CPU 上操作;
- tf.where op 可用于數(shù)據(jù)類(lèi)型 tf.int32、tf.uint32、tf.int8、tf.uint8、tf.int64;
- tf.random.normal op 用于在 CPU 上輸出數(shù)據(jù)類(lèi)型 tf.float32;
- tf.random.uniform op 用于在 CPU 上輸出數(shù)據(jù)類(lèi)型 tf.float32;
- f.random.categorical op 用于在 CPU 上的輸出數(shù)據(jù)類(lèi)型 tf.int64。
tensorflow.experimental.tensorrt:
- Conversion_params 在 TrtGraphConverterV2 中被棄用,現(xiàn)在可以支持參數(shù) max_workspace_size_bytes、precision_mode、minimum_segment_size、maximum_cached_engines、use_calibration 和 allow_build_at_runtime;
- 在 TrtGraphConverterV2 中的 .save () 函數(shù)中添加了一個(gè)名為 save_gpu_specific_engines 的新參數(shù)。當(dāng)為 False 時(shí),.save () 函數(shù)不會(huì)保存任何已構(gòu)建的 TRT 引擎;如果為 True(默認(rèn)),則保留原始行為;
- TrtGraphConverterV2 提供了一個(gè)名為 .summary () 的新 API。它顯示了每個(gè) TRTEngineOp 及其輸入和輸出的形狀和 dtype,并提供了詳細(xì)版本摘要。
tf.tpu.experimental.embedding:
- tf.tpu.experimental.embedding.FeatureConfig 增加了一個(gè)額外的參數(shù) output_shape,它可以指定特征輸出激活的形狀;
- tf.tpu.experimental.embedding.TPUEmbedding 現(xiàn)在具有與 tf.tpu.experimental.embedding.serving_embedding_lookup 相同的功能,它可以使用任意等級(jí)密集和稀疏的張量。對(duì)于不規(guī)則張量,盡管輸入張量仍然是 2 級(jí),但現(xiàn)在可以通過(guò)在特征配置中指定輸出形狀或通過(guò) build 方法來(lái)激活 2 級(jí)或更高級(jí)別。
添加 tf.config.experimental.enable_op_determinism ,這使得 TensorFlow ops 以性能為代價(jià)可以確定性地運(yùn)行。替換 TF_DETERMINISTIC_OPS 環(huán)境變量。
(自 TF 2.7 起)向 TensorFlow Profiler 添加 PluggableDevice 支持。
Bug 修復(fù)和其他改進(jìn)
tf.data:
- 如果用戶(hù)未禁用,現(xiàn)在優(yōu)化 parallel_batch 現(xiàn)在成為默認(rèn)值,這樣可以并行復(fù)制批處理元素;
- 添加了 TensorSliceDataset,用于識(shí)別和處理文件輸入。
tf.lite:
- 為 Java API 的序列化添加 GPU 委托支持,當(dāng) OpenCL 可用時(shí),這將初始化時(shí)間提高了 90%;
- 棄用 Interpreter::SetNumThreads,支持 InterpreterBuilder::SetNumThreads。
tf.keras
- tf.random.Generator 用于 keras 初始化和所有的 RNG 代碼;
- TextVectorization 增加了額外的 standardize 和 split 模式:standardize="lower" 轉(zhuǎn)化為小寫(xiě)字母輸入;standardize="string_punctuation" 刪除所有標(biāo)點(diǎn)符號(hào);Split ="character" 將對(duì)每個(gè) unicode 字符進(jìn)行拆分。
增加 GPU 實(shí)現(xiàn):
- (自 2.7 版本開(kāi)始) tf.math.segment_mean
- (自 2.7 版本開(kāi)始) tf.math.segment_prod
- (自 2.7 版本開(kāi)始) tf.math.segment_sum
TensorFlow 已在適用于 GPU 和 CPU 的 Windows Subsystem for Linux 2(又名 WSL 2)上得到驗(yàn)證。
此外,TensorFlow 2.8.0 在安全方面進(jìn)行了一些修正,包括修正了執(zhí)行卷積運(yùn)算時(shí)浮點(diǎn)數(shù)被 0 除的問(wèn)題:CVE-2022-21725;修正了 Dequantize 形狀推斷中的整數(shù)溢出問(wèn)題:CVE-2022-21727;修正了 ConcatV2 形狀推斷中的類(lèi)型混淆問(wèn)題:CVE-2022-21731 等。
更多內(nèi)容,請(qǐng)參考:https://github.com/tensorflow/tensorflow/releases/tag/v2.8.0?linkId=8031153