2022年,你会选择哪种编程语言?几年前,有传言称Julia将取代Python成为新的最流行的编程语言之一。我们暂时对这种说法持观望态度,但作为科学计算的有力工具,Julia的优势已经显现,这意味着程序员又多了一个选择。在数据科学、人工智能等领域,如果我们仔细比较Julia和Python,我们会发现:同样的任务,只要Python能做到,Julia都能做到,而且效率要高很多,语法也简洁优雅。其实口碑还不如Python。近日,reddit上的一个热门话题引起了大量网友的讨论。跟帖提到,近日,一些Julia语言包的开发者讨论了ML在Julia中的现状,并将其与PythonML生态系统进行了比较。比较。原帖地址:https://www.reddit.com/r/MachineLearning/comments/s1zj44/r_julia_developers_discuss_the_current_state_of/来自乌得勒支大学的JordiBolibar认为“Julia在机器学习方面确实有很大的潜力,但其目前的状态有点喜忧参半.更具体地说,我在SciML中坚持使用Julia的主要原因是DifferentialEquations.jl库工作得非常好,但在Python中没有发现任何类似的东西。然而,对于我的研究,真正的痛苦是AD部分。自从我开始使用Julia以来,我在Zygote中遇到了两个错误,这让我的工作减慢了几个月。但我仍然认为Julia是SciML的最佳选择,但这些库(及其文档)应该被优化以对用户更加友好。”网友@jgreener64表示:“MLinJulia在某些领域非常强大,在Julia中一切皆有可能。Julia面临的问题是:MLinJulia需要大量现有知识或大量时间搜索/试错。关于在个人层面,我目前正在Julia中开发新颖的可微分算法。”除了网友们的热烈讨论,Julia包开发者ChristopherRackauckas围绕以下7个问题,回答了网友们比较关心的内容。Rackauckas是麻省理工学院和马里兰大学的数学家和药理学家,主要使用Julia编程。Rackauckas有一个关于Julia、数学和随机生物学的专门博客,并且Rackauckas在Julia中开发了几个库,包括(但不限于)DifferentialEquations.jl和Pumas。ChristopherRackauckas的问题包括:如今Julia中的ML在哪些方面真正大放异彩?在不久的将来,该生态系统在哪些方面优于其他流行的ML框架(例如PyTorch、Flax等)?为什么?Julia的ML生态系统目前在功能或性能方面存在哪些不足?Julia什么时候在这些领域变得有竞争力了?Julia中的标准ML包(例如深度学习)在性能方面如何与流行的替代方案进行比较(更快、更慢、相同数量级)?是否有任何重要的Julia实验可以与流行的ML替代方案进行基准测试?如果一家公司或机构正在考虑创建一个角色来为Julia的ML生态系统做出贡献,是否有任何最佳实践?他们为什么要这样做?哪些贡献最具影响力?为什么使用其他框架的独立开发人员应该考虑为Julia的ML生态系统做出贡献?Julia开发人员倾向于使用哪些包来完成某些特定任务?Julia开发人员希望添加哪些当前不存在的内容?下面,我们挑选了几个大家比较关心的问题进行汇报:问题三:Julia在“标准ML”中的表现如何?Julia的内核速度很好:在CPU上我们做得很好,在GPU上每个人都调用相同的cudnn等;朱莉娅的AD速度也不错。尽管Zygote可能会有一些开销,但与Jax/PyTorch/TensorFlow相比,Zygote在大多数情况下都很快。具体来说,PyTorch开销要高得多,甚至在标准ML工作流中都无法衡量。足够大的矩阵乘法可以解决分配或其他O(n)问题;Julia不融合内核,因此在大多数基准测试中,如果用户查看它,它不会融合conv或RNNcudnn调用。问题4:我们应该跟踪哪些重要的实验和基准?XLA的分布式调度器非常好。当我们考虑缩放时,我们应该忽略PyTorch并考虑DaggerFlux和TensorFlow/Jax。XLA更灵活地改变操作,所以我认为XLA是赢家,我们需要使用e-graphstricks来匹配它。另一个需要注意的是“自动微分中缺少中间部分”,需要解决。问题七:推荐的软件包有哪些?我倾向于在需要时使用Flux,但人们尝试改用DiffEqFlux。就现有内核而言,Flux是最完整的,但它的风格让我很恼火。我想要一个不使用隐式参数但使用显式参数的Flux。我希望这些参数由ComponentArrays表示。
