一年过去了一年后,我又回来了:这次是前往西海岸参加下一届 JuliaCon。最新一届的会议承诺将会有更多演讲、研讨会和更广泛的社区参与。像往常一样,会议第一天专门用于研讨会。
第一个研讨会是关于DifferentialEquations 生态系统的,由Chris Rackauckas 主持,他谈到了他将该生态系统打造成科学家模拟的一站式解决方案的愿景。它确实看起来正在发展成为一个强大的生态系统。顺便说一句,Chris 还有一支 GSoC 学生团队致力于改进许多不同的细小部分。我参加的下一个研讨会是关于Optim.jl
的。统计学习问题通常是最小化问题,其中要最小化的目标函数是你的误差函数。Optim 生态系统提供了丰富的解决此问题的技术,并为用户提供了丰富的选项和回调,以便用户了解其问题为何没有收敛。
最后一个研讨会是关于 Julia 中的机器学习。它从头开始解释机器学习的概念,然后用纯 Julia 代码实现它们。然后我们深入研究神经网络和深度学习,然后用纯 Julia 编写循环网络。
回想起来,这一天过得相当充实,但我不得不赶回家开始准备我的演讲。
第一天由劳伦斯伯克利国家实验室(LBNL)的研究科学家Fernando Perez发表的主题演讲,内容是关于如何使用 Binder 等在线软件和工具来渲染 Jupyter notebook,以及这将如何帮助研究人员以 notebook 的形式共享他们的图表和结果。Stefan 的Pkg3 演讲阐述了旧包管理器的问题,然后阐明了 Pkg3 如何解决其中一些问题。此时,我决定复习一下我和我的同事Simon Byrne关于 Miletus 的联合演讲,Miletus 是一个用于对金融合约建模并使用一系列算法对其进行估值的 Julia 包。下午,我的同事Jameson试图分解 Julia 编译器的内部工作原理以及他可能希望采用的未来方向,之后Tim Besard谈到了他关于原生 GPU 代码生成的工作,他拦截 LLVM IR 以生成直接在 GPU 上运行的 PTX 代码。
很高兴看到我的同事Mike Innes谈论Flux,这是一个新的用于机器学习的 Julia 包,旨在将模型视为具有可调参数的函数。通过使用宏和函数式编程范式,Flux 的易用性将允许开发人员设计复杂的神经网络架构,并像任何人在普通 Julia 函数中一样逐步遍历每一层。虽然 Flux 旨在充当规范库,但像KNet.jl
这样的包旨在充当一个合适的计算后端。Deniz Yuret解释了Knet.jl
如何使用动态计算图并使用自动微分来获取任何 Julia 函数的梯度。该包使用了作者声称在使用静态计算图的其他框架中缺少的几个高级语言特性。
第二天开始于Mykel Kochenderfer与 FAA 和林肯实验室在防撞系统方面的工作。他详细介绍了在不确定性下必须处理的复杂决策过程。随后是 Jeff 对类型系统大修的回顾。对我来说,这是本次会议上最好的演讲之一,因为 Jeff 将相当复杂的想法分解成易于理解的简单想法。我也有机会第一次听到关于概率编程的演讲,该演讲由Kai Xu发表。下一个演讲是关于多维信号处理的,特别是重点介绍了 Shear 变换。我很高兴地得知作者Hector Andrade Loarca在他的研究中使用了ArrayFire.jl
,并且它对他有很大帮助。
Celeste 主题演讲是当天的亮点,我的同事Keno深入探讨了计算的细节。他谈到了他如何必须对 Julia 编译器进行一些改进,以便使内存访问模式更统一,从而更高效,以及他们如何甚至几乎按原样使用 Julia 包来进行项目。不仅他们实现了超过 1 Petaflop(这可能是高生产力语言的首次),而且他们设法在没有编写手动调整的 Ninja 代码的情况下实现了这一点。对我来说,这是最大的成就。在主题演讲之后,我不得不赶去准备我在会议上的第二个演讲:Circuitscape
,一个景观建模工具,用于计算穿过大片土地的最小阻力路径。我详细介绍了我对该包的愿景以及我将如何实现它,并希望赢得了一些合作者。
在一天结束时,有一个海报会议,GSoC 学生在海报上展示他们的工作。它们都非常棒。特别是看到我们的一位老实习生 Divyansh 在LightGraphs.jl
上做了一些很棒的工作,他在其中使用加权图并行化了介数中心性和 Dijkstra 算法。Kenta Sato,他是Bio.jl
的核心贡献者,作为一名 GSoC 学生回来了,并且正在尝试使用Dagger.jl
将一些并行性引入Bio.jl
。
会议的最后一天开始于加州大学伯克利分校的Kathy Yelick谈论高性能计算 (HPC) 和大数据世界如何融合,以及研究人员需要找到哪些方法来处理更多数量的科学数据。然后是与Jiahao一起进行的轻松环节,讨论“如何认真对待向量转置”。他回顾了著名问题#4774的历史,其中大部分涉及到对“向量”一词的不同含义进行激烈的讨论。下午开始于Stefan简要介绍了 Julia 1.0 的路线图,向社区保证尽管最新的 master 版本称为 0.7-DEV,但 1.0 仍在进行中。随后是关于为什么 Julia 是一种适合数学编程的优秀语言的非常有趣的会议,由 Madeleine Udell 发表,重点介绍了Convex.jl
包,该包推断并制定凸优化问题。Convex 和JuMP是 Julia 中强大的优化生态系统顶峰上的两颗明珠。
会议结束于Jeff Bezanson发表的关于 JuliaDB 的简短演讲,JuliaDB 是来自 JuliaHub 的 JuliaFin 产品的一部分的内存数据库,最近已开源。它支持关系查询和类似 SQL 的查询,并在后台使用Dagger.jl
。Jeff 讲完后,问答环节似乎比演讲本身持续的时间更长,这表明参与者不愿意让会议结束。
虽然这几天确实非常忙碌,与合作者举行了无数的会议,并获得了大量信息,但我发现我可以带着满足感回顾这一周。回顾过去,我惊喜地发现社区多年来发展了多少:主题的广度、参与人数的规模,最重要的是,社区的温暖。我感觉这个社区只会越来越大,每一次 JuliaCon 都是对此的证明。