前言
如今,数据科学变得越来越复杂。这种复杂性由下面三个因素导致:
- 增长的数据生产能力 —— 环视四周,数的出多少个能产生数据的设备呢?如果你用笔记本电脑来浏览本文的话算一个,如果身边有智能手机(以及安装的APPs)的话再加一个,如果带了健身手环的话还要加一个,驾驶的汽车(有些情况下)也算一个 —— 它们都在持续不断地生产数据。现在设想今后几 年内的情景,你所使用的冰箱、家里的温度调节器、穿戴的衣物、兜内的钢笔以及喝水的水壶都会嵌入传感器,不断向数据科学家(和数据库)传输数据用来分析。
- 低廉的数据存储成本 —— 我们来做个猜测。猜一猜,把自古以来全球所有的音乐存储起来需要花费多少钱呢?你的答案是什么?我的估计是总花费远不到1000美元。
- 廉价的计算能力 —— 看一下最近发布的一款笔记本电脑性能配置清单。一个拥有64GB RAM的Xeon处理器加上Quadro的GPU。这台机器预计售价不到2000美元,重量约为2.5kg。还需要我多说什么吗?
总之,我们正在源源不断地生产数据(当你阅读本文时,你也将成为一个数据样本),我们能以极低的成本存储这些数据,并且对它们做计算和仿真处理。
为什么在云端进行数据科学?
那我们为什么要把数据放在云端处理呢?当你看到一台笔记本电脑就配备64GB RAM时,不禁会问我们真的需要把数据送到云端吗?答案绝对是需要的,我们能找出一大堆理由来。下面就列出几条:
需要运行可扩展的数据科学:让我们回到几年前。在2010年,我进入一家跨国保险公司组建数据科学部门。其中的一项工作就是采购了一台16GB RAM的服务器。由于是新组建部门,我们按照超前3~5年的标准采购。当初类似星形的组合结构,随着我们的雇员增加而无法扩展。不仅因为组内成员增长,数据量也呈指数级增长。由于只有一台实体机,我们陷入了困境!我们要不购买一台新的、性能更强的服务器,要不让现有这台满负荷运转(很快就将会过载)。你最不愿意看到的事情就是组里的数据科学家盯着屏幕等待未处理完的数据!而云端的机器只需轻击鼠标就能轻易扩展,省去了很多烦心事。因此即使数据量增长几倍,现在的脚本和模型依旧能够正常运行。
成本:可扩展性是一方面,成本也是一方面。假设你有一个问题需要解决,问题不常现,但是需要更高配的计算基础框架。这类情况很常见 —— 若想挖掘自己赞助的某次年度事件的社会媒体数据,但想实时查看结果。受制于成本,不可能为此而买一台新机器。很简单,这时只要租一台高配置的机器,租用几个小时或者几天就能解决问题,成本是新购机器的零头。
协作:当想和多位数据科学家同时工作时该如何是好?想必你不愿意他们每个人都在本地机器上复制一份数据和代码吧。
共享:当想和组员共享Python/R代码时会怎么办?你所使用的函数库可能在他那儿没有,或是版本太低。如何确保代码在不同机器间可迁移呢?
更大的机器学习系统开发生态系统:像AWS、Azure等一些云服务商,提供完整的生态系统帮你采集数据、生成模型并部署。如果使用实体机,都需要自己设置这些配置。
快速搭建原型:很多时候,你在路上或是和朋友交流时蹦出了新想法。这些情况下,使用云计算服务就会很便捷。能快速地完成原型开发,而不必担心版本和扩展性。在证实了自己的想法之后,也能方便地转化为产品。
现在你明白了数据科学的云计算的需求了吧。我们接着看看在云端执行R和Python的不同选择。
在云端做数据科学的选择:
Amazon Web Services (AWS)
Amazon是云计算界的老大。它们占据最大的市场份额,有完整的文档,提供便捷的环境支持快速扩展。这篇文章教你如何在机器上运行 R或者RStudio。如果云端的机器是Linux系统,那么Python是预装的。也可以自己安装额外需要的库函数和模块。
你可以使用 AWS machine learning,自己配置一台机器,甚至直接使用 DataScienceToolbox,它提供工具箱之外用到的所有软件。平台不仅仅是提供服务,还提供一些大规模数据集供你玩转大数据。
因为AWS是最流行的选择,它形成了完善的生态系统,并且(相对其它而言)更容易找到包含正确经验的各种资源。然而,Amazon相比其它家服务的价格通常更贵一些,甚至不提供某些服务。另外,由于某些原因机器学习的服务不对亚太地区开放。因此,如果你恰好位于这些地区,则需要选择北美的服务器,或者在云端自己配置一台虚拟机。
Azure Machine Learning
如果AWS是冠军的话,Azure就是冠军挑战者。Microsoft明确地加大力度提供一个执行端对端数据科学和机器学习流程的接口。你可以使用他们的 studio来搭建机器学习工作流程,在云端使用JuPyTer notebooks,或者直接使用ML APIs。
Microsoft已经在 虚拟学院提供了免费的电子文档和MOOC帮你入门。
IBM BlueMix:
如果说Amazon和Microsoft是在云计算领域有机地发展,那么IBM的思路略有不同。IBM开发了BlueMix平台,随后急速开始营销其服务产品。尽管提供方式不如AWS和Azure直接,但还是能在云端提供设置记事本而使用。
数据科学社区如何使用Watson提供的APIs也将会很有意思。
Sense.io:
如果觉得我之前写的那些都太复杂了,那就有必要了解一下Sense。Sense项目可以只点击一个按钮完成部署。他们提供的服务基于R、Python、Spark、Julia和Impala,成员之间灵活地合作和共享分析结果。观看这段视频初步了解这款产品:https://www.youtube.com/embed/n3RwCr9l4G8
Demino DataLabs
Domino位于旧金山,它提供一个安全的云计算环境,支持R、Python、Julia和Matlab等开发语言。平台提供版本控制功能和特色,使得组内合作和共享变得无比容易。
DataJoy
DataJoy目前像是Sense和DominoDataLab的剥离版本,但它今后如何发展很引人关注。目前,若想在云端运行R或者Python,不妨也试一试DataJoy。
PythonAnywhere
你如果正在开发网络应用,并需要搭建一个包含数据科学模块的网站,PythonAnywhere似乎是个完美的选择。正如名字所称,这个选择是基于Python开发,但它提供了一个单独的窗口来托管主机、搭建网站和进行数据科学分析。
在云端进行数据科学的挑战:
尽管云计算有其独有的优势,它也面临着不少挑战。我认为这些挑战在长期并不会停止云服务使用的增长,但是偶尔也会形成一些障碍。
和第三方共享数据的担忧:我不断地面临这项挑战。不论你如何试图向一部分人解释云端的安全性,把数据共享到公司外部总是令人担忧。通常这都是监管方需求或是法律要求,但往往给出的理由也很无厘头。例如,很多银行都不愿意上传它们的数据到云端进行分析。
需要上传/下载大量数据:由于数据中心存储大量的数据 —— 如果网络基础设施不稳固,一次性上传这些大数据将是巨大的挑战。
后记
云计算正因其带来的利益而受到更多的关注,这些云计算服务变得常态化(假如目前还没有)也将只是时间问题。希望你觉得这些云计算服务有用,当你需要的时候唾手可得。
如果你喜欢刚刚阅读的内容,也想学习大数据,请 订阅我们的邮件,关注我们的 推特或者 脸书页面。
原文链接: Running scalable Data Science on Cloud with R & Python(译者/赵屹华 审校/刘翔宇、朱正贵、李子健 责编/周建丁)
译者简介: 赵屹华,计算广告工程师@搜狗,前生物医学工程师,关注推荐算法、机器学习领域。