谷歌正式發(fā)布TensorFlow 1.5,究竟提升了哪些功能?
昨天,谷歌在 GitHub 上正式發(fā)布了 TensorFlow 的最新版本 1.5.0,并開源了其代碼。支持 CUDA 9 和 cuDNN 7 被認(rèn)為是本次更新的最重要部分。機(jī)器之心對這次更新的重大改變以及主要功能和提升進(jìn)行了編譯介紹,原文請見文中鏈接。
-
GitHub 地址:
https://github.com/tensorflow/tensorflow/releases/tag/v1.5.0 -
源代碼(zip):
https://github.com/tensorflow/tensorflow/archive/v1.5.0.zip -
源代碼(tar.gz):
https://github.com/tensorflow/tensorflow/archive/v1.5.0.tar.gz
1.5.0 正式版
重大更新
-
預(yù)構(gòu)建的二進(jìn)制文件現(xiàn)在是針對 CUDA 9 和 cuDNN 7 構(gòu)建的。
-
從版本 1.6 開始,我們的預(yù)構(gòu)建二進(jìn)制文件將使用 AVX 指令。這也許會(huì)破壞較舊 CPUs 上的 TF。
主要功能和提升
-
Eager execution:預(yù)覽版現(xiàn)在可用。
-
TensorFlow Lite:dev 預(yù)覽版現(xiàn)在可用。
-
支持 CUDA 9 和 cuDNN 7
-
加速線性代數(shù)(XLA):
-
添加 complex64 支持到 XLA 編譯器。
-
bfloat 支持現(xiàn)已添加到 XLA 架構(gòu)。
-
使 XLA 和 XLA 一起工作。
-
通過決定性執(zhí)行程序來生成 XLA 圖。
-
tf.contrib:
-
tf.contrib.distributions:
-
添加 tf.contrib.distributions.Autoregressive。
-
使 tf.contrib.distributions QuadratureCompound 類支持批處理。
-
從參數(shù)中推斷 tf.contrib.distributions.RelaxedOneHotCategorical dtype。
-
通過 quadrature_grid_and_prob vs quadrature_degree 使 tf.contrib.distributions 正交族參數(shù)化。
-
添加 auto_correlation 到 tf.contrib.distributions。
-
添加 tf.contrib.bayesflow.layers,一個(gè)概率(神經(jīng))層的集合。
-
添加 tf.contrib.bayesflow.halton_sequence。
-
添加 tf.contrib.data.make_saveable_from_iterator。
-
添加 tf.contrib.data.shuffle_and_repeat。
-
添加新的自定義轉(zhuǎn)換: tf.contrib.data.scan()。
-
tf.contrib.distributions.bijectors:
-
添加 tf.contrib.distributions.bijectors.MaskedAutoregressiveFlow。
-
添加 tf.contrib.distributions.bijectors.Permute。
-
添加 tf.contrib.distributions.bijectors.Gumbel。
-
添加 tf.contrib.distributions.bijectors.Reshape。
-
支持 Reshape bijector 中的 shape 推理(即,包含-1 的 shape)。
-
添加 streaming_precision_recall_at_equal_thresholds,一種計(jì)算流式精確度和時(shí)間、空間復(fù)雜度為 O(num_thresholds + size of predictions) 的調(diào)用的方法。
-
更改 RunConfig 默認(rèn)行為,不設(shè)置隨機(jī)種子,使隨機(jī)行為在分布式工作器上獨(dú)立地隨機(jī)。我們期待這可以普遍提高訓(xùn)練表現(xiàn)。依賴決定論的模型應(yīng)明確設(shè)置一個(gè)隨機(jī)種子。
-
通過 absl.flags 替換 tf.flags 的實(shí)現(xiàn)。
-
在 fp16 GEMM 中為 CUBLAS_TENSOR_OP_MATH 添加支持。
-
在 NVIDIA Tegra 計(jì)算卡上為 CUDA 添加支持。
Bug 修復(fù)與其他更新
文檔更新:
-
明確你只能在 64 位機(jī)上安裝 TensorFlow。
-
添加一個(gè)短文件解釋 Estimators 如何保存檢查點(diǎn)。
-
為由 tf2xla 橋支持的操作添加文檔。
-
修改 SpaceToDepth 和 DepthToSpace 文件中的小的書寫錯(cuò)誤。
-
更新 mfcc_mel_filterbank.h 和 mfcc.h 中的文檔命令,說明輸入域是幅度譜的平方,權(quán)重
-
是在線性幅度譜(輸入的 sqrt)上完成的。
-
修復(fù) tf.distributions.bijectors.Bijector 中的文檔字符串書寫錯(cuò)誤。
-
tf.assert_equal 不再引發(fā) ValueError。它現(xiàn)在引發(fā) InvalidArgumentError,如文檔所述。
-
更新「開始」文件和 API 介紹。
谷歌云存儲(chǔ) (GCS):
-
為 GCS 客戶端添加用戶空間 DNS 緩存。
-
為 GCS 文件系統(tǒng)自定義請求超時(shí)。
-
優(yōu)化 GCS 的文件系統(tǒng)緩存。
Bug 修復(fù)
-
修復(fù)之前出現(xiàn)的整數(shù)變量分區(qū)后變成錯(cuò)誤的 shape 的 bug。
-
修復(fù) Adadelta 的 CPU 和 GPU 實(shí)現(xiàn)的準(zhǔn)確度 bug。
-
修復(fù)當(dāng)導(dǎo)入到 scope 時(shí),import_meta_graph 處理分區(qū)變量時(shí)出現(xiàn)的 bug。警告:在以非空 import_scope 變量應(yīng)用 import_meta_graph 之后,這可能會(huì)破壞帶已保存分區(qū)變量圖的加載中的檢查點(diǎn)。
-
修復(fù)離線 debugger 中阻止查看事件的 bug。
-
添加 WorkerService.DeleteWorkerSession 方法到 gRPC 接口,修復(fù)內(nèi)存泄漏。確保你的主服務(wù)器和輔助服務(wù)器在相同版本的 TensorFlow 上運(yùn)行,以避免兼容性問題。
-
修復(fù) BlockLSTM cell 的 peephole 實(shí)現(xiàn)中的 bug。
-
通過重寫 log_det_jacobian 的 dtype 以在 TransformedDistribution 中匹配 log_prob。
-
確保 tf.distributions.Multinomial 不會(huì)在 log_prob 中下溢。在此之前,一個(gè)整數(shù)變量的所有分區(qū)會(huì)以非分區(qū)變量的 shape 進(jìn)行初始化;經(jīng)過修復(fù)之后,可以正確地初始化。
其它
-
添加必要的 shape 直到支持 bfloat16。
-
添加一種運(yùn)行 ops 的方式,在 MonitoredSession 中使用階躍函數(shù)。
-
添加 DenseFlipout 概率層(probabilistic layer)。
-
添加一種新的 flag:ignore_live_threads,可用于訓(xùn)練過程。如果將其設(shè)為 True,在成功完成訓(xùn)練之后,它會(huì)在拆除基礎(chǔ)建設(shè)時(shí)忽略仍在運(yùn)行的線程,而不會(huì)返回 RuntimeError。
-
重新標(biāo)準(zhǔn)化 DenseVariational,以作為其它概率層的更簡化模板。
-
tf.data 現(xiàn)在在數(shù)據(jù)集元素中支持 tf.SparseTensor。
-
可以進(jìn)行遍歷 Tensor 的計(jì)算。
-
允許 SparseSegmentReduction ops 擁有丟失的 segment IDs。
-
修改自定義導(dǎo)出策略以包含多維稀疏浮點(diǎn)數(shù)分裂(multidimensional sparse float
-
splits)。
-
由于 GPU 和 cuDNNv6 的支持,Conv2D、Conv2DBackpropInput、Conv2DBackpropFilter 現(xiàn)在支持任意的擴(kuò)張。
-
Estimator 現(xiàn)在支持 Dataset:input_fn 可以返回 Dataset 而不是 Tensors。
-
添加 Revblock,一個(gè)可逆殘差層的節(jié)省內(nèi)存的實(shí)現(xiàn)。
-
減少 BFCAllocator 的內(nèi)部碎片。
-
添加 cross_entropy 和 kl_divergence 到 tf.distributions.Distribution 中。
-
添加 tf.nn.softmax_cross_entropy_with_logits_v2,以允許標(biāo)簽的反向傳播。
-
GPU 后端現(xiàn)在使用 ptxas 以編譯生成的 PTX。
-
BufferAssignment 的協(xié)議緩存轉(zhuǎn)儲(chǔ)(protocol buffer dump)現(xiàn)在已確定。
-
改變 embedding op 以利用 DynamicStitch 的并行版本。
-
添加對稀疏多維特征列(sparse multidimensional feature columns)的支持。
-
加速僅有一個(gè)值的稀疏浮點(diǎn)數(shù)列(sparse float columns)的案例。
-
允許稀疏浮點(diǎn)數(shù)分裂(sparse float splits)以支持多價(jià)特征列(multivalent feature columns)。
-
添加 quantile 到 tf.distributions.TransformedDistribution。
-
在 GPU 上添加對 tf.depth_to_space 的 NCHW_VECT_C 支持。
-
在 GPU 上添加對 tf.space_to_depth 的 NCHW_VECT_C 支持。
API 變化
-
將 SqueezeDims 屬性在 C++ API 中重命名為 Axis,作為 Squeeze op。
-
Stream::BlockHostUntilDone 返回 Status,而不是布爾值。
-
Minor refactor:將 stats 文件從 stochastic 移動(dòng)到 common 并刪除 stochastic。