大公司通常都有严格的制度,限制内部工作信息的外泄,Amazon就是这样,而且是出了名的严格。有人抱怨Amazon之前在开源方面就是个巨大的黑洞,工作中大量的使用开源软件却从来也不回馈开源社区。知识分享方面Amazon做得也不咋地,上一次有影响力的应该是关于DynamoDB的论文了。因此,当DSSTNE开源出来之后,大家都惊呼Amazon是不是要做出改变了。微博上 @洪亮劼 提到,「这些工作的核心主要是为了招人。没有这些开源项目,也不让发论文。亚马逊根本没法招到一流人才。」具体是什么样的真实原因推动了Amazon的这次转变外人尚不得而知,但希望这次DSSTNE的开源能成为Amazon对待「技术开放」这件事情的一个全新的开始吧。
DSSTNE的开源,最开心的也许要属他的作者Scott Le Grand了[1],之前确实没听说过此人,最近他显然有成为深度学习界网红的潜质了,看他的Google Plus页面,头像蛮霸气的,自我介绍也有够侧漏「My other datacenter is a GPU」。 这几天Scott在自己主页上爆料,感慨终于可以说一说自己最近2年的工作了。
Scott确认,DSSTNE正是为了Amazon的商品推荐而开发的!DSSTNE的整个开发工作涉及到一大批幕后英雄,当时还没有TensorFlow,只有Theano和Torch。区别于后两者,DSSTNE针对稀疏数据与跨多GPU的神经网络进行了专门的优化。它并不是另外一个可以跑AlexNet/VGG/GoogleNet的框架,但如果有需要的话,500行代码+cuDNN基本就能搞定了。实现Krizhevsky的奇淫巧计对DSSTNE无足轻重,因为它把最复杂的模型并行化部分的工作都已经搞定了。
DSSTNE尚不明确支持RNNs,但它确实有共享权重的支持,这足够可以构建一个展开的RNN了。事实上Scott他们也真试验过几个。cuDNN5再配上几百行代码就可以加入对LSTM的支持。但是,由于cuDNN里的LSTM是一个黑盒子,导致它无法跨多GPU。不过其实也没什么大不了,完全可以从头开始重写一个。
不管你如何评价Amazon,事实上他也确实不完美,但是是Amazon允许Scott他们从头开始完成了这项工作,并且现在还把它开源了。2011年的时候Scott是NVIDA CUDA团队的创始成员,Google用一个无法拒绝的Offer把Scott从NVDIA挖了过去,但当时Google并没有认识到GPU工作的价值,只是胡乱的把Scott分配到了搜索组。所以Scott没待多久就又跳槽去了Amazon,并在那儿完成了DSSTNE相关的工作。
Amazon把DSSTNE开源出来的时候,Scott正要登机。他接下来的日子里面会做一些更详细的分析。DSSTNE针对每GPU用于1000个左右节点数量的隐藏层提供了近乎完美的伸缩性,并且还有效地释放了稀疏输入层的能力,因为DSSTNE针对激活与加权梯度计算都提供了定制的稀疏内核。
DSSTNE在2014年的时候使用JSON格式是make sense的,但现在更需要一个TensorFlow图导入器。DSSTNE从一个非常简单的C语言结构开始构建网络,要加这个并不难,但要做到100%兼容还是需要一些额外的支持。
Scott在4个月之前又得到了一个无法拒绝的Offer离开了Amazon。新项目里他是唯一一个搞GPU的人。Scott表示这方面能够得到他认可的人两只手就可以数的过来,这些人现如今都已经散落在各个深度学习项目里面了。Scott非常乐意为开源后的DSSTNE继续添砖加瓦,比如CNN和RNN,这些也都已经列入到官方计划里面了。
Scott还表示,DSSTNE实现了100%的确定性训练,他是可重复计算的坚决拥趸。对于大数据文件NetCDF是一种非常有效的格式,他还推荐使用Ditto。他很希望向DSSTNE团队表达谢意,但不知道点出他们的名字是否合适。 猎头们自然是很希望的吧。
另外,最新的一个帖子里面,Scott还给出了DSSTNE接下来几个月的roadmap。
Adding some additional sparse data features for input and output layers to ignore inputs not relevant to training
Adding skip layer support
Benchmarks and sample networks
Streaming datasets for Pascal GPUs through the use of unified memory
Image data support
CNN and Pooling layer support through cuDNN
Smart recurrent data support
Full LSTM/GRU support
Sparse Convolution Layers for NLP and recommendations
截至目前网络上有关DSSTNE的有价值资料还不多,在Amazon内部DSSTNE究竟是如何应用于推荐引擎的,ResysChina会持续关注,也欢迎内部人士悄悄来爆下料,造福业界。^_^
[1] https://plus.google.com/+ScottLeGrand
微信公众号【 ResysChina 】,中国最专业的个性化推荐技术社区。
点击阅读原文,查看上一篇「 Amazon开源面向推荐系统的深度学习框架DSSTNE 」。