PyTorch 1.3重磅发布,TensorFlow有未来吗?
(给Python开发者加星标,提升Python技能)
转自:新智元(微信号:AI_era)
在 PyTorch 开发者大会上,Facebook 重磅发布了 PyTorch 1.3推出一系列新特性以及一大波工具和库。2019年机器学习框架之战,你站PyTorch还是TensorFlow?
昨天,Facebook 在 PyTorch 开发者大会上给出一个数据:
仅在 2019 年上半年,ArXiv 论文中 PyTorch 的引用量增长了 194%;PyTorch 平台的贡献者数量比去年增长了 50% 以上,达到近 1200 人。
PyTorch 正在快速增长,尤其在学术圈中地位飙升,大有取代 “老大哥” TensorFlow,成为机器学习框架 No. 1 的势头。
不过,thegradient 利用多个数据来源,细致分析 2019 年机器学习框架现状,得出结论:PyTorch 主导了学术界,TensorFlow 主导了工业界。
这一趋势也可能变化,因为就在昨天,微软、Uber 等宣布将使用 PyTorch 作为公司最重要的机器学习研究和产品工作负载的基础。
在 PyTorch 开发者大会上,Facebook 重磅发布了 PyTorch 1.3,推出一系列新特性,如支持无缝模型部署到移动设备,模型量化以在推理时获得更好的性能,以及前端改进,如命名张量 (name tensors) 等。此外,还推出了一大波工具和库,增加 Cloud TPU 和阿里云支持等。
接下来,我们先来看 PyTorch 1.3 的新特性和新工具,再对比 PyTorch 和 TensorFlow。
PyTorch 1.3 带来了一系列重要的新特性,包括对移动设备部署的实验支持、 8-bit 整数的 eager mode 量化,以及 name tensors 等。
命名张量 (Named tensors)
康奈尔大学的 Sasha Rush 认为,尽管张量在深度学习中无处不在,但是传统的张量实现存在明显的缺点,比如暴露私有维度、基于绝对位置的 broadcasting 以及在文档中保留类型信息。他提出将 named tensors 作为替代方法。
通过 named tensors,我们可以命名和访问维度:
命名也使代码更易于阅读和维护:
量化 (Quantization)
在开发 ML 应用程序时,有效地利用服务器端和设备上的计算资源非常重要。为了在服务器和边缘设备上支持更高效的部署,PyTorch 1.3 现在支持使用熟悉的 eager 模式 Python API 的 8-bit 模型量化。
量化是指用于执行精度较低的计算和存储的技术,如 8-bit 整数。当前的实验特性包括对训练后量化、动态量化和量化感知训练的支持。
PyTorch mobile
在边缘设备上运行 ML 变得越来越重要,因为应用程序需要更低的延迟。它也是联邦学习等隐私保护技术的基础元素。为了在设备上实现更高效的 ML, PyTorch 1.3 现在支持从 Python 到在 iOS 和 Android 上部署的端到端工作流。
了解更多:http://pytorch.org/mobile
用于模型可解释性和隐私性的新工具
Captum
随着模型变得越来越复杂,开发用于模型可解释性的新方法变得越来越重要。为了帮助解决这个需求,我们推出了 Captum,这是一个帮助 PyTorch 开发人员理解为什么他们的模型生成特定输出的工具。Captum 提供了最先进的工具来了解特定神经元和层的重要性,并影响模型的预测。Captum 的算法包括 integrated gradients,conductance, SmoothGrad 和 VarGrad,以及 DeepLift。
下面的例子展示了如何将模型可解释性算法应用到一个预训练好的 ResNet 模型上,然后将每个像素的属性叠加在图像上进行可视化。
noise_tunnel = NoiseTunnel(integrated_gradients)
attributions_ig_nt, delta = noise_tunnel.attribute(input, n_samples=10, nt_type='smoothgrad_sq', target=pred_label_idx)
_ = viz.visualize_image_attr_multiple(["original_image", "heat_map"],
["all", "positive"],
np.transpose(attributions_ig_nt.squeeze().cpu().detach().numpy(), (1,2,0)),
np.transpose(transformed_img.squeeze().cpu().detach().numpy(), (1,2,0)),
cmap=default_cmap,
show_colorbar=True)
在该图中,使用 integrated gradients 计算特征属性,并显示在右侧的图像中。(图片由 Pixabay 提供。)
了解更多:https://www.captum.ai/
CrypTen
ML 通过基于云或机器学习即服务 (MLaaS) 平台的实际应用对安全性和隐私提出了一系列挑战。为了应对这些挑战,ML 社区正在探索各种技术方法,包括同态加密、安全多方计算、可信执行环境、设备上的计算和差异隐私。
为了更好地理解如何应用这些技术,我们发布了 CrypTen,这是一个新的基于社区的研究平台,用于推进隐私保护 ML 领域的发展。
了解更多:https://facebookresearch.github.io/CrypTen/
用于多模态 AI 系统的工具
数字内容通常由几种形式组成,如文本、图像、音频和视频。PyTorch 丰富的工具和库提供了强大的方法来解决构建多模式 ML 系统的挑战。以下是最新推出的库:
Detectron2
这是一个在 PyTorch 中实现的对象检测库。Detectron2 提供对最新模型和任务的支持,增强的灵活性以帮助进行计算机视觉研究,并改善了可维护性和可扩展性以支持生产用例。
fairseq 的语音扩展
语言翻译和音频处理是搜索、翻译、语音和助手等系统和应用程序中的关键组件。近年来,随着 transformers 等新架构的发展,以及大规模的预训练方法,这些领域取得了巨大的进步。我们扩展了 fairseq,这是一个用于序列到序列应用 (如语言翻译) 的框架,包括对语音和音频识别任务的端到端学习的支持。
云和硬件生态系统支持
AWS、Microsoft Azure 和谷歌云等云提供商为任何希望在 PyTorch 上开发 ML 并将其部署到生产环境中的人提供了广泛的支持。
现在,PyTorch 已经广泛支持谷歌云 TPU,并与阿里云进行了新的整合。
PyTorch在研究领域的主导地位不断提升
为什么研究人员喜欢PyTorch?
简单。它类似于numpy,非常具有python风格,并且可以轻松地与Python生态系统的其余部分集成。例如,只需在PyTorch模型中的任何地方插入一个pdb断点,它就可以工作了。在TensorFlow中,调试模型需要一个活动会话(active session),并且最终变得更加棘手。 很棒的API。与TensorFlow的API相比,大多数研究人员更喜欢PyTorch的API。一个原因是PyTorch的设计更好,另一个原因是TensorFlow通过多次切换API(例如‘layers’ -> ‘slim’ -> ‘estimators’ -> ‘tf.keras’)把自己搞残了。 性能。尽管事实上PyTorch的动态图提供的优化机会很少,但是有许多传闻称PyTorch的速度和TensorFlow一样快,甚至比TensorFlow还快。目前尚不清楚这是否真的成立,但至少,TensorFlow在这一领域还没有获得决定性的优势。
TensorFlow的研究前景如何?
PyTorch和TensorFlow用于生产
无Python。一些公司会运行服务器,而高昂的Python运行开销无法承受。 移动。无法在mobile binary中嵌入Python interpreter。 服务。一个全面的功能,如不停机更新模型,无缝切换模型,在预测时间批处理,等等。
PyTorch 占领了研究界,并试图将其在研究领域的成功推广到工业界。
TensorFlow 试图在不牺牲太多生产能力的情况下,遏制其在研究领域的损失。
研究人员的偏好会对业界产生多大的影响?
TensorFlow 的 eager 模式在可用性方面能赶上 PyTorch 吗?
PyTorch 达到生产状态的速度有多快?
谷歌在行业上的孤立会伤害它吗?
推荐阅读
(点击标题可跳转阅读)
觉得本文对你有帮助?请分享给更多人
关注「Python开发者」加星标,提升Python技能
好文章,我在看❤️