TensorFlow 1.3.0正式发布,加速迭代深度学习框架能否引领AI发展?

2017 年 8 月 18 日 AI前线 Vincent
编辑|陈思
审校|Tina  Natalie
TensorFlow1.3.0 版本正式发布,虽然离上一版本发布时间过去的并不久,但是新版本已经拥有了不少令人期待的新功能。不仅是谷歌的 TensorFlow,微软、百度、Facebook、亚马逊等等科技公司都在大力研发深度学习框架,或许深度学习框架将会成为 AI 发展的主要推动力之一?
TensroFlow v1.3.0

距离 TensorFlow 的 1.2.1 版本发布才过去不算太久,近日新发布的 1.3 版本已经包含了诸多更新。开发者可以在 TensorFlow GitHub 页找到完整的发布报告。

GitHub:

https://github.com/tensorflow/tensorflow/releases/tag/v1.3.0

我们总结了一下 1.3 版本的部分新特性:

从 cuDNN 5.1 到 cuDNN 6

开发者要从 1.2.1 升级到 1.3,还需要升级系统中的 cuDNN 版本。1.3 的编译版本是用 NVIDIA 的 cuDNN 6 编译的,而 1.2.1 用的是 cuDNN 5.1。不想升级的开发者还是可以从源代码创建自己的编译版本。cuDNN 新版显著提升了 softmax 层的性能。cuDNN 6 新增的一个有趣的功能是膨胀卷积(dilated convolution),TensorFlow 已经支持此特性。需要注意的是,从 1.1.0 版本开始,TensorFlow 不再支持 Mac 上的 GPU。虽然开发者还是能得到补丁,但不能保证它能正常运行。

tf.contrib.data.Dataset 类

tf.contrib.data.Dataset 类获得了一些重要更新。开发者可以使用这个类为自己在 Tensors 中的数据创建统一的输入流水线,输入来源可以是内存、文件或磁盘,支持多种数据格式。它还能用来对使用 Dataset.map() 的各个独立元素应用函数,或者对所有使用 Dataset.batch() 的元素应用函数。这个类中缺少嵌套结构的函数现在把列表隐式地转换成 tf.Tensor 对象。不想用它的用户可以使用元组来代替。Dataset 类中还提供了几个新函数:

  • Dataset.list_files(file_pattern):返回一个 Dataset,包含了与 file_pattern 模式相匹配的文件名字符串。

  • Dataset.interleave(map_func,cycle_length):赋予程序员更大的自由度来处理函数到元素的映射。它仍会对整个 dataset 应用 map_func,但会交叉结果,这样有助于同时处理多个输入文件。

  • ConcatenateDataset:用于扩展了 Dataset 类的一个类。它的 init 函数接受两个 Dataset 作为参数,通过已有的 Dataset.concatenate() 函数将它们连接起来。

高级 API 函数和统计分布

虽然 Keras 和 TFlearn 用户已有很多高级 API 函数可用,TensorFlow 又在库中增加了下列函数:DNNClassifier、DNNRegressor、LinearClassifer、LinearRegressor、DNNLinearCombinedClassifier、DNNLinearCombinedRegressor。这些 estimator 是 tf.contrib.learn 包的一部分,使用方法可参阅 TensorFlow 文档。

新增的一项内容是多重统计分布。使用一个类表示一个统计分布,并用定义这个分布的参数进行初始化。现有很多单变量和多变量的分布。开发者也能扩展已有的类,但是必须继续支持 Distribution 基类中现有的函数。为避免无效的属性,开发者可以让程序抛出一个异常,或者选择用 NaN 值处理。下面的例子展示了开发者如何从一个均匀分布中获取一个带有随机变量的张量:

已有函数的改动

已有的函数也有一些改动。tf.gather 函数是用来在张量中选取变量的,现在加入了坐标轴参数,可以更灵活地收集数据。

tf.pad 函数用来在已有张量周围插入值,现在可支持“CONSTANT”实参。使用这个实参时,padding 到已有张量时会使用 0 来填充已有张量。之前已有的模式是“REFLECT”和“SYMMETRIC”。

当然,还有更多更新需要使用者自己来探索,你可以参看 TensorFlow 的官方 GitHub 当中的内容。

XLA、Coud TPU、TFX和将要发布的方案

作为一套平台方案,TensorFlow 拥有着为每个人提供全部解决方案的勃勃雄心:快速、灵活且准备好进行生产。执行与实验流程必须能够快速循环,从而实现工程技术生产能力 ; 另外,在高级语言(Python)当中表现静态计算图以实现灵活性 ; 再有,其图形编译能力亦使得面向特定目标架构的精确优化成为可能。

GitHub 星评数量(2013 年 1 月至 2017 年 8 月)

作为开源项目,TensorFlow 已经获得了毋庸置疑的成功——其自 2015 年 11 月以来获得了超过 2 万项贡献。目前 TensorFlow 的主 GitHub 库每周至少与谷歌的内部镜像进行一次双向同步 ; 而除了英特尔工程技术团队的参与之外,微软、IBM、RStudio 以及 Minds.ai 等厂商亦加入到贡献社区中来。

在覆盖能力方面,TensorFlow Lite 将在今年晚些时候进一步将 TensorFlow 模型引入移动乃至嵌入式设备当中 ; 而 XLA 等项目甚至设定了更为宏大的发展目标:XLA 支持作为底层深度学习根基的线性代数的提前与即时编译,这意味着其能够面向任意目标后端系统生成高速机器代码。XLA 作出的承诺不仅能够在 GPGPU 当中通过分层优化带来重大飞跃,同时亦可立足任意架构实现线性代数原语的并行化执行。

在谷歌公司内部,TensorFlow 则在谷歌提出建设“AI 至上”企业之后被引入一系列令人印象深刻的重要项目。事实上,基于机器学习技术的软件发展趋势正在持续加速:Amazon、苹果、百度、Facebook、微软、Salesforce、优步以及 Lyft 等等,几乎每一家主要科技企业都聘请了专项研究团队以帮助推动将机器学习成果引入生产阶段。在这样的历史背景之下,深度学习平台自身也保持着蓬勃的发展势头:来自 Facebook 的 PyTorch 与 Caffe2、来自微软的 CNTK、苹果的 Core ML 以及 Amazon MXNet 正是其中的典型代表。

软件工程在未来十年当中将迎来哪些变化?

随着机器学习框架的崛起,简单抽象与模块设计模式正逐步被高维浮点张量与高效矩阵乘法所取代。随着这种趋势的进一步推进,软件工程实践亦从根本上出现了转变。

《机器学习:技术债务的高息信用卡》当中描述了常见于(甚至已经成为一种必要)机器学习系统当中的各类糟糕设计取向。此类系统“与普通代码一样存在着各类基础代码复杂性问题,但同时亦因为隐藏债务的存在而导致更令人头痛的系统级复杂性。”

机器学习系统通过对全部系统输入内容进行紧密耦合而侵蚀着模型边界与抽象范围:实际需要的恒定行为流并非来自软件逻辑,而是来自作为驱动因素的特定外部数据。尽管能够利用静态分析与链接图等工具发现代码中的依赖关系,但此类工具目前尚无法正确分析数据层面的依赖性。

来自机器学习从业者的意见整理为以下几种得到广泛承认的系统设计反模式:

  1. 胶水代码系统设计模式,“其中需要编写大量支持性代码以实现数据面向通用型软件包的出入。”

  2. 管道丛林,这是指随着时间推移,数据准备系统“可能成为一片包含大量冲突、联动以及示例步骤,且通常存在中间文件输出的混乱丛林”。

  3. 配置债务,这是指随着系统与管道的逐步成熟,将出现“一系列广泛的可配置选项,具体包括使用哪些功能、具体数据选择方式、各种仅适用于特定算法的学习设置、潜在的预处理与后处理机制以及验证方法等”。

即使是在规模较小且复杂度相对较低的项目当中,从业人员亦遭遇到以下实际问题:

  1. 实验过程中的模型架构与权重版本控制——特别是在模型以分部方式利用来自其它运行场景的不同方式或者权重进行预训练的情况下 ;

  2. 数据源与特性版本控制 ;

  3. 实验环境与生产部署之间的域转换 ;

  4. 在生产环境下监控推理质量。

解决上述难题的答案之一正是 TFX——这是一套内部平台,由谷歌公司开发以实现生产环境下的机器学习模型分发与支持:

创建并维护一套平台,从而可靠地生成并部署机器学习模型所必需的、经过精心调试的多种组件——包括根据训练数据生成模型的学习程序、用于分析并验证数据及模型的模型、以及负责在生产环境下支持各模型的最终基础设施。由于数据本身会随着时间推移而发生变化,必须对各模型进行持续更新,这一切都会进一步提升解决难度。遗憾的是,此类编排机制通常由具备特定职能的独立团队通过编写代码以及定制化脚本的方式进行,但这种作法将引发大量重复工作并增加系统的技术债务。

TFX 将上述模式与组件加以标准化,同时将其整合至单一平台之内以简化平台配置、将生产就绪准备周期从原本的数个月降低至数周,同时提升平台稳定性以最大程度减少服务中断问题。

TFX 项目当 的部分组成部分已经走向开源,具体包括 TensorFlow Serving 以及 tf.Transform。

硬件在未来十年当中将迎来哪些变化?

摩尔定律正逐渐失效,开发者们则准备着重新进入新一轮架构黄金时代——这意味着各类芯片与指令集将再度迎来快速发展。Nervana(英特尔)、英伟达、Cerebras 以及谷歌等技术巨头都在积极研究下一代硬件架构,旨在借此加速机器学习中的线性代数计算速度。在默认情况下,此类架构中包含都拥有一套需要用户以手动方式进行底层优化的原始库。要想解决这一难题,则需要各技术社区投入大量精力以构建起更具普适性的编译器框架(例如 XLA)。

谷歌公司的张量处理单元(简称 TPU)可能算得上目前成熟度最高,且最具希望的现有 GPU 替代性方案。每个云 TPU 可提供高达 180 万亿次的浮点运算性能,64 GB 极高传输带宽内存且可彼此实现对接。与以往的超级计算机架构不同,TPU 自设计之初即充分考虑到支持机器学习当中常见的线性代数类工作负载所带来的峰值性能需求。

TPU 与 TensorFLow 加以整合,而谷歌公司则为其提供付费托管基础设施选项(即云 TPU,Cloud TPU),外加面向希望早日获得硬件并乐于通过媒体及开源软件分享其研究成果的机器学习专家们的奖励项目:

为了加快开放机器学习研究工作的推进速度,谷歌还推出了 TensorFlow 研究云(TensorFlow Research Cloud,简称 TFRC),这套包含 1000 个云 TPU 的集群将以免费方式提供,用以支持各类以往根本无法实现的计算密集型研究项目。

Coda

TensorFlow 等图形计算与深度学习库的出现成为未来计算发展的主要推动力,而这亦要求研发人员重新审视现有系统架构,包括硬件、编译器乃至更为高级的编程语言与设计模式。

众多软件架构师、工程师、研究人员以及从业人员表现出的前所未有的参与热情以及由此带来的卓越工作成果确实令人印象深刻,但 AI 技术的快速发展同样带来毫不逊于前者的深远影响。

目前大多数令人惊奇的新型应用还毫无可能性可言——而着眼于未来,当人们将这些机器学习技术视为司空见惯的前提,并进一步推进目前看来甚至无法想象的工作时,又会是怎样一种局面?第一波 TensorFlow 原生产品将以怎样的面貌示人?

确切答案,自然有待每一位从业者努力探索。

参考文章:

https://medium.com/south-park-commons/matmul-is-eating-software-afebccda1745

http://www.infoq.com/cn/news/2017/08/changes-tensorflow-1-3


AI 前线微信社群
入群方法

关注 AI 前线公众账号(直接识别下图二维码),点击自动回复中的链接,按照提示进行就可以啦!还可以在公众号主页点击下方菜单“加入社群”获得入群方法~AI 前线,期待你的加入!



课程推荐

Python 是现在最流行的机器学习语言。针对对机器学习感兴趣、想从事相关职业的零基础学员,StuQ 打造出系统的 Python 机器学习课程。不论你是想成为机器学习工程师,还是数据分析师,或是深度学习专家,这套课程都能带你全面、系统地掌握 Python 机器学习的相关知识,并能够胜任 Python 机器学习中级工程师及以上的工作。

原价 6999 元,团购价 1999 元!小编觉得,这可能是你遇到过的最超值的课!

点「 阅读原文 」,立刻抱团!


登录查看更多
0

相关内容

Google发布的第二代深度学习系统TensorFlow
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【微众银行】联邦学习白皮书_v2.0,48页pdf,
专知会员服务
165+阅读 · 2020年4月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
机器学习者必知的 5 种深度学习框架
深度学习世界
7+阅读 · 2018年5月3日
Tensorflow Eager Execution入门指南
专知
6+阅读 · 2018年4月16日
2017年四巨头的深度学习框架之战,你支持谁?
全球人工智能
6+阅读 · 2017年12月29日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
终于!TensorFlow引入了动态图机制Eager Execution
深度学习世界
5+阅读 · 2017年11月1日
PyTorch vs. TensorFlow之一个月用户体验
深度学习世界
3+阅读 · 2017年10月21日
Arxiv
4+阅读 · 2019年12月2日
Nocaps: novel object captioning at scale
Arxiv
6+阅读 · 2018年12月20日
Arxiv
6+阅读 · 2018年6月21日
Arxiv
6+阅读 · 2018年3月28日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
11+阅读 · 2018年1月18日
VIP会员
相关资讯
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
机器学习者必知的 5 种深度学习框架
深度学习世界
7+阅读 · 2018年5月3日
Tensorflow Eager Execution入门指南
专知
6+阅读 · 2018年4月16日
2017年四巨头的深度学习框架之战,你支持谁?
全球人工智能
6+阅读 · 2017年12月29日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
终于!TensorFlow引入了动态图机制Eager Execution
深度学习世界
5+阅读 · 2017年11月1日
PyTorch vs. TensorFlow之一个月用户体验
深度学习世界
3+阅读 · 2017年10月21日
相关论文
Arxiv
4+阅读 · 2019年12月2日
Nocaps: novel object captioning at scale
Arxiv
6+阅读 · 2018年12月20日
Arxiv
6+阅读 · 2018年6月21日
Arxiv
6+阅读 · 2018年3月28日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
11+阅读 · 2018年1月18日
Top
微信扫码咨询专知VIP会员