R开发环境:如何做到既酷炫又高效?(一)

2020-10-23 16:26:29 浏览数 (1)

在前面

有读者给大猫留言,说看你公众号文章中的界面截图,似乎和我用的R不一样?的确如此,大猫用的IDE(集成开发环境)既不是R自带的图形界面RGui,也不是常见的RStudio,而是微软家的Visual Studio,甚至大猫所用的R版本也不是普通的CRAN社区版,而是带有多线程运行库Microsoft R Open。这两者结合在一起可以让你完成以前难以想象的事:团队协同、矩阵运算效率提高300%、灵活地自定义用户界面,多种语言在同一框架内开发、Azure云以及SQL Server数据库无缝结合……是不是听着有点小激动?那就继续往下读吧!

强版R:Microsoft R Open (MRO)

所有使用R的小伙伴肯定都知道CRAN(Comprehensive R Archive Network)。作为R的官方社区,它不仅承担了所有的R包的发行与下载,更重要的是,它承担了R本身的更新与发布。除了非常极少数情况,我们使用的R版本都来自CRAN。

那是不是CRAN版本的R就是最好的呢?非也。可能有一些小伙伴知道,R在设计之初采用的是单线程处理的架构,但是现在几乎所有的电脑都用着多核处理器,因此R在很多时候不能充分调动CPU资源。虽然后来人们开发了很多用于并行处理的包,但是这些包不是效果差强人意,就是使用起来太麻烦。那还有其他更加简单有效提高R性能的方法吗?大猫先在这里给出一个提示:R是开源的。

是的,一些聪明人就想:既然R是开源的,与其抱怨CRAN R的效率太低,不如我自己修改源代码整一个多线程版的R嘛!于是,Microsoft R Open的前身诞生了:Revolution R Open(RRO)。

R

RO提高性能的原理

RRO的思路是这样的:要提高性能,一种方法就是借助第三方数值计算库。我们都知道,小时候如果没有背诵九九乘法表,那么我们计算乘法的时候就需要化把它拆分为加法,这样一来效率就非常低。CRAN R就好比那个不懂九九乘法表的小孩,而“库”(library)就好比计算中的九九乘法表,每当遇到某些特定问题的计算,R就不需要死算,直接去库里找结果就行了。这样一来,计算效率也就突飞猛进。RRO所使用的两个库分别叫做BLAS和LAPACK,其中LAPACK是BLAS的超集,有兴趣的小伙伴们可以网上阅读更多介绍。

但RRO的野心不止如此,“现在只相当于在计算中抄了捷径,可我还没有充分调用CPU的那么多核呢!”可是如何让BLAS/LAPACK这两个库在运行时能自动调用CPU里面的每个核呢?毕竟CPU又不是RRO的开发团队造的,而一个CPU里面的微代码就有上百万行!当今世界,去哪儿找懂CPU的人呢?只能是生产CPU的人了。RRO的团队想,要是CPU制造商自己能开发一套多线程线性代数运算库该多好啊!

其实,Intel早就想到这一点了。作为这个星球上最先进的半导体生产商,怎么能容忍自家CPU不支持当今使用最广的数值计算库呢!于是Intel拿出了自己的大杀器:MKL(Math Kernel Library)。

MKL可以理解为Intel药厂制造的封装了BLAS/LAPACK两大库的CPU大补丸。他能够使Intel自己家的处理器最大程度上的在线性代数计算中调用多个核提高效率。根据Intel自己的说法,安装了MKL以后,CPU在处理线性代数的时候简直像打了鸡血一样快:

这时,RRO团队手中的工具就都齐备了。他们通过修改R源代码,使得R在处理线性代数的时候能够直接调用MKL库,而MKL库则自动将计算任务合理分配给多个核。每个核在计算过程中,又能够调用BLAS/LAPACK库来提高运算效率

RRO团队获得了极大的成功,他们创办了自己的网站RevolutionAnalytics.com,并且让世界上所有人都能免费使用他们增强版本的R,这也是RRO中“Open”的出处。他们又进一步开发了更为强大的RRO商业版本RRE(Revolultion R Enterprise),RRE成为了当时唯一能够胜任商业大数据处理的R发行版本

然而,RRO团队的目标是让R成为能够在商业上替代SAS的统计分析系统,仅仅发布RRE是不够的。他们需要一个既懂商业又懂技术的合作者(或者大腿),纵观现在的IT版图,谁最懂IT在塑造商业模式中的威力?答案很明显——Microsoft。于是,在2015年底,RevolutionAnalytics(RRO所属公司)和微软共同宣布,RevolutionAnalytics由微软收购并成为其全资子公司,今后RevolutionAnalytics将借助微软的力量继续改进现有的RRO,并大力在商业领域推广R的使用。微软也宣布RRO/RRE将改名为MRO(Microsoft R Open)/ MRS(Microsoft R Server),并且在自家的数据库SQL Server和云服务Azure中无缝集成R, 这使得微软成为第一个将R集成到商业数据库与商业云中的IT公司

收购后的MRO有着如何脱胎换骨的表现?如何安装并使用MRO?MRO和哪个IDE配合起来食用口感更佳?请耐心期待下期的大猫课堂!

在微软给出的Benchmark中,MRO在处理线性代数时相对于CRAN版的R有着恐怖的2x~50x的性能提高。

期总结

本期大猫向大家介绍了自己所使用的增强版本的R:MRO。大猫回顾了MRO的前身RRO以及RRO实现性能提高的原理。在下一期,大猫会继续介绍MRO的性能基准测试、MRO配套的第三方工具以及MRO的安装方法,更多精彩还在后面哦!

我是大猫,咱们下期见!

0 人点赞