Julia机器学习核心编程:人人可用的高性能科学计算
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 Julia的应用领域

Julia在可视化、数据科学、机器学习、科学计算以及并行计算等领域具有广泛的应用。

1.2.1 数据可视化和绘图

数据可视化具有悠久的历史。相应的绘图软件在功能和简单性、速度和美感以及静态和动态界面之间进行权衡。有些软件程序会进行显示而不会对软件中的数据进行更改,还有些软件程序则会对软件中的数据进行实时更新。数据可视化和绘图演示如图1-1所示。

Plots.jl是一个可视化界面和工具集,它提供了跨各种后端的通用API,如GR.jl、PyPlot.jl和PlotlyJS.jl。喜欢更多语法图形样式API的用户可能会喜欢纯粹的Julia Gadfly.jl绘图包,对于那些不想离开终端的用户来说,还有UnicodePlots.jl可以使用。

图1-1 数据可视化和绘图演示

1.2.2 构建、部署或嵌入代码

Julia允许用户编写UI、静态编译代码,甚至将其部署在Web服务器上。Julia还具有类似于Shell的功能,可用于管理其他进程,还提供了类似于Lisp的宏和其他元编程工具,其兼容性演示如图1-2所示。

图1-2 兼容性演示

Julia具有C/Fortran、C++、Python、R、Java等语言的外部函数接口,也可以通过API而嵌入其他程序中。如Python程序可以使用PyJulia调用Julia;R程序可以使用R的JuliaCall做同样的事情,可以通过从R调用MixedModels.jl来证明。

1.2.3 与数据互动

Julia数据生态系统允许用户快速加载多维数据集,并行执行聚合、连接和预处理操作,并以高性能格式将它们保存到磁盘中。用户可以使用OnlineStats.jl对流数据执行在线计算,无论你是在寻找方便和熟悉的DataFrames,还是使用JuliaDB的新方法,Julia都为你提供了丰富的工具。该Queryverse包中的元数据包可以访问这些工具与Julia的API。除使用表格数据外,还有JuliaGraphs软件包可以轻松使用组合数据。数据互动演示如图1-3所示。

图1-3 数据互动演示

Julia还可以使用JDBC.jl和ODBC.jl驱动程序处理几乎所有的数据库。此外,Julia还使用Spark.jl、HDFS.jl和Hive.jl与Hadoop等进行生态系统集成。

1.2.4 可扩展的机器学习

Julia为深度学习(Flux.jl和Knet.jl)、机器学习和AI提供了强大的工具。Julia的数学语法使其成为表达算法的理想方式,构建具有自动差异的可训练模型,GPU加速以及使用JuliaDB支持数TB的数据。

Julia丰富的机器学习和统计生态系统包括广义线性模型、决策树和聚类的功能。你还可以找到贝叶斯网络和马尔可夫链蒙特卡洛方法(Monte-Carlo method)的包。机器学习演示如图1-4所示。

图1-4 机器学习演示

1.2.5 丰富的科学计算生态系统

从根本上讲,Julia非常擅长数字和科学计算。用户可以在Julia丰富的科学计算工具中看到最先进的微分方程生态系统(DifferentialEquations.jl)、优化工具(JuMP.jl和Optim.jl)和迭代线性求解器(IterativeSolvers.jl)等。

Julia还提供了很多特定领域的生态系统,如生物学(BioJulia)、运筹学(JuliaOpt)、量子物理学(QuantumOptics)、非线性动力学(JuliaDynamics)、定量经济学(QuantEcon)、天文学(JuliaAstro)和生态学(EcoJulia)。有了一群来自科学界各个部门的高度热情的开发人员和维护人员,整个生态系统将继续变得越来越强大。科学计算演示如图1-5所示。

图1-5 科学计算演示

1.2.6 并行和异构计算

Julia专为并行性设计,并为各个级别的并行计算提供了内置基元:指令级并行、多线程和分布式计算。Celeste.jl项目在NERSC超级计算机的Cori上使用650 000个内核运算速度可以达到1.5千万亿次/秒。

Julia编译器还可以为各种硬件加速器生成本机代码,例如GPU和Xeon Phis,诸如DistributedArrays.jl和Dagger.jl之类的包为并行性提供了更高级别的功能。并行计算演示如图1-6所示。

图1-6 并行计算演示