随着机器学习、深度学习为主要代表的人工智能技术的逐渐成熟,越来越多的AI产品得到了真正的落地。
无论是以语音识别和自然语言处理为基础的个人助理软件,还是以人脸识别为基础的刷脸付费系统,这些都是AI技术在现实生活中的实际应用。
应当说AI正在走进千家万户,来到你我的身边。
另一方面,从研发角度来讲,AI产品的落地并不是一件容易的事情:
AI技术数学理论要求高,数理统计、神经理论与脑科学、优化理论、矩阵论……
AI硬件层面要求非常高,GPU、TPU、FPGA……
如何基于目前的主流研究成果和硬件,对AI产品进行一站式的开发?这正是当前企业工程师面临的实际痛点。
对此,多家企业及研究机构推出了自己的解决方案,如Google推出并开源了TensorFlow,Facebook主导PyTorch和Caffe2,Amazon选择MXNet并打算投资围绕MXNet的系统,微软开发并大力推广CNTK......
这些都是以Python和C/C++语言为主,而在目前企业项目中,无论是Web应用、Andriod开发还是大数据应用,Java语言都占有很大的比例。
此外,我们必须看到,越来越多的从事传统Java应用开发的工程师尝试将AI技术融入到项目中,或者自身在尝试转型AI领域。
因此如果有类似TensorFlow、Caffe这些AI解决方案而又同时基于Java的,那么无疑会为项目的推进及个人的发展带来很多便利。
Deeplearning4j正是这类解决方案中的佼佼者。
01
Deeplearning4j是什么?
Deeplearning4j是由美国AI创业公司Skymind开源并维护的一个基于Java/JVM的深度学习框架。
同时也是在ApacheSpark平台上为数不多的,可以原生态支持分布式模型训练的框架之一。
此外,Deeplearning4j还支持多CPU/GPU集群,可以与高性能异构计算框架无缝衔接,从而进一步提升运算性能。
在年下半年,Deeplearning4j正式被Eclipse社区接收,同JavaEE一道成为Eclipse社区的一员。
02
为什么选择Deeplearning4j?
1.基于Java,专为企业应用而生
Deeplearning4j是基于Java的深度学习开源框架。从实际开发的角度上,它是面向Layer编程的神经网络开发框架,对很多常见的神经网络结构做了高度的封装。
熟悉Keras的朋友可以认为Deeplearning4j是Java版本的Keras。
同时Deeplearning4j也完美兼容Scala和Clojure。
2.丰富的开源生态圈,遵循Apache2.0
Deeplearning4j也拥有自己的生态。在Deeplearning4j的相关开源项目中,就有专门为张量运算而开发的ND4J和数据处理的DataVec。它们的作用相当于Python中的NumPy和Pandas。
当然,除了这些项目以外,Arbiter、RL4J等项目也大大丰富了Deeplearning4j的生态圈。
3.与Hadoop和Spark集成,支持分布式CPU和GPU
Deeplearning4j是原生支持在ApacheSpark上构建分布式深度学习解决方案的框架。
由于在企业的实际应用场景中,大数据的统计和存储往往会依赖Hive/HDFS等存储介质。
而算法模型的构建必须依赖庞大的数据,因此如果可以完成一站式的数据存储、数据提取和清洗、训练数据的构建、模型训练和调优的所有开发环节,无疑是非常理想的解决方案。
Deeplearning4j以数据并行化为理论基础构建了分布式神经网络建模的解决方案,为大数据+算法的开发提供了直接的支持。
Deepleanring4j支持多CPU/GPU集群的建模。就像在上文中提到的,GPU等硬件的成熟大大加速了AI的发展。
Deeplearning4j通过JavaCPP技术调用cuBLAS来实现在GPU上的加速建模。对于GPU集群的支持则需要依赖Spark。
4.越来越受开发人员欢迎
自Deeplearning4j从年左右开源以来,功能优化与新特性的丰富使得项目本身不断得到完善,在GitHub上的Commiter活跃度与Star数量也不断增加,使得该开源框架越来越得到国内外企业的