Deep TabNine 帮助开发者自动完成代码

TabNine 的开发商推出了新的深度学习模型 Deep TabNine,能显著改善代码建议质量。

https://tabnine.com/

TabNine 是一个代码自动完成工具,能在开发者输入代码时预测其余的代码,它支持 23 种编程语言和 5 种代码编辑器。

Deep TabNine是根据程序员过去的习惯自动补全,并在后面给出几种选项的概率。

如果有类似代码出现在之前的项目里,TabNine还会在补全候选框中直接给出地址,方便用户点击进去查阅。

Deep TabNine 使用了 GitHub 上的两百万文件训练,学习动态类型语言中的复杂行为如类型推动,预测标记。

它能根据自然语言写的文档推测函数名、参数和返回类型。

Deep TabNine 是基于 OpenAI 开发的 GPT-2。

实现

TabNine是在GPT-2的基础上构建的,这是一种Transformer架构,原产自OpenAI,是个“逆天”语言模型。

GPT-2的参数高达15亿个,数据量比一代扩大了10倍,使用了包含800万个网页的数据集,共有40GB。

逆天之处就在于,GPT-2写起文章来毫无违和感,无需针对性训练就能横扫各种特定领域的语言建模任务,还具备阅读理解、问答、生成文章摘要、翻译等等能力。

就GPT-2而言,它的训练目标很简单:根据所有给定文本中前面的单词,预测下一个单词。虽然本来是解决NLP问题,看似与写代码没什么关联,但建模代码也算是用一种独有的方式在理解英文。

作者

一位来自加拿大的大四学霸,开发了一款”Deep TabNine“代码补全工具,实现了这一大胆的想法。

Jackson此前在Reddit上发帖称,这是自己在大学阶段开发的第一款商业软件产品。

别人的大学,别人的第一桶金~

但Jackson并非无名之辈,年少有为,曾在2014和2015连续两年获得IOI金牌。

因此,大学一入学,便成为加拿大Michael and Ophelia Lazaridis Olympiad Scholarship奖学金的获得者,免除了8个学期学费书费和生活费。

除了自动补全代码的TabNine,Jackson还开发了很多有意思的应用,比如一个名为jellies的益智游戏,和使用蒙特卡罗树搜索的国际象棋引擎Sashimi等。