熟悉Azure的同学们都知道,Azure上有一套提供可视化界面的机器学习套件,叫做Azure Machine Learning, 从数据的输入,选择,清洗,到模型的构建,测试,评估和发布都可以通过通过图像化方式,拖拖拽拽就可以完成,当然AML也支持你嵌入自己的R语言和Python语言开发的机器学习算法:
但对于很多数据科学家来讲, 更偏向于使用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在企业级开发测试环境里面实现机器学习模型的构建,可视化,远端调试以及机器学习模型的发布,客户端的调用等步骤。
后续文章会介绍,如何在企业级的生产环境里面大规模部署R server集群。
备注:Microsoft R Server for Linux/Windows已经在Azure中国区正式上线
Azure上部署Microsoft R server for Linux
- 登录到Azure的管理界面,选择"新建"-"虚拟机"-"全部",在搜索框输入"Microsoft R Server",可以看到微软提供多种不同操作系统的R Server:
- 选择" Microsoft R Server (version 9.1.0) for Linux (Ubuntu version 16.04)"进行创建,输入基本的信息,如虚拟机名称,用户名,密码,一定要记住你的ssh登录密码:
- 剩下的步骤和创建一台普通虚拟机没有差别,选择大小,地区,配置网络等等,再次不再赘述,在汇总页面看一看,没有问题,就选择确定进行虚拟机部署:
- 部署完成后,在虚拟机总览界面上找到虚拟机的公共IP地址,使用putty或者其他ssh工具连接到Microsoft R Server,检查下已经安装的R Server package:
apt list --installed | grep microsoft
可以看到Microsoft R Server的多个组件已经安装,包括compute node, web node,以及dotnet framework
- 我们需要进一步了解一下当前安装的R Server的版本,依赖关系等信息,使用dpkg命令进行检查,可以看到默认安装的R Server版本是9.1,依赖于mkl等包:
dpkg –status Microsoft-r-server-computenode-9.1
- 在命令行输入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的配置:
- 进入Microsoft R Server的安装目录,在Ubuntu上默认如下:
cd /usr/lib64/microsoft-r/rserver/o16n/9.1.0/
- 启动Administrator Utility工具,这个工具是Dotnet的,实际上是Linux的Dotnet,执行正常的话会显示一个配置界面:
sudo dotnet Microsoft.RServer.Utils.AdminUtil/Microsoft.RServer.Utils.AdminUtil.dll
- 首先需要设置本地管理员密码,这个是必须要做的第一步,选择2"set a local admin password",密码的设置是有要求的,是我们的复杂密码设置:
- 然后设置本节点配置,之前其实我们说到,这部分主要是开发测试环境的配置,所以使用OneBox configuration,也就是web node和compute node都在一个计算机上,选择"Configure R Server for Operationalize",然后选择A:One-Box:
期间会要求你输入admin的密码进行验证,
- 配置完成后,我们来run一个诊断测试看看配置结果:
选择"6. Run diagnostic tests"
选择"B. Get raw server status"
或者选择"A. Test configuration"
可以看到服务器端的各个服务都是运行正常的,那么OneBox服务器端的配置到此完成。
- 最后,web node使用12800端口对外连接提供服务,登录到Azure管理门户,选择虚拟机的NSG配置,在NSG上配置允许12800端口的访问,保存即可:
下一部分介绍R Client端安装,使用R进行远程执行,机器学习以及模型发布。