PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
梦晨 发自 凹非寺
量子位 报道 | 公众号 QbitAI
PyTorch社区最近有一种声音:下个版本应该抛弃Python改用Julia语言。
现在就连PyTorch团队内部也会拿这个说法来开玩笑。
对这个问题,核心开发成员中的Edward Yang在论坛上作出过一些回应。
他认为PyTorch的确越来越像Julia了,比如借鉴Julia的多重分派特性开发了Pytorch Dispatcher。
PyTorch总体的发展方向也和Julia的愿景一致,也就是同时具备拓展性、易用性和执行性能。
一方面PyTorch的底层代码后期用C++重写以获得更好的性能,另一方面functorch、fx等新功能又让用户可以直接使用Python做以前必须借助C++完成的工作。
那为什么不直接改用Julia呢?
害,其实是舍不得Python那无可替代的生态。
当初从原版Torch使用的Lua改用Python就是看中了生态这一点。这么多年过去了其他语言生态连一点可能超过Python的迹象都没有。
简而言之,Julia语言本身的特性和Python的生态他们全都要,向Julia的优点学习也是团队未来的努力方向。
那么,Julia这种语言到底好在哪,让PyTorch开发团队都向它学习?
面向科学计算设计的语言
Julia来自麻省理工CSAIL实验室,设计初衷就是想要一个既有C的速度又有Ruby的动态性、既能像Matlab一样使用数学表达式又有Python的通用性。
Julia要能像Perl一样自然地处理字符串、像R一样适用于统计,像Shell一样作为胶水语言去和其他语言交互。
要有Hadoop的并行计算能力,又不想要那些繁杂的配置。
最后做出来的Julia采用即时编译(Just In Time),速度比需要解释器的Python快得多,又没有失去交互性。
通过多重分派(Multiple Dispatch)特性来实现类型稳定又不时脚本语言的简洁灵活。
同一个函数名对不同参数类型的调用分派不同的操作,因为适合处理多种数据类型还被PyTorch给学了去。
具体到机器学习来说,Julia执行各类算法包括矩阵运算的速度都比Python快得多。
Julia生态里也有自己的开源深度学习框架Julia Flux。
此外Julia还在语法上对线性代数、数据处理这些场景有额外的优化。
比如支持Unicode数学符号,数字乘以变量时候可以省略「*」,以及索引从1而不是0开始更符合人类直觉….
Julia代码可以写成这样:
α = 0.5
∇f(u) = α*u; ∇f(2)
sin(2π)
以至于有些数学背景的开发者认为,Julia代码写起来就像在黑板上做数学题一样的,很亲切。
相比之下,用Python做矩阵运算感觉就……不是那么好。
Python:
np.dot(array1,array2)
Julia:
array1 .* array2
Julia的历史可以追溯到2009年,由于想实现的功能太多,直到2018年才对外发布1.0正式版。
不过最近几年Julia已迅速被金融、医药、航天等一些行业接受,使用者包括摩根大通、辉瑞、NASA等。
△ TIOBE指数中的Julia流行趋势变化
Julia改变了过去他们只能用C等高性能语言做底层开发、同时用高易用性的Python等语言做扩展开发的割裂问题。
今年7月,Julia创始团队成立的公司Julia Computing还获得2400万美元的A轮融资。
Julia语言速度快、天生适合机器学习又在高速成长,也难怪PyTorch社区会有用Julia替代Python的声音出现。
有人认为Python是一种糟糕的语言,虽然有优秀的生态,但生态中对机器学习最有价值的部分(Numpy)其实是用C实现的。
Python生态虽然强大,但人们对其中的混乱也有不少诟病,各种重复开发的包管理系统让配置好Python开发环境都不是一件容易事。
相比之下,Julia的包管理方案就很统一,虽然有可能是还在起步阶段没来得及混乱。
也有人认为Python这些所谓的缺点其实正是它流行的原因。
像Python、Javascript和PHP这种看起来糟糕的语言,正是因为能够轻松的编写糟糕代码,降低了门槛而流行。
这位要提醒大家Julia自身就带有和其他语言的交互功能,他平常会在Julia代码里调用Huggingface的Python模型作开发,两种生态都用上才是坠吼的。
最后,有人很不理解PyTorch开发团队不选择迁移到Julia的做法,既然Julia语言有所有他们需要的特性,还要花时间在Python里重新造轮子是自找麻烦。
另一位的视角有些微妙的不同:
这正是PyTorch团队想把方便留给用户,而把麻烦留给自己。对这种态度我很感激。
参考链接:
[1]https://dev-discuss.pytorch.org/t/where-we-are-headed-and-why-it-looks-a-lot-like-julia-but-not-exactly-like-julia/276
[2]https://news.ycombinator.com/item?id=29354474
[3]https://ucidatascienceinitiative.github.io/IntroToJulia/Html/WhyJulia
— 完 —
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
点个在看 paper不断!
PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?相关推荐
- 【收藏】万字综述,核心开发者全面解读PyTorch内部机制
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Edward Z.Yang,Pytorch核心开发者 斯坦福大学博 ...
- 综述|核心开发者全面解读Pytorch内部机制
↑ 点击蓝字 关注视学算法 作者丨Edward Z. Yang 来源丨机器之心 编辑丨极市平台 极市导读 Edward Z. Yang 是PyTorch开源项目的核心开发者之一.在PyTorch纽约聚 ...
- 万字综述,核心开发者全面解读PyTorch内部机制
选自ezyang博客 作者:Edward Z. Yang 机器之心编译 参与:panda 斯坦福大学博士生与 Facebook 人工智能研究所研究工程师 Edward Z. Yang 是 PyTorc ...
- 开源项目中成长:从实习小白到核心开发者
点击查看活动详情 https://t.csdnimg.cn/L4B8 社区介绍 OpenStack最初是由NASA和Rackspace合作研发并发起的一个开源项目,在2010年7月21日在波特兰的OS ...
- 你想成为一名核心开发者吗?
-图片源自上次 Ewasm 团队冲刺写码.其中核心开发者只能用 6 号字体写代码.- 虽然核心开发者的准确定义尚存异议,但这个术语一般是指为区块链底层技术(比如底层协议本身或底层密码学技术. P2P ...
- 沟通是管理的核心与灵魂
回复 PM 免费获取项目管理干货大礼包 回复 管理 免费获取项目管理全套127个文档 官方文库网站海量专业文档下载请访问 http://www.itilzj.com 在现代信息经济时代,沟通在企业管 ...
- React 核心开发者 Dan Abramov 访谈实录
大家好,我是若川.面试.学习源码系列.年度总结.JS基础系列 译者注:本译文是在「在线对话 React.js 核心开发者」一个半小时直播的基础上进行的原文翻译,包括了直播中的所有问答内容,尽可能保留了 ...
- Webpack 核心开发者 Sean Larkin 盛赞 Vue
dev.io 近日邀请了 Webpack 核心开发者 Sean Larkin 回答开发者提问,其中几个问提比较有意思,和掘金的小伙伴们分享一下. 先上点前菜: 有一个开发者问 Sean 如何成为一个热 ...
- PyTorch核心贡献者开源书:《使用PyTorch进行深度学习》完整版现已发布!
来源|新智元 [导读]<使用PyTorch进行深度学习>一书的完整版现已发布!教你如何使用PyTorch创建神经网络和深度学习系统,内含图解与代码,操作易上手. 由Luca Antiga. ...
最新文章
- java程序输出矩阵_java编程题之顺时针打印矩阵
- 初窥wireshark fiddler等抓包工具及部分实现分析
- GitHub 回滚操作
- linux硬件 软件raid,Linux下软件RAID的实现
- Matlab图形绘制
- 图表相同数据会自动合并问题(finereport)
- pandas—总结(2) 数据读写 (更新中)
- python 数据驱动接口自动化框架_利用Python如何实现数据驱动的接口自动化测试...
- 使用samba完成Linux服务器与Windows之间的映射
- linux安装quota软件包,CentOS关于quota的总结与实践详解
- php strpos无效,php问题:strpos功能不起作用
- C++ XML操作类
- Unity Shader LOD详解
- 正规的棋牌游戏开发公司需要具备哪些条件
- 选择DC-DC开关电源控制器的实战过程
- 术业有专攻,数据库的 dba
- 【C语言】辗转相除法
- 今天是你的生日,你就快乐些吧
- 断网问题360解决方案
- 飞机飞行动力学与控制仿真