业界 | 谷歌正式发布TensorFlow 1.5:终于支持CUDA 9和cuDNN 7

选自GitHub

机器之心编译

机器之心编辑部

昨天,谷歌在 GitHub 上正式发布了 TensorFlow 的最新版本 1.5.0,并开源了其代码。支持 CUDA 9 和 cuDNN 7 被认为是本次更新的最重要部分。机器之心对这次更新的重大改变以及主要功能和提升进行了编译介绍,原文请见文中链接。

  • 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 正式版

重大更新

  • 预构建的二进制文件现在是针对 CUDA 9 和 cuDNN 7 构建的。
  • 从版本 1.6 开始,我们的预构建二进制文件将使用 AVX 指令。这也许会破坏较旧 CPUs 上的 TF。

主要功能和提升

  • Eager execution:预览版现在可用。
  • TensorFlow Lite:dev 预览版现在可用。
  • 支持 CUDA 9 和 cuDNN 7
  • 加速线性代数(XLA):
  • 添加 complex64 支持到 XLA 编译器。
  • bfloat 支持现已添加到 XLA 架构。
  • 使 XLA 和 XLA 一起工作。
  • 通过决定性执行程序来生成 XLA 图。
  • tf.contrib:
  • tf.contrib.distributions:
  • 添加 tf.contrib.distributions.Autoregressive。
  • 使 tf.contrib.distributions QuadratureCompound 类支持批处理。
  • 从参数中推断 tf.contrib.distributions.RelaxedOneHotCategorical dtype。
  • 通过 quadrature_grid_and_prob vs quadrature_degree 使 tf.contrib.distributions 正交族参数化。
  • 添加 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。
  • 支持 Reshape bijector 中的 shape 推理(即,包含-1 的 shape)。
  • 添加 streaming_precision_recall_at_equal_thresholds,一种计算流式精确度和时间、空间复杂度为 O(num_thresholds + size of predictions) 的调用的方法。
  • 更改 RunConfig 默认行为,不设置随机种子,使随机行为在分布式工作器上独立地随机。我们期待这可以普遍提高训练表现。依赖决定论的模型应明确设置一个随机种子。
  • 通过 absl.flags 替换 tf.flags 的实现。
  • 在 fp16 GEMM 中为 CUBLAS_TENSOR_OP_MATH 添加支持。
  • 在 NVIDIA Tegra 计算卡上为 CUDA 添加支持。

Bug 修复与其他更新

文档更新:

  • 明确你只能在 64 位机上安装 TensorFlow。
  • 添加一个短文件解释 Estimators 如何保存检查点。
  • 为由 tf2xla 桥支持的操作添加文档。
  • 修改 SpaceToDepth 和 DepthToSpace 文件中的小的书写错误。
  • 更新 mfcc_mel_filterbank.h 和 mfcc.h 中的文档命令,说明输入域是幅度谱的平方,权重
  • 是在线性幅度谱(输入的 sqrt)上完成的。
  • 修复 tf.distributions.bijectors.Bijector 中的文档字符串书写错误。
  • tf.assert_equal 不再引发 ValueError。它现在引发 InvalidArgumentError,如文档所述。
  • 更新「开始」文件和 API 介绍。

谷歌云存储 (GCS):

  • 为 GCS 客户端添加用户空间 DNS 缓存。
  • 为 GCS 文件系统自定义请求超时。
  • 优化 GCS 的文件系统缓存。

Bug 修复

  • 修复之前出现的整数变量分区后变成错误的 shape 的 bug。
  • 修复 Adadelta 的 CPU 和 GPU 实现的准确度 bug。
  • 修复当导入到 scope 时,import_meta_graph 处理分区变量时出现的 bug。警告:在以非空 import_scope 变量应用 import_meta_graph 之后,这可能会破坏带已保存分区变量图的加载中的检查点。
  • 修复离线 debugger 中阻止查看事件的 bug。
  • 添加 WorkerService.DeleteWorkerSession 方法到 gRPC 接口,修复内存泄漏。确保你的主服务器和辅助服务器在相同版本的 TensorFlow 上运行,以避免兼容性问题。
  • 修复 BlockLSTM cell 的 peephole 实现中的 bug。
  • 通过重写 log_det_jacobian 的 dtype 以在 TransformedDistribution 中匹配 log_prob。
  • 确保 tf.distributions.Multinomial 不会在 log_prob 中下溢。在此之前,一个整数变量的所有分区会以非分区变量的 shape 进行初始化;经过修复之后,可以正确地初始化。

其它

  • 添加必要的 shape 直到支持 bfloat16。
  • 添加一种运行 ops 的方式,在 MonitoredSession 中使用阶跃函数。
  • 添加 DenseFlipout 概率层(probabilistic layer)。
  • 添加一种新的 flag:ignore_live_threads,可用于训练过程。如果将其设为 True,在成功完成训练之后,它会在拆除基础建设时忽略仍在运行的线程,而不会返回 RuntimeError。
  • 重新标准化 DenseVariational,以作为其它概率层的更简化模板。
  • tf.data 现在在数据集元素中支持 tf.SparseTensor。
  • 可以进行遍历 Tensor 的计算。
  • 允许 SparseSegmentReduction ops 拥有丢失的 segment IDs。
  • 修改自定义导出策略以包含多维稀疏浮点数分裂(multidimensional sparse float
  • splits)。
  • 由于 GPU 和 cuDNNv6 的支持,Conv2D、Conv2DBackpropInput、Conv2DBackpropFilter 现在支持任意的扩张。
  • Estimator 现在支持 Dataset:input_fn 可以返回 Dataset 而不是 Tensors。
  • 添加 Revblock,一个可逆残差层的节省内存的实现。
  • 减少 BFCAllocator 的内部碎片。
  • 添加 cross_entropy 和 kl_divergence 到 tf.distributions.Distribution 中。
  • 添加 tf.nn.softmax_cross_entropy_with_logits_v2,以允许标签的反向传播。
  • GPU 后端现在使用 ptxas 以编译生成的 PTX。
  • BufferAssignment 的协议缓存转储(protocol buffer dump)现在已确定。
  • 改变 embedding op 以利用 DynamicStitch 的并行版本。
  • 添加对稀疏多维特征列(sparse multidimensional feature columns)的支持。
  • 加速仅有一个值的稀疏浮点数列(sparse float columns)的案例。
  • 允许稀疏浮点数分裂(sparse float splits)以支持多价特征列(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 移动到 common 并删除 stochastic。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-01-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

分支预测

分支预测( Branch predictor):当处理一个分支指令时,有可能会产生跳转,从而打断流水线指令的处理,因为处理器无法确定该指令的下一条指令,直到分支...

961
来自专栏ml

ijg库解码超大型jpeg图片

1. ijg库解码超大型jpeg图片(>100M)的时候,如何避免内存溢出。        采用边解码边压缩的策略,每次解码一行或者若干行图片数据,然后对于这些...

4018
来自专栏java初学

一致性哈希算法(consistent hashing)

50914
来自专栏Petrichor的专栏

.jpg & .jpeg 区别

983
来自专栏拂晓风起

cocos2d-js 越来越慢的定时器schedule 制作不变慢的定时器

1204
来自专栏机器学习算法工程师

快来操纵你的GPU| CUDA编程入门极简教程

2006年,NVIDIA公司发布了CUDA(http://docs.nvidia.com/cuda/),CUDA是建立在NVIDIA的CPUs上的一个通用并行计...

7644
来自专栏码云1024

matplotlib简介

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形

4377
来自专栏软件测试经验与教训

Python学习笔记(文件)

3499
来自专栏Deep Learning 笔记

和MNSIT打个招呼

作为深度学习的入门数据集,MNIST是个很好的选择,我们可以在官网 http://yann.lecun.com/exdb/mnist/下载。

1032
来自专栏Python中文社区

Python量子力学计算模拟以及数据可视化

專 欄 ❈Pytlab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,...

7029

扫码关注云+社区