【新智元导读】本文带来Github上账号为intel-analytics发布的三大深度学习库的介绍。
BigDL
什么是BigDL?
BigDL是一个基于Apache Spark分布式深度学习库;使用BigDL,用户可以将他们的深度学习应用程序作为标准的Spark程序,它可以直接运行在现有的Spark或Hadoop集群之上。
1)非常丰富的深度学习支持。模仿Torch,BigDL提供对深度学习的全方位支持,包括数值计算(通过Tensor)和高层次神经网络。此外,用户通过BigDL可以把Caffe和Torch上的预训练模型到Spark程序。
2)极其高的性能。为了达到高性能,BigDL用英特尔MKL和Spark任务中多线程编程。因此,它比可扩充的开源框架如Caffe,Torch或者TensorFlow在单节点Xeon系统拉开数量级优势。
3)高效的扩展。BigDL利用Apache Spark(一个极速的分部署数据处理框架)可以高效地扩展到大数据分析,以及在Spark上高效实现同步SGD和全局归约通信。
为什么选择BigDL?
如下情况,你可能想要用BigDL开发深度学习程序:
BigDL: 让你的DL应用直接用于Spark或Hadoop集群
https://github.com/intel-analytics/BigDL
Intel-analytics 下的另外两大开源库
1. SparseML:Spark ML库优化版,有效支持稀疏数据
从购物历史到电影评分,数据的稀疏性是大数据的重要特点。Spark在并行处理分段数据上很强大,但是很多MLlib算法是基于一定程度的数据密度实现的,例如逻辑回归的梯度,或者KMeans的集群中心。在跟一些Spark用户合作过程中,我们经常发现他们特征值有及版务甚至几十亿的维度,这远远超过了MLlib中某些关键算法的处理能力,或者当训练数据稀疏性很大的时候,由于大量内存消耗而变得无法实现。
为了填补这个坑,我们给Spark包做了一些大的改进,使之很大程度可以支持稀疏数据。通过优化数据结构、网络通信和算术运算,我们极大的压缩了内存消耗,减少了稀疏数据的计算成本,因此使得算法可用于更大的特征维度和范围。
有两个例子支持了我们的实现,逻辑回归10亿个特征和KMeans处理1000万个特征和上千的集群。
使用:
类和功能与Spark MLlib一致。具体参考样例文件夹。
性能:
尽管具体的性能提高取决于数据集的稀疏度。在SparseSpark算法跟原版比起来一般都能显著减少时间花费和内存消耗。
准确度:
本次优化不会影响准确度。尽管用较少的计算资源,依然跟Spark原版产出同样的结果。
https://github.com/intel-analytics/SparseML
2. CoreNLP:基于Java的NLP工具
斯坦福CoreNLP提供一组Java写的自然语言分析工具。它可以输入原始人类语言文字,以词语或者短语的基本形式输出,不论是公司名字还是人物等等,格式化或者翻译日期、时间和数值量,用短语或者词语标记句子结构,指出哪些名字代表同一个实体。本来是用于英语开发的,但是现在也提供对现代阿拉伯语、普通话、法语、德语和西班牙语不同程度的支持。
斯坦福CoreNLP是一个集成框架,很容易把很多语言分析工具应用到一段文字。从简单文字开始,你可以用两行代码启动所有工具。它的分析为更高度和专业领域的文本理解应用提供了基本的基础构件。
斯坦福CoreNLP是一组稳定并且通过了测试的自然语言处理工具,广泛的被学术界、工业界和政府采用。工具采用了多种基于规则,概率机器学习和深度学习组件。
斯坦福CoreNLP代码用Java写的,登记于GNU通用公共授权(第三版或更新)。注意这是完整的GPL,允许很多次免费试用,但是不能用于发布给其它人的授权软件。
怎么编译(用ant)
怎么创建jar:
你可以在这里找到发布:http://search.maven.org/#browse%7C11864822
你可以在Stanford CoreNLP首页找到更多说明和文档:http://nlp.stanford.edu/software/corenlp.shtml#Demo
https://github.com/intel-analytics/CoreNLP