连冠华,云计算资深架构师

很多数据科学家偏向于使用R语言来做所有事情。R语言是最为流行,最为强大的数据统计分析,机器学习和可视化语言,本身R来自于开源社区,因此也有着非常活跃的社区和强大的生态系统支持。虽然R非常流行,但如何在企业级环境里面部署R,如何处理大规模的数据,如何通过R快速的构建和发布机器学习模型,仍然不是一件简单的事情。

Microsoft R是基于开源的R构建的,提供了免费的Microsoft R客户端和Microsoft R open以及商业版本的Microsoft R Server,和开源R完全兼容,提供了总共超过10000个R的语言包,并且提供了一些额外的工具来支持企业级部署,包括远程部署和调试,平台支持,Web服务发布等功能。理想的情况是,数据科学家可以通过R快速构建模型,并一键发布到R集群提供运营服务,而开发人员或者产品团队可以根据数据科学家快速发布的R web service使用数据模型,同时,其他数据科学家也可以通过R client进行模型的测试,调试等等,如下图所示:

本文主要介绍如何通过Microsoft R server在企业级开发测试环境里面实现机器学习模型的构建,可视化,远端调试以及机器学习模型的发布,客户端的调用等步骤。

Azure上部署Microsoft R server for Linux

1. 登录到Azure的管理界面,选择“新建”-“虚拟机”-“全部”,在搜索框输入“Microsoft R Server”,可以看到微软提供多种不同操作系统的R Server:

2. 选择“Microsoft R Server (version 9.1.0) for Linux (Ubuntu version 16.04)”进行创建,输入基本的信息,如虚拟机名称,用户名,密码,一定要记住你的ssh登录密码:

3. 剩下的步骤和创建一台普通虚拟机没有差别,选择大小,地区,配置网络等等,再次不再赘述,在汇总页面看一看,没有问题,就选择确定进行虚拟机部署:

4. 部署完成后,在虚拟机总览界面上找到虚拟机的公共IP地址,使用putty或者其他ssh工具连接到Microsoft R Server,检查下已经安装的R Server package:

apt list –installed | grep microsoft

可以看到Microsoft R Server的多个组件已经安装,包括compute node, web node,以及dotnet framework

5. 我们需要进一步了解一下当前安装的R Server的版本,依赖关系等信息,使用dpkg命令进行检查,可以看到默认安装的R Server版本是1,依赖于mkl等包:

dpkg –status Microsoft-r-server-computenode-9.1

6. 在命令行输入R或者Revo64,如果你的部署一切正常的话,应该出现如下界面:

Azure上配置Microsoft R Server for Linux(Ubuntu)

在一个典型的Microsoft R Server开发环境部署中,我们叫做One-Box配置,也就是说把企业级环境里面必须的组件都部署到了一台虚拟机上,适合做开发调试,具体的部署架构图如下所示:

Web node用于http接入及认证。

Compute node执行R语言创建服务,后续企业级创建可以看到,其实compute node可以大规模扩展。

SQLite data store: 存放一些元数据,配置信息以及session和服务信息

在Azure中国区创建Microsoft R server后,我们来对他进行配置。Microsoft R Server 提供了一个明行的工具叫做Administrator Utility来帮助用户进行配置,我们下面来进行One Box的配置:

1.进入Microsoft R Server的安装目录,在Ubuntu上默认如下:

cd /usr/lib64/microsoft-r/rserver/o16n/9.1.0/

2.启动Administrator Utility工具,这个工具是Dotnet的,实际上是Linux的Dotnet,执行正常的话会显示一个配置界面:

sudo dotnet Microsoft.RServer.Utils.AdminUtil/Microsoft.RServer.Utils.AdminUtil.dll

3. 首先需要设置本地管理员密码,这个是必须要做的第一步,选择2“set a local admin password”,密码的设置是有要求的,是我们的复杂密码设置:

4. 然后设置本节点配置,之前其实我们说到,这部分主要是开发测试环境的配置,所以使用OneBox configuration,也就是web node和compute node都在一个计算机上,选择“Configure R Server for Operationalize”,然后选择A:One-Box:

期间会要求你输入admin的密码进行验证,

5. 配置完成后,我们来run一个诊断测试看看配置结果:

选择“6. Run diagnostic tests”

选择“B. Get raw server status”

或者选择“A. Test configuration”

可以看到服务器端的各个服务都是运行正常的,那么OneBox服务器端的配置到此完成。

6. 最后,web node使用12800端口对外连接提供服务,登录到Azure管理门户,选择虚拟机的NSG配置,在NSG上配置允许12800端口的访问,保存即可:

备注:Microsoft R Server for Linux/Windows已经在Azure中国区正式上线。