pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?

PyTorch社区最近有一种声音:下个版本应该抛弃Python改用Julia语言。
现在就连PyTorch团队内部也会拿这个说法来开玩笑。
对这个问题,核心开发成员中的Edward Yang在论坛上作出过一些回应。
pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
文章插图
他认为PyTorch的确越来越像Julia了,比如借鉴Julia的多重分派特性开发了Pytorch Dispatcher。
PyTorch总体的发展方向也和Julia的愿景一致,也就是同时具备拓展性、易用性和执行性能。
一方面PyTorch的底层代码后期用C++重写以获得更好的性能,另一方面functorch、fx等新功能又让用户可以直接使用Python做以前必须借助C++完成的工作。
那为什么不直接改用Julia呢?
害,其实是舍不得Python那无可替代的生态。
当初从原版Torch使用的Lua改用Python就是看中了生态这一点。这么多年过去了其他语言生态连一点可能超过Python的迹象都没有。
简而言之,Julia语言本身的特性和Python的生态他们全都要,向Julia的优点学习也是团队未来的努力方向。
pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
文章插图
那么,Julia这种语言到底好在哪,让PyTorch开发团队都向它学习?
面向科学计算设计的语言Julia来自麻省理工CSAIL实验室,设计初衷就是想要一个既有C的速度又有Ruby的动态性、既能像Matlab一样使用数学表达式又有Python的通用性。
Julia要能像Perl一样自然地处理字符串、像R一样适用于统计,像Shell一样作为胶水语言去和其他语言交互。
要有Hadoop的并行计算能力,又不想要那些繁杂的配置。
最后做出来的Julia采用即时编译(Just In Time),速度比需要解释器的Python快得多,又没有失去交互性。
通过多重分派(Multiple Dispatch)特性来实现类型稳定又不时脚本语言的简洁灵活。
同一个函数名对不同参数类型的调用分派不同的操作,因为适合处理多种数据类型还被PyTorch给学了去。
pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
文章插图
具体到机器学习来说,Julia执行各类算法包括矩阵运算的速度都比Python快得多。
pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
文章插图
Julia生态里也有自己的开源深度学习框架Julia Flux。
pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?
文章插图
此外Julia还在语法上对线性代数、数据处理这些场景有额外的优化。
比如支持Unicode数学符号,数字乘以变量时候可以省略「*」,以及索引从1而不是0开始更符合人类直觉….
【 pytorch|PyTorch核心开发者灵魂发问:我们怎么越来越像Julia了?】Julia代码可以写成这样: