7 月 19 日,由 Julia 高性能编程语言初创团队建立的 Julia Computing 公司,宣布完成由 Dorilton Ventures 领投的 2400 万美元 A 轮融资(折合人民币约 1.6 亿)。参与此次融资的还包括 Menlo Ventures、General Catalyst 以及 HighSage Ventures 等。此外,前 Snowflake CEO 兼前微软服务器及工具业务总裁 Bob Muglia,也将正式加入 Julia Computing 董事会。
Julia 编程语言最初由麻省理工学院(MIT)立项开发,目前在全球用户中拥有 2900 多万次下载量,具有 3.4 万颗星,已经有数千位开源开发者为 Julia 及其 6000 多个注册软件包贡献力量。全球超过 1500 所高校已经在使用 Julia 并教授相关知识,包括麻省理工、斯坦福大学、加州大学伯克利分校等世界一流学府。目前全球已经有超过 1 万家公司使用 Julia 语言,其中包括阿斯利康、贝莱德、谷歌、英特尔、微软、Moderna、辉瑞、NASA、联邦航空管理局以及纽约联邦储备银行等重量级用户。
自 2012 年正式亮相以来,Julia 社区规模也呈指数级增长。Julia 帮助科学家及工程师们解决各类大规模数据科学问题,消除了只能使用高级语言(例如 Python、Matlab 或 R 语言)进行测试与建模环节、并使用其他高性能低级语言(例如 C 或 C++)进行生产与扩展的割裂问题。
Julia Computing 将利用这笔资金进一步开发并改进旗下高安全性、高性能水平的 JuliaHub 云平台,同时着力拓展 Julia 生态系统。JuliaHub 能够帮助数据科学家及工程师以更快速度轻松开发、部署并扩展 Julia 程序及模型。
Dorilton Ventures 投资负责人 Daniel Freeman 评论道,“Julia 代表的是一项真正具有变革性的业务,具有巨大的成功潜力。”
Julia:一门高效且实用的语言
Julia 语言是一门让数据科学家和工程师们兴奋不已的语言。
使用编程语言的人大致可以分为两类:一类是比较关心生产效率的程序员、数据科学家、社会科学家以及需要使用非常高级的工具进行分析和仿真的群体。另一类人则更关心代码的性能,他们会编写非常底层的代码,并充分利用内存的层次结构,确保能充分利用硬件的性能。
在实际场景中,举例来说,如果用户使用 Python 之类的语言来编写一个程序,他能享受到这门语言的友好语法和交互性。这个程序的测试版可以解决问题,但是如果想把它扩展到更实际的应用中,速度就会很慢。之所以这样是因为熟悉性能的人编写的都是高性能语言,而知道最终用户在高生产效率系统中的实际需求的人编写的都是高生产效率的语言,但后者实际上可能不是计算机科学家,只是拥有实现这一目标所需的专业知识。
Julia 语言的缔造者们,希望有一门语言能同时满足计算机科学领域的专家,以及在实际应用方面使用过 R、Matlab、SAS 和 Python 之类的语言工具的人。最后他们通过非常巧妙的编程语言设计从技术上实现了这个目标,其中包含两个核心方面:
一个就是研究动态语言的哪些特征使其难以有效的进行编译,这些特征可能包括任意的非局部效应。你正在进行的一些操作可能产生了持久的正面影响,但是没有实现有效的表达。如果你对此加以限制,并且对语言的设计方式有更加巧妙的构思,就可以获得类似动态和高效的语言,但同时也出现了导致传统动态语言出现性能问题的情况。
另一个核心方面是一个系统,称之为“动态多分派(dynamic multiple dispatch)”,它是 Julia 语言的核心范式,允许我们针对特定类型的参数进行动态最优算法选择。很多年前人们就开始研究动态多分派,但是从来没有一个系统能够从头到尾真正对其进行优化。所以在 Julia 出现之前,这种编程范例的优点从未在系统中真正实现过。
与其它编程语言相比,Julia 性能优异
在 Julia Computing 公司担任 CTO 的 Keno Fischer 对此评论道:“我认为 Julia 实现了编程语言方面的核心技术创新。”Keno Fischer 毕业于哈佛大学,自高中开始就参与 Julia 语言的开发,并在 2015 年与其他开发者共同创立了 Julia Computing。
Julia 凭什么能在 2021 年大放异彩?
在经历了默默无闻的十余年耕耘积累之后,开源 Julia 终于走上了大型企业代码现代化舞台的中心。
Julia Computing 公司联合创始人兼 CEO、Julia 语言联合缔造者 Viral Shah 表示,“现在的技术计算已经停滞不前,数据科学家和工程师们仍在使用几十年前设计的产品… 我们正用实际行动定义数据科学与模拟的未来。”
说起这些老的语言,相信大家都有类似的评价——既不灵活、也不优雅,但就是能用。不过随着越来越多科学及工程代码提出愈发迫切的更新需求,我们确实更需要借助 AI/ML 之力调整 C 或 C++ 代码表达、或者在合适的范围内使用 Python 等现为现代化的语言。也正因为如此,我们得以亲眼见证基于机器学习的差分编程等工具等众多科学及工程领域中的广泛普及与实践应用。
而这一切,正是开源 Julia 语言项目从十几年前至今就一直为之努力的核心。目前的现实问题在于,随着财富五百强企业及各大型研究中心不断推进代码现代化工作,Julia 语言的稳定性、商业应用趋势以及代码与业务转型,能否支持 Julia Computing 公司在商业市场上站稳脚跟并谋求发展。
Julia 语言的最初灵感可以追溯到 2009 年的麻省理工学院(MIT),其目标是解决一个当下仍然存在的问题:有些语言性能更高(C 或 C++)、有些语言进行复杂系统编程时用着更爽(Python),如何把二者统一起来。虽然双方都能完成工作,但不同语言的接口及流程之间天然存在摩擦。除此之外,很多高价值科学及工程项目中的代码都是几十年前开发而成的产物,不仅在本质上相当混乱,而且大多基于四十多年前那时还算先进的开发思路、如今已经彻底落伍。
尽管 MIT 发出了明确的号召并给予坚定的支持,但直到 2012 年 Julia 才发展成为开源语言项目,而且自身体量始终不算太大。Julia 到 2018 年底才迎来自己的 1.0 版本。一路走来,Julia 项目本身经历了不少坎坷、参与者们也饱受不断变化的开源开发模式的影响,甚至就连用户也需要忍受每个月都有重大修复的持续折磨。但在此之后,情况开始日益稳定,事实证明 Julia 的出现恰逢其时。
以 Julia 语言本身为跳板,项目的长期贡献者之一 Keno Fischer 开始观察 Julia 能够解决的实际问题——换句话说,他希望 Julia 不仅作为一种独立的语言,还应成为一套受支持的平台乃至可以自给自足的成熟生态。在对 Julia 低级编译器及其他基础功能研究了近十年之后,Fischer 与另外两位 Julia 长期贡献者共同创立了 Julia Computing 公司。他们希望让 Julia 经受更为严苛的检测——不仅作为一门新的语言,更要成为面向制药、金融、高性能计算及能源等各个领域的精简化编码方式。
这一切回报终于在过去几年中得到了回报。Julia Computing 开始帮助辉瑞公司模拟新药、帮助阿斯利康实现基于 AI 的毒性预测、帮助欧洲保险业巨头 Aviva 处理合规问题、为美国联邦航空局(FAA)提供机载碰撞预警程序、为思科提供基于机器学习的网络安全方案,同时服务于其他多个国家实验室及学术机构的研究项目。Julia Computing 还曾在今年获得了 DARPA 的资助,负责帮助其更新半导体代码以提高模拟效率——Julia 语言也凭借着过硬的自身素质,赢得了 DARPA 的由衷赞誉。
Fischer 解释道,“包括半导体行业在内,我们的语言之所以能够在各个领域取得辉煌的成绩,其核心原因在于现行的大部分标准工具源自上世纪七十到八十年代的早期计算发展时期。那时候人们刚刚开始为商业或学术应用编写软件,而且开发思路没办法摆脱当时的时代局限。从上帝视角来看,目前的 SPICE 电路模拟器等各类软件总会有大量拼凑而成的专有版本,着实让用户感到头痛。Julia 就解决了这个难题——这个问题的核心,在于模拟器往往使用 C 语言编写、脚本却全是 Python 形式。这时候当人们想要实现高级功能,例如在集成机器学习中实现参数化和指标测量,那些八十年代的遗留产物就会成为巨大的阻碍。”虽然还达不到一键转换的效果,但只需要投入一点点努力,Julia 就能帮助用户在现为现代的堆栈之上获取必要功能。
在行业实际应用方面,不同开源技术之间存在巨大差距,要让成果获得财富五十强企业的数据科学家们的认同更是难上加难。对于 Julia 来说,虽然前进的脚步不算迅捷,但却是踏踏实实、稳扎稳打,而且属于它的飞跃正在来临。
从公司的角度来看,成立于 2015 年的 Julia Computing 只在起步阶段拿到过 460 万美元资金,之后就再没有进行任何融资。不过 Fischer 强调,通过早期咨询业务,Julia 已经得到了金融服务用户们的高度认可。
Fischer 在采访中表示,“自 1.0 版本发布以来,我们一直在探索建立起真正可持续的业务体系。咨询和支持业务当然很好,但也对社区规模有着比较严格的要求;我们的能力足以在帮助制药及其他应用领域解决大问题的同时,继续保持语言的顺利发展。当下,我们的工作重点开始转向如何在特定行业中运用这项技术。我们掌握着微分方程求解器及现代编译器技术,足以替换掉那些已经有着三、四十年历史的 Fortran 代码。我们相信这些工具将给各个行业带来巨大帮助,在不影响开源发展的前提下实现良好的商业回报。”
对于在开源项目上默默耕耘多年的参与者们来说,光明的商业化前景当然令人欣慰。但这一切不可能凭空到来,Julia 的商业化路线究竟是如何实现的?
Fichser 指出,“开源项目的货币化努力总是压力重重。在项目开发早期,就有一些风投建议我们把性能优化功能当作付费开放的选项,这样更容易获利。但我们不想这么干,我们开发 Julia 的初衷就是为人们提供能真正解决困难问题的工具,而为了赚钱故意把核心功能去掉简直离谱。所以我们坚定了决心,要找到一条既不阻碍技术应用、也能从中获利的发展道路。”
在被问及项目团队的 40 名全职成员(几乎每一位都是 Julia 委员会的长期成员)在融资之前是否都能拿到报酬时,Fischer 给出了肯定的答案,但最终的决定性因素仍然是 Julia 语言能不能按时达成预期的研发目标。成员们在差分编程等具体功能上投入了大量精力,同时结合自身从业经历帮助机器学习技术与传统科学及工程应用相融合,最终使得 Julia Computing 得以在各个行业当中开辟出重要的利基市场、也让 Julia 成为能够以数据填补缺失知识的强大工具。
Fischer 还提到,公司目前的开发工作主要集中在 JuliaHub 云平台上,这套平台负责为早期大型计算用户提供服务。公司的另一个重点则是特定领域开发,半导体行业就是其中一例。但真正让 Julia Computing 成功破圈、走入大众视野的,还要数他们与合作伙伴 Pumas.AI 在制药领域取得了成功,特别是在各大疫苗及药物制造商的新冠疫苗研发中提供的助力。
Fischer 最后总结道,如今掌握着数十年代码“遗产”的大公司们终于意识到该如何拥抱新时代。与此同时,Julia 投入大量时间和精力培育出的开源果实也终于获得了回报,吸引越来越多的开发者为自己的新项目选择 Julia。虽然还不能断言 Julia 语言就能引领工程技术开发的下一个世代,但至少对某些重量级科学及工业客户而言,以往不同语言、不同接口相互角力的局面已经让他们苦不堪言。而经历了长途跋涉、以 AI/ML 为核心劲力的 Julia 语言很可能在新的一年、甚至更远的未来,在整个开发领域中成为一座指引方向的耀眼灯塔。
延伸阅读:
https://www.hpcwire.com/off-the-wire/julia-computing-raises-24m-series-a-former-snowflake-ceo-bob-muglia-joins-board/
https://www.nextplatform.com/2021/03/22/why-julia-is-turning-heads-in-2021/
https://www.infoq.cn/article/DFu3RY9ONo6mmw7TUUdB