TensorFlow正式发布1.5.0,使Volta GPUs/FP16上的训练速度翻倍

电子说

1.3w人已加入

描述

TensorFlow今天正式发布了1.5.0版本,支持CUDA 9和cuDNN 7,进一步提速。并且,从1.6版本开始,预编译二进制文件将使用AVX指令,这可能会破坏老式CPU上的TF。

刚刚,TensorFlow发布了1.5.0正式版,很多人都期待已久,最重大的改动是支持CUDA 9和cuDNN 7,这承诺将使Volta GPUs/FP16上的训练速度翻倍。

此外,Eager execution预览版可用,也将吸引不少初学者。

下面是这次更新的重大变动及错误修复。

cpu

重大变动

现在预编译的二进制文件是针对CUDA 9和cuDNN 7构建的。

从1.6版本开始,预编译二进制文件将使用AVX指令。这可能会破坏老式CPU上的TF。

主要特点和改进

Eager execution

预览版现在可用。

TensorFlow Lite

dev预览现在可用。

提供CUDA 9和cuDNN 7支持。

加速线性代数(XLA):

将complex64支持添加到XLA编译器。

bfloat支持现在被添加到XLA基础设施。

使ClusterSpec propagation与XLA设备一起工作。

使用决定性执行程序来生成XLA图。

tf.contrib:

tf.contrib.distributions:

添加tf.contrib.distributions.Autoregressive。

使tf.contrib.distributions QuadratureCompound类支持批处理

从参数中推断tf.contrib.distributions.RelaxedOneHotCategorical dtype。

使tf.contrib.distributions正交族参数化为quadrature_grid_and_prob vs quadrature_degree。

auto_correlation添加到tf.contrib.distributions

添加tf.contrib.bayesflow.layers,一个概率(神经)层的集合。

添加tf.contrib.bayesflow.halton_sequence。

添加tf.contrib.data.make_saveable_from_iterator。

添加tf.contrib.data.shuffle_and_repeat。

添加新的自定义转换: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。

支持形状推理(即,包含-1的形状)在Reshape bijector。

添加streaming_precision_recall_at_equal_thresholds,streaming精度计算方法和 O(num_thresholds +预测的大小)时间和空间的复杂性。

更改RunConfig默认行为,不设置随机种子,使得随机行为在分布式Worker上独立随机。期待这一点普遍提高训练效果。依靠determinism的模型应明确设置一个随机种子。

用absl.flags取代了tf.flags的实现。

在fp16 GEMM中添加对CUBLAS_TENSOR_OP_MATH的支持

在NVIDIA Tegra设备上添加对CUDA的支持

错误修复和其他更改

文档更新:

说明只能在64位机器上安装TensorFlow。

添加了一个简短的文档,解释了Estimators如何保存检查点。

为tf2xla网桥支持的操作添加文档。

修复SpaceToDepth和DepthToSpace文档中的小错别字。

在mfcc_mel_filterbank.h和mfcc.h中更新了文档注释,说明输入域是幅度谱的平方,权重是在线性幅度谱(输入的平方)上完成的。

更改tf.contrib.distributions docstring示例以使用tfd别名,而不是ds,bs。

修复tf.distributions.bijectors.Bijector中的文档字符串错别字。

tf.assert_equal不再引发ValueError。现在提出InvalidArgumentError。

更新入门文档和API介绍。

Google云端存储(GCS):

为GCS客户端添加用户空间DNS缓存。

为GCS文件系统定制请求超时。

改进GCS文件系统缓存。

Bug修复:

修正分区整型变量得到错误形状的问题。

修正Adadelta的CPU和GPU实现中的correctness bug。

修复import_meta_graph在处理分区变量时的错误。警告:这可能会破坏使用带有非空的import_scope参数的import_meta_graph后保存的分区变量的图形加载检查点。

修复离线调试器中阻止查看事件的错误。

将WorkerService.DeleteWorkerSession方法添加到gRPC接口来修复内存泄漏。确保主服务器和工作服务器运行相同版本的TensorFlow,以避免兼容性问题。

修复BlockLSTM单元的窥视孔peephole实现中的bug。

通过将dtype的log_det_jacobian转换为与TransformedDistribution中的log_prob匹配来修复bug。

修复import_meta_graph在处理分区变量时的错误,确保tf.distributions.Multinomial不会在log_prob中下溢。在这个变化之前,整型变量的所有分区都用未分区变量的形状初始化; 在这个改变之后他们被正确地初始化。

其他

为bfloat16添加必要的形状util支持。

添加一个方法来使用MonitoredSession的step函数运行ops。

添加DenseFlipout概率层。

训练时有一个新的标志ignore_live_threads。如果设置为True,它会在成功完成训练后,忽略在拆除基础架构时仍然运行的线程,而不是抛出一个RuntimeError。

重新标准化DenseVariational作为其他概率的简单模板层。

tf.data现在支持数据集元素中的tf.SparseTensor组件。

现在可以遍历Tensors。

允许SparseSegmentReduction操作缺少段ID。

修改自定义导出策略以说明多维稀疏浮动分割。

Conv2D,Conv2DBackpropInput,Conv2DBackpropFilter现在支持具有GPU和cuDNNv6支持的任意扩展。

估算器现在支持数据集:input_fn可以返回数据集,而不是张量。

添加RevBlock,这是可逆残留层的高效内存实现。

减少BFCAllocator内部碎片。

将cross_entropy和kl_divergence添加到tf.distributions.Distribution。

添加启用反向传播的tf.nn.softmax_cross_entropy_with_logits_v2 w.r.t.标签。

GPU后端现在使用ptxas编译生成的PTX。

BufferAssignment的协议缓冲区转储现在是确定性的。

将嵌入操作更改为使用DynamicStitch的并行版本。

添加对稀疏多维特征列的支持。

加快只有1个值的稀疏浮点列的情况。

允许稀疏浮动分割以支持多值特征列。

将分位数添加到tf.distributions.TransformedDistribution。

在GPU上添加对tf.depth_to_space的NCHW_VECT_C支持。

在GPU上为tf.space_to_depth添加NCHW_VECT_C支持。

API的更改

在Squeeze操作的C ++ API中将SqueezeDims属性重命名为Axis。

Stream :: BlockHostUntilDone现在返回Status而不是bool。

次要重构:将统计文件从随机移动到常见并移除随机。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分