不久前许式伟(江湖人称老许)的 Go+ 项目在 Hacker News 上掀起了一阵风潮[1]。我一见倾心,参与贡献。最近老许和社区组织了一个视频交流,拉我跟大家说说为啥关注 Go+ 以及图个啥。在直播交流后,根据弹幕反馈,以及两位好友——洪明胜(TensorFlow Runtime 负责人)以及王玉(沈雕墨)的建议,做了修改。
我做分布式深度学习系统十三年了,尤其是 2016 年徐伟老师让我接替他作为他原创的 PaddlePaddle 项目的负责人之后,在工业系统中对 Python 的亲身体会让我对其局限了解愈深。而 Go+ 是我见过的弥补方案里最靠谱的。
我期待 Go+ 对标 Python,补全 Python 的不足,并且在此基础上有一个类似 numpy 的项目(姑且称之为 numgo+ 吧)用来支持张量(tensor)运算,满足数据科学的需求;在 numgo+ 之上再构建一个类似 PyTorch 的深度学习基础库(姑且称之为 GoTorch 吧)。如果可以,进一步成为深度学习编译器生态的一种前端语言。
我现在在蚂蚁集团工作,负责一个开源 SQL 编译器 SQLFlow —— 把扩展语法以支持 AI 的 SQL 程序翻译成 Python 程序。同事们说,如果 Go+ 这套生态能成熟起来,很乐意让 SQLFlow 输出 Go+ 程序。
很多读者估计觉得我瞎说八道—— Python 如此如日中天一般火热的语言,何须“补足”?
Python 的语法很灵活,融合了其他很多语言令人觉得方便的特点。比如,和 C++ 一样, Python 允许重载操作符,numpy 的作者于是重载了算数操作符来做张量运算。和 Lisp 一样,Python 的 eval 函数递归地实现了 Python 解释器,可以解释执行 Python 表达式,所以 Python 程序可以生成自己。
这样的灵活性允许程序员随心所欲,因此特别适合探索性工作。比如研究生们用 Python 做科研;数据科学家们用来替代之前各种昂贵的商业化系统;在随后诞生的深度学习领域,Python 也迅速蓬勃。
Python 的优势同时也隐含了其劣势。我亲身感受的痛点有二。
相关链接:
[1] https://news.ycombinator.com/item?id=23550042
[2] https://www.tensorflow.org/mlir/dialects
[3] https://zhuanlan.zhihu.com/p/38395601
[4] https://github.com/wangkuiyi/notes/tree/master/s4tf
[5] https://docs.google.com/document/d/1WLD4OcntBKQoNIH9VVYF0NPRe6V5exN3mu5uFlE0P0w/edit?usp=sharing
[6] https://github.com/qiniu/goplus/issues/307
[7] https://github.com/qiniu/goplus/tree/master/tutorial
[8] https://zhuanlan.zhihu.com/p/19901967
[9] https://julialang.org/blog/2018/12/ml-language-compiler/
[10] https://arxiv.org/pdf/1805.01772.pdf
本文分享自微信公众号 - 支付宝技术(Ant-Techfin)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。