零基础如何做AI开源项目?

image.png

背景

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

image.png

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

image.png

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

github.com/LongxingTan/Time-series-prediction

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

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

需求 Requirements

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

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

image.png

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

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

愿景 Vision

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

商业模式 Business

image.png

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

image.png

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

image.png

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

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

二: 情报调研

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

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

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

三: 明确工程规范

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

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

image.png

四: 细化需求

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

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

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

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

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

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

五:写代码

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

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

文档:我选择的是Sphinx

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

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

六: 营销推广

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

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

image.png

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

  • 被动推广:项目初期,有幸得到爱可可老师推广,一天涨了几十star,首次过百,我仍记得那天的兴奋,大佬青睐真是事半功倍。前面介绍的Pytorch-forecasting,接受过TheSequence专访,之后没几天star远远超过我,一骑绝尘,什么是国际巨星啊
image.png
  • 主动推广:可以自己去社区多写一些示例文章。某厂,star送开发者礼物的事还是要避免。由于机器学习的独特,文章能推广,比赛也能推广。不过激烈赛事,不是我们零基础混的。还可以写一些论文到opensource,arxiv等推广。
  • 另外,建立微信、slack、discord社群也是不错的运营方式,可以更真实贴近用户需求。路子可以野一点,为了这碗醋,多包几顿饺子。我甚至想过录一些时序视频来宣传,反过来我这篇文章何尝不是tfts的另类推广呢。

七: 维护更新

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容