如何谈笑风生做AI开源项目?

 Datawhale干货 

作者:YueTan,AI开源项目

433c624eb63459d3ad0d14cd07eefad8.jpeg

背景

GitHub,国际知名社交网站,汇集了全球众多开源项目,卡脖子留下的一口新鲜空气。细心的人可能注意到,我公众号logo就借鉴了github经典配色

33e8cfab2ab57b3ed87c0a6927df20a9.png

如何谈笑风生地做一个开源项目呢?可以做做资料的收集,也就是github惯用的awesome系列。awesome一个研究方向,awesome面试经验,甚至还可以awesome的awesome。

36c4fd02eb85d2a2454aa876f1518d3a.png

曾做过一个深度学习时序预测工具,也有100star。据我微薄的经验,分享一点开源机器学习的经验。这篇简单的文章,也算多年总结。对时序有兴趣的家人们,也欢迎尝试和参与项目。

github.com/LongxingTan/Time-series-prediction

一: 明确需求、愿景、商业模式

第一步看似没有硬核知识,却最不可小觑。

需求 Requirements

选择自己擅长或喜欢的方向,或有热度的风口方向。好的项目不会被埋没,但流行与否取决于这个方向池子有多大,大致决定了其star上限。

我选择时序是因为18年学编程时做的第一个分析就是时序,之后又一直惯用TensorFlow。所以习惯性地,把二者掺在一起做成撒尿牛丸T(ensor)F(low) T(ime)S(eries)

78afb1e9bcdd56cb7e1824f888b0e09f.jpeg

不曾想,风向很快转了,PyTorch突起,涌现了很多PyTorch时序库,少有人愿意再做Tensorflow,但上限也低。tf2.0后,写法完全变了,不得不重构一版。起了个大早,赶了个晚集。

总之,针对需求,结合自身,参考热点,量力而行,充分发挥先发优势。

愿景 Vision

我最初的设想是功利的,转码简历上留了github地址,好歹写个像样的项目。后来参加比赛,我的愿景变成了全球最好的比赛时序预测工具。正是这个愿景激励着我参加了几场比赛,希望之后能抽出时间在那些“全球”、“世界”开头的比赛里勇夺Top。时间允许的话,更应该像transformers那样支持tf\torch\jax的全面工具。

商业模式 Business

f7b03157eb1d8b9d9e540a247b9ebf73.jpeg

开源的另一大问题是,如何可持续?一些面向KPI开源的大厂,几个commit后已完成KPI就不再维护了。反观一些个人大佬,可以借开源养活自己,文档收费、培训收费、咨询收费等。市场经济里,一定要牢记:

319a3ade1b08cee921bad5842a1f797f.jpeg

我收到过一个外国小伙的咨询,希望和我合作预测博彩。给劝退了,要真能预测,我早就不在工地起早贪黑了。也曾试图在项目里附上了微信打赏码,但人微言轻,至今没有一分钱赞助。

685436a9aed57d07739b5c9ac556bf4f.png

后来不得不改变商业模式,打比赛。天池气象比赛曾有机会收手,但最后一刻被小号绝杀,奖金立减三万,摩托变单车。只好继续上路,“以赛养包”。

当然,明确开源许可证,避免潜在法律风险。

二: 情报调研

69dab4d626e76ba5dd1d821b529c7a6b.jpeg

根据需求进行情报调研。零基础,即使有了方向,往往不知从何入手。最简单的当然是临摹别人,一是学习其写法和规范,二是调研其优势和不足,三是确认这个方向未来是否值得继续,是否还有好果子摘。

调研中我找了另一个时序包pytorch-forecasting,学到了很多开源规范性的东西。还去领英加了作者,商业吹嘘一波。时序预测岂止没有免费午餐,付费都不一定能吃上。我本意是多经历比赛的洗礼,在支持模型方面更独到。

4afa6f81e004c897e41662592280c982.jpeg

明确了需求,收集了情报之后。完成设计文档,设计时尽量保证可扩展、可维护。

三: 明确工程规范

经历所限,我既没有科班经历,也没有软件开发的流程洗礼,很虚。起初,仓库一两百star的时候,根本不是一个包,而是一个demo集合。之后,发现一个完备的Python机器学习包,应该包括测试、文档、CI/CD、示例、构建打包等环节,一点点加了上去。

之后补上的包括代码规范,测试覆盖率,安全扫描等。走了很多弯路之后,发现有一本书已经介绍的很全面了,《publishing python packages》。

41613cdca0a8eb67bc68ad1f26e9025d.png

四: 细化需求

继续完善设计文档,细化需求。比如最基础的,支持哪个或哪些模型?

设计时,涉及到边界问题,必须清晰。这是团队合作的基础,即使是单人项目,何尝不是在和昨天的自己合作?

以我的为例,支持单变量、多变量、单步、多步,后续是否支持分类、异常检测等任务。

  • 实现不同任务的深度学习方法(单变量、多变量、单步、多步、预测、回归、异常)

  • 实现不同模型(rnn\cnn\transformer, deepar, informer等后台模型)

  • 方便的配置,具备较规范的文档、测试、使用样例等

五:写代码

有了设计文档、工程规范、细化需求之后,就差一个写代码的了。

短期milestone:一个完整的包,包括设计文档,注释、可安装包、colab实例等 ,复现几个比赛的top solution,争取复现出相对不错的成绩。

文档:我选择的是Sphinx

测试:unittest或Pytest,注重测试用例和测试覆盖率

其实,很多开源项目的代码质量相对是好的,是值得学习的。

6a1748c01f44aadb904ff62e40ef0360.jpeg

六: 营销推广

好的质量很重要,但好的营销更重要。推广之前,需要项目已达到较高的完成度,否则又会走我的弯路。甚至制定开发计划时,也配套一个推广计划。

一个好的项目要有个logo吧,我花5分钟设计的

596d2eecff49a1ab80287adb2d42d2c8.png

一个方便民族主义营销的项目,得有个古风名字吧,比如伏羲、八戒、封神榜、山海经之类。配上一句“不转不是中国人”的宣传,想不火都难。我非常喜欢的辛弃疾的一句词:“青山遮不住,毕竟东流去。江晚正愁余,山深闻鹧鸪”。所以tfts的中文名为“东流”,寓意着时间序列问题犹如滔滔江水,滚滚东流,多少离谱预测,都付笑谈中;又犹如黄河泛滥,一发而不可收拾。

  • 被动推广:项目初期,有幸得到爱可可老师推广,一天涨了几十star,首次过百,我仍记得那天的兴奋,大佬青睐真是事半功倍。前面介绍的Pytorch-forecasting,接受过TheSequence专访,之后没几天star远远超过我,一骑绝尘,什么是国际巨星啊

    92a45ac3c76099ed5f48520fc378a657.jpeg

  • 主动推广:可以自己去社区多写一些示例文章。某厂,star送开发者礼物的事还是要避免。由于机器学习的独特,文章能推广,比赛也能推广。不过激烈赛事,不是我们零基础混的。还可以写一些论文到opensource,arxiv等推广。

  • 另外,建立微信、slack、discord社群也是不错的运营方式,可以更真实贴近用户需求。路子可以野一点,为了这碗醋,多包几顿饺子。我甚至想过录一些时序视频来宣传,反过来我这篇文章何尝不是tfts的另类推广呢。

七: 维护更新

很惭愧,因为工作性质,我经常整年断更。除了代码更新,我觉得最起码的要求,是认真回答issue里提的问题,之前很多同事经常重复的一句话:没有愚蠢的问题,只有愚蠢的答案。我一开始,看到很基础的问题不愿意花时间回应,这是不对的;然后就是积极bugfix。可虑用github自带的project功能进行项目规划与管理,也就是认真用项目管理和产品的角度对待自己的开源。为开源世界做一点微小的工作,使得人人有丹炼,人人有源开。

ae917dbf6002c805a3af3c7aca45d830.png

干货学习,三连

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值