Microsoft R Open 简介与非 root 用户安装指南

如题所述

第1个回答  2022-06-12

2019.07.29 添加 TL;DR 章节,更新 conda r channel 国内镜像源
2019.04.04 文章发布

我使用 Microsoft R Open(MRO) 已经有很长一段时间了,我向身边很多朋友推荐过 MRO,前些日子又和 思考问题的熊 聊起这个问题,于是想写几篇文章与大家分享一下我使用 MRO 的经验,包括 MRO 的介绍与无root权限时的安装方式、MRO 与 Base R 的区别、使用 MRO 中值得注意的问题。

在 2015 年 Microsoft 对外发布了 Revolution R Open 第一个正式版本对应 Base R 3.1.2,2016 年这个项目更名为 Microsoft R Open(MRO),目前的最新版本是 3.5.1。根据官方的介绍 MRO 是一个基于 Base R 的加强的 完全开源、免费 的 R 发行版,与原有的 Base R 完全适配,可以使用所有的 R 包和脚本。加强的地方主要体现在 性能 再生性 上,支持 Windows、Linux 和 macOS。值得注意的是 MRO 的数学库用了 Intel® Math Kernel Library(MKL) 仅支持 Intel 的 CPU,AMD 的机器用不了 MRO。

平常我们用 Base R 的时候就只会在单线程下运行,很少有人会去自己编译 R 然后链接上多线程的 BLAS/LAPACK 库。MRO 提供了一个基于 MKL 的多线程数学库,在进行矩阵运算的时候会自动并行。这意味着所有在 Base R 下开发的包含矩阵运算的包在 MRO 下不需要做特殊的修改就能获得并行能力,在多核心机器上会大幅节约程序运行时间,性能对比可以参考 这个 。MRO 实际上是通过对接对 CRAN 的每日备份的 Microsoft CRAN mirror 来保证可再生性的,你可以回溯到任意一个备份来安装旧版本的 R 包。实际上我并没有感受到太多的好处,这一部分特性可能企业应用会比较看重。除了加强的计算性能和可再生性,兼容性强且易用也是 MRO 的一大优势。官方提供了二进制安装包和一键安装脚本安装起来十分方便,MRO 作为 Base R 的完全兼容替代,可以搭配你喜欢的任意前端工具来使用,比如 VS Code,Jupyter,Rstudio 或者 Rstudio Server。

在自己的笔记本上安装以及有 root 权限的服务器上的安装方法请参照 官方安装指南 。这里我主要介绍两种在服务器上没有 root 权限时安装 MRO 的方法,一是通过 Conda,二是通过分析 rpm 包的安装脚本。软件在安装时需要 root 权限的原因基本都是需要往 root 权限的文件夹里面写一些可执行文件,链接库文件,配置文件等等,其实这些文件不一定非要写在 root 权限的默认文件夹里面,是完全可以通过配置环境变量等方法放在任意文件夹里的,这也就是 Conda 可以不用 root 权限安装很多软件的原理。

Conda 中的 Channel r 已经默认是 MRO 而不是 Base R 了,可以参见这篇 公告 ,可以通过 conda create -n mro_env r-essentials 来创建一个 MRO 的环境。如果你不想装那么多包也可以在 Miniconda 的基础上用 conda create -n mro_env mro-base 来最小化安装一个 MRO 的环境。 目前 r 这个 Channel 还没有国内镜像,只能从 anaconda 的官方镜像站拉取软件包,可能会有点慢。 r 的 Channel 在 TUNA 是有镜像的,只是没有在文档中体现出来。

另外附带一个简单的安装配置 Conda 的方法:

MRO 官网提供的的安装包里面包含 rpm 和 deb 的两套二进制文件, install.sh 脚本会识别你的操作系统并安装上正确的程序,安装 rpm 或者 deb 的包是需要 root 权限的,但是我们可以通过解析 rpm/deb 中的安装脚本并进行修改,手工的执行这一过程绕开往需要 root 权限的文件夹里写东西的过程。这种方法对于大多数的 rpm/deb 包都是有效的,也可以推广应用到你想装的其他包。但是一般情况下 conda 是能够满足需求的,没有必要采用这种手工的方式。

在终端输入:

如果回显中除了 Base R 正常启动时的回显还包括最后 Microsoft R Open 这一段就说明安装成功了。下一篇计划写一写 MRO 与 Base R 的区别和一些注意事项。

相似回答
大家正在搜