大家知道,深度学习的发展和推进,在某种程度上也是一场框架的争夺战,其中 Google 发布的 TensorFlow 和 Facebook 主力支持的 PyTorch 是最耀眼的两颗明星。我们今天就来看看其中一位明星 PyTorch,看看它为何值得学。
简单介绍
根据官网介绍,PyTorch 是一个开源的深度学习平台,提供从研究原型到生产部署的无缝路径(An open source deep learning platform that provides a seamless path from research prototyping to production deployment)。
PyTorch 的流行度仅次于 TensorFlow。而最近一年,在 GitHub 关注度和贡献者的增长方面,PyTorch 跟 TensorFlow 基本持平。甚至,PyTorch 的搜索热度持续上涨,加上 FastAI 的加持,PyTorch 无疑会得到越来越多的机器学习从业者的青睐。
流行度虽然可以说明问题,但是,你一定要知道更多,才能明白 PyTorch 为什么值得学,你在什么情况下需要学习 PyTorch 。
PyTorch 关键发展节点
2017 年 1 月,Facebook AI 研究团队发布 PyTorch,一个基于 Torch 的 Python 工具包,专门用于 GPU 加速的深度学习编程。
2017 年 8 月,PyTorch V 0.2.0 发布,引入广播、高级索引、高阶梯度、新图层,以及分布式训练等,前两者进一步方便了 Tensor 与 Numpy 互转。
2018 年 4 月,Caffe2 代码合并到 PyTorch。Facebook 打算将 PyTorch 的研究特性与 Caffe2 的生产特性更好地结合起来。
2018 年 4 月,PyTorch V 0.4.0 发布,新特性包括 Tensor 和 Variable 合并,强化 Numpy 风格的 Tensor 构建等,并正式支持 Windows 系统。
2018 年 10 月,PyTorch V 1.0.0 发布,融合 PyTorch 自身灵活性、研究优势与 Caffe2 的后端与应用能力、ONNX 的框架转换能力于一体;同时 FastAI V1.0 发布,可用单一 API 玩转常见深度学习应用,大大降低了深度学习的学习门槛。
2019 年 5 月,PyTorch V 1.1 发布,提供了新的 API,原生支持 TensorBoard 和自定义循环神经网络,并提升了性能。
PyTorch 刚走过了 2 年 4 个月的时间,发展相当迅速。
受欢迎程度
Jeff Hale 4 月份在 Medium 上发表了一篇文章,比较了 TensorFlow、PyTorch、keras 和 FastAI 的流行度,全面涵盖职位需求、使用、学术研究和兴趣等维度。
Jeff 根据多个招聘网站在线职位搜索、Google Trends、GitHub 活跃度、Arxiv 文章数、Medium 文章数、Quora 相关问题关注人数统计计算出了一个综合的增长分数。我们这里引用一下最终结果图片:
深度学习框架半年增长分数
(2018 年 10 月-2019 年 3 月)
可以看到 TensorFlow 稳居第一,而 PyTorch 表现也非常抢眼,未来的需求和发展非常值得期待。
PyTorch 核心优势:动态计算图
PyTorch 是一款强大的动态计算图模式的深度学习框架。大部分框架是静态计算图模式,其应用模型在运行之前就已经确定了,而 PyTorch 支持在运行过程中根据运行参数动态改变应用模型。
可以简单理解为:一种是先定义后使用,另一种是边使用边定义。动态计算图模式是 PyTorch 的天然优势之一,Google 今年 3 月份发布的 TensorFlow 2.0 Alpha 版本中的 Eager Execution,被认为是在动态计算图模式上追赶 PyTorch 的举措。
静态计算图模式框架在执行计算图之前需要先声明和编译。 虽然在实际生产中这种实现比较高效,但在研究和开发中非常繁琐。
以 PyTorch 为代表的动态计算图框架则无需在每次执行之前编译模型。在建模 NLP 任务时,每个输入都可能导致不同的图结构,因此动态图就绝对占优了——这也是 PyTorch 在处理很多问题上(尤其是 RNN 相关问题)更高效的原因。
此外,动态图机制在调试方面非常方便,基本上,如果计算图运行出错,就可以在堆栈跟踪定义图的代码行。有人形容调试 PyTorch 就跟调试 Python 一样,通过断点检查就可以高效解决问题。
PyTorch 更多优势
无缝接入 Python 生态圈,张量、变量与 Numpy 互转
在张量之上封装变量,方便构建神经网络
强大的后端功能
命令式编程风格
扩展性极好
广泛应用于 NLP 之外的多种深度学习应用
富有活力的社区和背后大厂 Facebook 支持
......
深入了解与使用 PyTorch
如果你想深入细致了解使用 PyTorch 快速高效地构建深度学习模型,那么——
资深数据科学家 Rich Ott 在O’Reilly主办的 AI Conference 2019 北京站上主讲的「PyTorch 深度学习」课程值得学习,学习时间为期两天,具体为 6 月 18 日 ~ 6 月 19 日。
有志于将来投身人工智能领域的 Python 开发者、Python 数据分析师,以及想进一步深入理解 PyTorch 的机器学习工程师、算法工程师,不要错过这次与国外资深专业人士一起学习的机会。
The Data Incubator 数据科学家,热爱数据科学,并致力于数据知识的传播与教学。曾在 Verizon 担任数据科学家和软件工程师。麻省理工学院粒子物理学博士,加州大学戴维斯分校博士后。
学习内容
学习 PyTorch 张量和自动求导包
多种 PyTorch 深度学习模型架构
使用真实数据集构建和训练深度神经网络
前置知识
基本的 Python 知识
简单的矩阵和线性代数知识
建模和机器学习基础
神经网络基础
课程大纲
6 月 18 日
PyTorch 张量
自动求导包
神经网络
多层感知机
6 月 19 日
神经网络架构
卷积神经网络
自动编码器
参考资料
- Natural Language Processing with PyTorch: Build Intelligent Language Applications Using Deep Learning
- https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318
- https://www.ibm.com/developerworks/cn/cognitive/library/cc-get-started-pytorch/index.html
- https://venturebeat.com/2019/05/01/facebook-launches-pytorch-1-1-with-tensorboard-support/
参会指南
AI Conference 2019北京站正在火热报名中,登录会议官网查看讲师和议题详情:https://ai.oreilly.com.cn/ai-cn。
现在是会前优惠票价的最后阶段,席位有限,抢票从速。