欢迎关注我的公众号:YueTan

​背景

GitHub,知名社交网站,汇集了全球众多开源项目。细心的人早已注意到,我公众号的logo就借鉴了github经典配色

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

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

github.com/LongxingTan/Time-series-prediction

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

第一步看似没有硬核知识,却不可小觑。
需求 Requirements
选择自己擅长或喜欢的方向。虽说好的项目不会被埋没,但流行与否取决于这个方向池子有多大,大致决定了其star上限。
我选择时序是因为学编程时做的第一个分析就是时序,我又一直惯用TensorFlow。所以习惯性地,把二者掺在一起做成撒尿牛丸T(ensor)F(low) T(ime)S(eries)

不曾想,风向很快转了,PyTorch异军突起,涌现了很多PyTorch时序库,竞争激烈。打了个时间差,少有人愿意再做Tensorflow,但上限也低。tf更新2.0后,写法完全变了,又不得不重构一版。起了个大早,赶了个晚集。
总之,针对需求,结合自身,量力而行,不重复造轮子,充分利用先发优势。

愿景 Vision
我最初的设想是功利的,简历上留了github地址,好歹有个像样的经项目。后来参加比赛,我的愿景变成了做全球最好的比赛时序预测工具。正是这个愿景一直激励着我参加比赛,希望之后能在那些“全球”、“世界”冠名的比赛里勇夺Top。但时间允许的话,更应该做成transformers那样支持tf\torch\jax的全面时序工具。
商业模式 Business

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

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

后来不得不改变商业模式,打比赛。天池气象比赛曾有机会收手,但最后一刻被元宇宙大学小号绝杀,4万变1万,摩托变单车。只好继续上路,持续优化,希望“以赛养包”。
最后,明确开源许可证,避免潜在法律风险。

二: 情报调研

根据需求进行情报调研。零基础,即使有了方向,往往不知从何入手。最简单的当然是临摹别人,一是学习其写法和规范,二是调研其优势和不足,三是确认这个方向未来是否值得继续,是否还有好果子摘。
调研中我找了另一个时序包pytorch-forecasting,就去领英加了作者,商业吹嘘一波,学到了很多开源规范性的东西。而时序预测是没有免费午餐的,我的本意是让tfts多经历几个比赛的洗礼,在支持模型方面更独到。

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

三: 明确工程规范

经历所限,我既没有科班经历,也没有软件大厂的流程洗礼,工程和流程都很虚。起初,仓库一两百star的时候,根本不是一个包,而是一个demo集合。之后,发现一个完备的Python机器学习包,应该包括测试、文档、CI/CD、示例、构建打包等环节,一点点加了上去。
之后补上的包括代码规范,测试覆盖率,安全扫描等。走了很多弯路之后,发现一本书已经介绍的很全面了,《publishing python packages》。

四: 细化需求

继续完善设计文档,细化需求。比如最基础的,支持哪个或哪些模型?
设计时,涉及到边界问题,必须清晰。这是团队合作的基础,即使是单人项目,何尝不是在和昨天的自己合作?支持单变量、多变量、单步、多步,后续也可以比较简单的支持分类、异常检测等任务。
实现不同任务的深度学习方法(单变量、多变量、单步、多步、预测、回归、异常)
实现不同模型(rnn\cnn\transformer, deepar, informer等后台模型)
方便的配置,具备较规范的文档、测试、使用样例等

五:写代码

有了设计文档、工程规范、细化需求之后,就差一个写代码的了。
短期计划:一个完整的包,包括设计文档,注释、可安装包、colab实例等 ,复现几个比赛的top solution,争取复现出相对不错的成绩。
文档:我选择的是Sphinx
测试:可以unittest或Pytest,注重测试用例和测试覆盖率
其实,很多开源项目的代码质量相对是好的,是值得学习的。有图为证

六: 营销推广

好的质量很重要,但好的营销更重要,事半功倍。当然推广之前,需要项目已达到较高的完成度,否则就会走我的弯路。甚至制定开发计划时,也配套一个推广计划。
一个好的项目要有个logo吧,我花5分钟设计的

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

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

主动推广:可以自己去社区多写一些示例文章。某大厂,star送开发者礼物的事还是别做了。由于机器学习的独特,文章能推广,比赛也能推广。不过激烈赛事,不是我们零基础混的我还没有经验。还可以写一些论文到opensource、arxiv等推广。
另外,建立微信、slack社群也是不错的运营方式,可以更真实贴近用户需求。路子可以野一点,为了这碗醋,多包几顿饺子。我甚至想过录一些时序视频来宣传,反过来我这篇文章何尝不是tfts的另类推广呢。

七: 维护更新

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

如何做AI开源项目?零基础到100star相关推荐

  1. Rust 升级成微软第一梯队语言;“熊孩子”乱敲键盘攻破 Linux 桌面;500 个值得学习的 AI 开源项目| 开发者周刊...

    整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) CSDN开发者周刊:只为传递"有趣/有用"的开发者内容! 本周热门项目 0.Rust 升级成为微软一级项目 2015 ...

  2. 【周刊】“熊孩子”乱敲键盘攻破 Linux 桌面;500 个值得学习的 AI 开源项目;Rust 升级成为微软一级项目...

    整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) CSDN开发者周刊:只为传递"有趣/有用"的开发者内容! 本周热门项目 0.Rust 升级成为微软一级项目 2015 ...

  3. 精品收藏:GitHub人工智能AI开源项目

    精品收藏:GitHub人工智能AI开源项目 绝对精品!!!花了点时间,鄙人把这几年收藏的开源精品项目,整理一下,方面以后查找.其中涵盖了姿态检测,图像分割,图像分类,美学评价.人脸识别.多尺度训练,移 ...

  4. 9款超赞的AI开源项目!| 本周Github精选

    来源:PaperWeekly 本文共1296字,建议阅读6分钟. 本文为你分享9款实用的AI开源项目,功能强大,值得收藏! Semantic Segmentation PyTorch #PyTorch ...

  5. 阿里云机器学习平台PAI+AI开源项目测评来啦

    一.背景介绍 阿里AI(阿里灵杰)依托阿里领先的云基础设施.大数据和AI工程能力.场景算法技术和多年行业实践,一站式地为企业和开发者提供云原生的AI能力体系.帮助提升AI应用开发效率,促进AI在产业中 ...

  6. proteus仿真micropython_【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行...

    1.hello micropython #MicroPython动手做(04)--零基础学MaixPy之基本示例 #程序之一:hellomicropython #MicroPython动手做(04)- ...

  7. AI开发者大会之AI学习与进阶实践:2020年7月3日《如何转型搞AI?》、《基于AI行业价值的AI学习与进阶路径》、《自动机器学习与前沿AI开源项目》、《使用TensorFlow实现经典模型》

    AI开发者大会之AI学习与进阶实践:2020年7月3日<如何转型搞AI?>+<无行业不智能:基于AI行业价值的AI学习与进阶路径>.<自动机器学习与前沿AI开源项目> ...

  8. proteus仿真micropython_【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉...

    机器视觉 machine vision 机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人 ...

  9. 这12个最新AI开源项目,你一定要收下

    转载自:https://www.jiqizhixin.com/articles/2018-09-07-7,mark自己看 这12个最新AI开源项目,你一定要收下 #基于TensorFlow的强化学习框 ...

最新文章

  1. Android Studio 中修改versionCode跟versionName (更新版本)
  2. 论文《一种金融市场预测的深度学习模型:FEPA》(3)--EMD+PCA
  3. Freemarker和Spring开发:获取相对路劲和绝对路径的最优方式
  4. 关于日期比较compareTo
  5. fedora17用yum下载包而不安装包
  6. 在Mapnik中显示中文(网上资料整理)
  7. SAP Hybris Commerce里类似ABAP里的透明表设计
  8. Android 系统权限
  9. wordpress 301重定向 htaccess
  10. 计算机联锁车务仿真培训系统 casco模式,计算机联锁车务仿真培训系统简介(15页)-原创力文档...
  11. 2018年中小学计算机培训,2018年中小学网管员培训心得体会
  12. 计算机无法对光盘格式化,使用驱动器X:中的光盘之前需要将其格式化,是否需要将其格式化?...
  13. 多极神经元红蓝铅笔手绘,多极神经元手绘图作业
  14. justjavac:从辍学到成为Deno核心代码贡献者,我的十年编程生涯
  15. 花狗C语言彩色贪吃蛇(完整代码)
  16. 充满正能量阳光活的生日祝福语
  17. N进程M资源死锁问题
  18. kubernetes 网络
  19. ## 错误:ora-01922 解决方案
  20. Azure: Azure AD(For Development)的使用

热门文章

  1. 使用O2OA二次开发搭建企业办公平台(十三)流程开发篇:报销审批流程表单开发
  2. 期末复习(Day5)
  3. 1月份国产手机出货量大幅下滑,iPhone却逆势增100万
  4. H5在苹果手机里唤起输入框后底部出现白条
  5. rust自创服务器_用Rust写了一个简单的Web服务器
  6. laravel 条形码
  7. 人脸识别之insightface开源代码使用:训练、验证、测试(2)
  8. 概率论-分布函数(高斯分布、复高斯分布、瑞丽分布、Nakagami-m分布、均匀分布、卡方分布)
  9. 解析|拼多多爆红背后值得借鉴的思路
  10. 技术杂谈-再谈软硬SDN(2)