北 京 大 数 据 研 究 院
BEIJING INSTITUTE OF BIG DATA RESEARCH

DeepModeling 社区闭门年会见闻与思考

(以下文章来源于微信公众号:算海扬帆 ,作者魏华祎)


6月5号在北京参加了DeepModeling (DM)开源社区的闭门年会,亲眼见证了 DM 开源社区在推动中国开源科学计算软件发展中的热情、实践和思考。


    鄂维南老师做了《机器学习与科学计算》的开场报告,简明扼要展示了机器学习在解决科学计算维数灾难问题方面的应用潜力,并提出 AI for Science 的概念,指出传统科学领域将成为人工智能领域的主战场,并会催生出新一代的科学计算软件,而这种大趋势需要各个领域的科学研究在发展模式上做出根本性的改变,从保守走向开放,从"小农作坊"走向"安卓"模式的大规模协作。要做出这种改变关键就是开源社区的建设,吸引大家通力协作,共同建设科学研究的基础平台设施。


    鄂老师也指出,传统应用数学的研究通常都过于保守,并给出了一个"打枣问题"的生动比喻。面对这个问题,工程师通常第一步的解决办法是直接挥一杆子,打一下试试,而数学家要首先要证明树上有没有枣子,但这通常都比挥一杆子难很多。鄂老师呼吁应用数学的人都要主动走出自己的小圈子,抓住这次难得的机会,也呼吁更多的年轻人加入开源社区,不要再走以前封闭发展的老路。


    张林峰的报告分享了他从发论文、到开发开源软件、再到建设 DM开源社区的心路历程,对什么是开源、为什么要开源、及如何建设开源社区几个问题做出了很好的回答,让我对开源软件和开源社区的认识更加清晰。我是从2007年起,就开始学习使用源软件,么多年不知不觉已经用过了很多软件,如李若老师的AFEPack、陈龙老师的iFEM、计算几何算法库 CGAL、网格优化算法Mesquite、可视化算法库VTK等等,而且在使用过程中受益非浅。因为可以直接看到软件源代码,遇到问题时就可以深入到代码内部,探究问题的根源。我至今还清晰地记得,自己为了解决一个 AFEPack 程序的计算错误, 花了将近两个月的时间调试的经历。后来是通过研究源代码,才发现是 AFEPack 中一个 bug 造成的,修正后程序结果就完全对了,因为这件事,自己高兴了好多天。回想起来,自己是在不断的源代码探索中,潜移默化地加深了对开源软件的架构和功能的理解,编程设计能力也不断提升,逐渐从简单的模仿走向自主设计,最终有了 FEALPy 和 WHYSC 的出现。如果没有开源软件,仅凭数学专业那点不专业的计算机教育,我是不可能有今天的这些能力的。因为受益于开源社区,所以有了能力后回馈这个社区是自然而然的事情。我下一步的重要任务,就是在开发开源软件的基础上,更深度地参与到开源社区建设中,去吸引更多人在开源社区中真正协作起来,做更有意义更大的事。


    还有很多老师也做了精彩的分享,如王涵对DM软件的发展进行了回顾和展望,陈默涵对国内第一款第一性原理计算软件 ABUCUS 的发展进行了回顾和展望,孙伟杰分享了很多DP社区的运营经验,刘杰分享了非冯诺依曼硬件加速DeepMD计算的工作。从这些分享中,你能深切感受到大家的热情、坚持和创造。


    其中陈默涵的分享让我更加确信,长时间的不断学习积累,是做好一款基础科学计算软件必不可少的要素,而这个时间至少是以10年为尺度。5月底参加杭州的 MEGAS2021 大会时,我发现那些网格生成和应用工作做的非常好的人,也都是坚持做了十几年、二十几年的工作。陈默涵从 2006 年开始开发自主的第一性原理计算软件ABUCUS,头几年主要是实现已有功能,就没有发什么好的论文。博士毕业时,由于没有足够的论文,导致找工作困难重重。在做了六年的博士后以后,才最终在北京大学工学院安定下来。他说要做好一款软件,最重要是的端正态度,要想着一定要把它做好。能在困境中坚持下来,我想他一定有强烈的兴趣和热情做支撑。在决心把 ABUCUS做好时,他是能跨越十几年的时间尺度,逐渐清晰地看到,拥有一款自主第一性原理计算软件的巨大价值,那暂时发不了论文、暂时找不到工作、暂时评不了职称又有什么关系。


    我想陈默涵能坚持下来的原因,也是我能坚持下来的原因。看的越多,经历的越多,我也越来越意识到,做为一个普通人,拥有一个长远一点的目标、并不断积累的重要性。反过来,我也知道当一个人把自己所有的一切都寄托到外部环境上,结果不是躺平,就是走极端。所以我经常跟我的学生讲,作为普通人,除了发论文毕业成家立业外,一定要找一个能超越当下、超越自身和环境的长远目标,这个目标可能最后达不到,也可能需要不断修正完善,但它最主要的功能是作为灯塔,在你经历黑暗的时候,为你指引方向,为你提供更大时间和空间尺度上的意义,让你充满希望,不轻易倒下。很多时候不倒下,你就一定会变的更强,更有希望。有了一个更长远的目标,你就不会轻易急功近利,你就会重视每天的积累,你就会把你每天做的事、每天见的人、每天的学习思考都和这个目标联系起来。这样你会过的很充实,很满足,每天都能安心入眠,同时又期待下一个黎明的到来。

    说实话,中国当下还是缺乏能够支持一个人坚持十几年如一日做好一件事情的大环境。无论是学术界还是工业界,有太多急功近利的人,在没有长期积累的前提下,天天妄想着如何突破和弯道超车。环境是不可能轻易马上改变的,那唯一解决办法就是自己创造新的环境鄂老师在北京大学的研讨会上,问如何发展中国的科学与工业软件,我心中的答案和鄂老师一样,和DM社区的小伙伴一样,那就是发展开源软件,建设良好的开源社区生态。

   

    最后,在开源社区等着你的到来


    在文章的结尾,附上 DM 开源社区的宣言:

    机器学习与物理建模的结合正在改变着科学研究的范式。那些希望通过计算建模突破科学边界、解决困难问题的人们正在以前所未有的新方式集结起来。他们需要新的基础设施——新的协作平台,新的代码框架,新的数据处理手段,新的算力使用方式;他们需要新的文化——追求通力协作、惠及大众;追求知识与工具的自由交流与分享;追求尊重并欣赏相互的成就、和而不同。   

    DeepModeling社区是这样的一群人的社区。

何为DeepModeling?

    机器学习与物理建模是计算的两大战场。前者是处理复杂信息与数据的有效工具;后者是人们认知物理世界的科学方式。二者的有效结合所激发的活力正在影响着科学研究的方方面面。DeepModeling最终将是机器学习、物理建模与前沿计算模式极致结合的一套方法论和工具的沉淀。人们被DeepModeling社区所吸引,是因为它开放与包容的环境,以及它推动全球科学计算事业发展的使命。


为什么选择开源?

    对“开源”一词有不同的解读。DeepModeling社区人对此的共识是,开源是一种基于开放共享精神的软件协同开发模式。机器学习和计算机科学领域的人或许对它早已熟悉,但它在科学计算领域还没有很盛行。我们所提倡的是,一个方法或软件,不应因发表文章的期刊好坏来分别高下,而应就解决问题的能力和对科学的实际贡献论英雄。方法软件的可持续发展需要持续投入人力、不断改进,并需要在开放的环境中把解决的一个个实际问题作为最朴素的测试。这往往是从事科学计算的个人或小组难以承担的。开源社区可以提供好的解决方案。


DeepModeling社区的历史

    “DeepModeling社区”始于“deepmd-kit”项目的发起。“deepmd-kit”是将机器学习与分子动力学结合的软件工具,克服了分子动力学领域长期面临的效率与精度难以兼得的困难。deepmd-kit的早期开发者们用“DeepModeling”这一名字来表示利用深度学习(Deep Learning)工具解决传统多尺度建模(Multi-scale Modeling)中的高维灾难问题。DeepModeling也因此成为最初deepmd-kit项目所在的Github组织名称(https://github.com/deepmodeling)。在deepmd-kit之后,DeepModeling社区陆续发起了dpdata、dp-gen、dpdispatcher等项目,并通过deepks-kit、ABACUS等项目将建模尺度延伸至电子结构。DeepModeling现有项目的发展也让来自世界各地的、各个领域的做分子模拟的人们走在了一起。


DeepModeling社区的短期计划与长期愿景

    短时间内,DeepModeling社区现有开发者将聚焦于原子尺度模拟方法和工具的发展。这包括薛定谔方程求解、电子结构计算、分子动力学模拟、粗粒化分子动力学模拟等;这还包括相应的数据生成、模型训练、高性能优化等内容;此外,这也包括针对不同体系、不同场景、不同目的的不同工作流及其管理工具、算力调度工具的发展,等等。

需要指出的是,物理模型与机器学习的结合往往从根本上改变了一个软件、一个流程的实现逻辑。因此,新基础设施的打造不会一劳永逸,而是必将在持续的迭代与频繁的重构中逐渐完善。

长期来看,DeepModeling社区致力于将所有尺度的物理模型与机器学习方法相结合,运用最前沿的计算工具,解决人类社会所面临的最有挑战性的科学技术问题。


你可以如何做出贡献?

    如果你想在DeepModeling社区已有项目做贡献,请直接上,或者联系相应的开发者交流想法;如果你想在DeepModeling社区开辟新的项目,或者希望DeepModeling社区帮助你开发你的项目,请联系contact@deepmodeling.org。

    如果你是热爱科学的程序员,被DeepModeling开源社区致力打造的未来科学计算平台所吸引,你不仅可以贡献新的算法,也可以贡献代码开发规范、文档写作规范、社区数据库、任务调度、工作流管理等工具,还可以为DeepModeling社区代码架构设计、高性能优化等工作做贡献。科学计算领域的人们将衷心欣赏你的才能和贡献。

如果你是熟悉电子结构、分子动力学、有限元方法等编程框架的硬核开发者,DeepModeling社区将是你大展身手的地方。机器学习的加入让我们从架构设计、每个任务的具体实现、到高性能优化都需要重新思考、反复琢磨。你将成为连接不同领域开发者、贡献者、用户的重要桥梁。

如果你只用过一些基本的科学软件,多多少少做过些后处理的脚本,DeepModeling社区会很需要你!试着在github/gitee和其他交流平台上提问交流、试着提意见,直到试着fork、commit、pr……你一点一滴的贡献会让DeepModeling社区变得更好,DeepModeling社区也将非常感谢你的贡献。

哪怕你只是一个旁观者,如果你支持DeepModeling社区的理念,你的认可和传播也将是对DeepModeling社区最大的肯定与支持。


结语

    尽管人工智能与计算能力有了飞越式的发展,科学计算群体很大程度上仍习惯于传统的套路。很多地方严重依赖“祖传代码”,很多商用软件的核心算法也已经过时。这种自给自足的科学研究模式像是农业时代的“小农经济”模式,往往效率低下。直到近年来,计算科学领域涌现出一批有潜力的开源社区。但是,这些社区往往针对的是特定尺度的特定工具,且往往被特定学术课题组维护,在持续开发、用户体验等方面面临严重挑战。

    DeepModeling项目将改变这一切。

    机器学习与物理建模的结合呼唤新的模式——开源社区模式。这样的模式在计算机和电子工业历史上早有实现——Linux和安卓是最好的例子。从这个意义上,DeepModeling社区是将这些想法借鉴到了科学计算领域。对于所有做计算科学工程的人而言,高效、可复用、可持续优化的建模工具可以让他们摆脱无模型可用的尴尬,摆脱模型反复调参的困局;对于所有做机器学习的人而言,物理模型将会给他们提供新颖而广阔的场景。以开源社区的方式协同开发将使每个人的工作更高效、及时、可靠、透明。这种紧密合作、相互成就的精神也必将激励越来越多的人推动计算的发展、造福人类社会。这是一个振奋人心的机会。这是科学计算的未来!

   

注:DP开源社区宣言的英文文本发布自如下网址,张林峰等人做的中文的翻译

  • https://github.com/deepmodeling/community

  • https://gitee.com/deepmodeling/community