OpenMLDB: 请先来一段自我介绍吧。
徐鹏程: 我本科就读于上海交通大学,硕士在伊利诺伊大学香槟分校,专业都是电子与计算机工程,感兴趣的方向有机器学习在生物信息等领域的应用、计算机系统与架构、分布式系统等。平时喜欢唱歌、健身、弹吉他,应该算是一个非典型理工生。
OpenMLDB: 请问是什么样的契机让你接触到了 OpenMLDB 呢?
徐鹏程: 最开始是因为想参加 GSOC 加入了一个分享开源活动的QQ群,虽然 GSOC 的报名没有通过但是在这个社群中了解到很多其他的活动,也接触到了 OpenMLDB 在 GLCC 开源夏令营中的项目。
OpenMLDB: OpenMLDB 社区给你的初印象是怎样的呢?
徐鹏程: 对 OpenMLDB 的第一印象就来自于这个名字 Open source Machine Learning Database ——开源机器学习数据库,觉得是一个听起来挺新颖也有前景的数据库。接触之后,我会发现 OpenMLDB 是一个务实的项目,比较注重企业应用,贴近生产环境,是会真正落地、有实践意义的应用。
OpenMLDB: 为什么在众多项目中选择了 OpenMLDB?
徐鹏程: 实习期间对自动机器学习有过调查研究,在这个过程中产生了很多兴趣。包括在之前做科研实现机器学习项目的时候也经常会遇到调参的问题,那个时候也会想是否可以通过类似AutoML的方法自动化的解决这些问题。看到 OpenMLDB 整合自动特征工程这个课题的时候,感觉它和自己从前遇到的许多问题、想解决的许多问题都不谋而合。
OpenMLDB: 参与这样的开源活动你的感受和在校学习以及实习有什么不同吗?
徐鹏程: 开源项目的代码是会公开展示和提供给互联网上的所有用户,在公共的平台上做出贡献会让我更有成就感。尤其是参加像 OpenMLDB 这样已经收获很多关注、被许多企业落地应用的开源项目,会带给我更多被认可的感觉,觉得自己确实有做出贡献、提供改变。还有一点不同的是,参与开源项目和导师的沟通非常频繁,每周会有 1-2 次的交流,遇到问题可以马上得到指导。
OpenMLDB: 那可以介绍一下项目开发期间社区和导师给你带来的最主要的帮助是什么?
徐鹏程: 其实在参与开源之前社区和导师就根据我的申请书提供了很多指导意见,修改了很大一部分认知不到位的内容。在开源过程中,很多时候作为一个刚刚接触 OpenMLDB 的新手,我在开发过程中要走很多弯路。导师的经验和判断可以帮我避开很多不必要的工作,更快熟悉项目以及更精准地切入核心问题。
OpenMLDB: 你参与开源初心是?
徐鹏程: 说到开源,我的第一反应就是比较酷。能把我们写的代码放在 Github 上让大家自由地浏览使用、探讨交流,能让自己的工作为世界的进步做出一些贡献,本身就很酷而且很让人开心。把这样的经历放在简历上也能给自己加分,开源为自己带来一定的竞争力。而且许多开源项目是积累时间长、功能丰富、项目成熟,代码会积累达到十几万行,真的要为项目做出改进是有挑战性也能带动成长的一件事。
OpenMLDB: 对于新手入门有什么建议呢?
徐鹏程: 可以从一些开源的活动入手,挑选和自己经验能力匹配、和感兴趣的方向有相似性的项目,积极地与社区交流沟通、获得指点引导。同时也可以在最开始尝试的时候,主动降低自己参与开源的门槛,选择一些 good first issue 甚至是在文档中修改错别字。熟悉社区、熟悉项目之后,就可以和开源越走越近。总的来说,就是要循序渐进并且结合自己的兴趣与能力。
OpenMLDB: 可以再给想参与开源的学弟学妹一些建议吗?
徐鹏程: 多多获取信息的来源渠道非常重要。有的时候大家并不是没有能力去参与开源,而是根本就没有了解和接触。在获取相关的信息之后,更进一步需要的是交流。无论是同学、导师还是社区,我们都可以去主动的沟通,了解自己的能力可以解决的问题、所匹配的需求。对自己的能力和社区的需求都有清晰认知和关联匹配,这已经是成功的一半了。
还有需要补充的一点是,如果想参加开源活动,一定要注意时间安排,不要因为卡着 DDL 而错失机会。
OpenMLDB: 在项目进行中遇到的印象最深刻的问题是什么?如何解决的?有什么收获吗?
徐鹏程: 主要的困难还是在方案的设计和实现上。比如说在整合自动特征工程中,我们得到OpenMLDB返回的数据之后需要筛选重建新的 SQL 时,遇到了一些逻辑上的难点。比如说,如何把列名和 SQL 对应起来,无差错地重建 SQL。一开始我的方案是通过一系列的 if else 条件去解析列名再重建 SQL,但是这样的方法再逻辑实现上比较困难,也容易出错。后来的新方案是把列名和对应的 SQL 用 Python 的 dictionary 一 一 对应起来,这样能保持正确的映射关系。虽然会需要一些存储空间,但是能保证正确性。
OpenMLDB: 那你对 OpenMLDB 整合自动特征工程 还有更高的期待吗?
徐鹏程: 最直观的来说,我认为用户使用的便捷程度还有很多提升的空间,如果时间充足的话,我想编辑一个配套文档,可以清晰地表达配置步骤,方便使用者上手。第二点是,代码的整洁性可以继续优化,有一部分重复使用的代码可以封装成函数直接运用。最后一点是功能上可以持续升级,尤其是构造新特征和特征选择算法这两个方向可以深入调研,寻找更通用更强大的实现路径。
OpenMLDB: 可以给想加入开源的同学们一些建议吗?
徐鹏程: 勇敢迈出第一步,不要把时间浪费在观望上。