摘要:概述隨著容器化技術的興起,數據科學現在最大的一場運動已經不是由一個新的算法或者統計方法發起的了,而是來自的容器化技術。本文將介紹利用容器技術如何加速數據科學在生產環境中的實際應用。
概述
隨著容器化技術的興起,數據科學現在最大的一場運動已經不是由一個新的算法或者統計方法發起的了,而是來自Docker的容器化技術。通常,數據科學被認為研究成果立即應用到生產環境都是比較緩慢的一個過程。本文將介紹利用容器技術如何加速數據科學在生產環境中的實際應用。
瓶頸 1. 環境部署一致性保持數據科學環境一致性通常都是一件異常痛苦的事情,在不同的機器之間同時部署即使是用 Python 的 Conda 和 Virtualenv 或者 R 的 CRAN 和 packrat 的包依賴虛擬化技術,也會遇到不同操作系統(比如 CentOS、Ubuntu、Mac OS、Windows)的底層c庫缺失等問題。(國內的現狀是很多公司逼迫Data Scientist 變成 DevOps,美其名曰:全棧。。)
2. 服務彈性與性能由于數據科學套件一般比較復雜,從底層的 Hadoop 分布式架構、到頂層的 Shiny Server,這一系列服務的智能運維部署都是一個問題。尤其是 Shiny Server 的開源版本現在默認是只支持單機單線程的處理(其實就是nodejs內核),通常每次請求處理只是在幾毫秒之間。這對于一個小應用一般并不會出現太問題,不過更常見的場景是我們需要在生產環境上部署高性能的 shiny server,此時 shiny server 的單機性能就成了一個問題。
解決方案事實上,容器同時為加速數據科學的應用提供了一攬子解決方案:
將復雜的環境依賴化繁為簡
簡化集群配置與管理的復雜度
標準交付、研究結果可重復、便于成果分享
快速部署、快速擴展
明確運維、開發職責
為什么使用容器 可重復研究一方面,容器就像一個輕量級的虛擬機,當我們啟動虛擬機的時候通常都要花幾分鐘,但是Docker容器通常只要幾毫秒就啟動了。因此,你跑容器和跑本地應用從速度上來講基本沒什么差。每次我們跑容器,容器的環境都是標準化的,這也意味著它為我們帶來了可重復性研究的機會。這些容器可以一致部署在 Mac、Windows、Linux 上,因此協同共享變得非常得簡單。
無狀態研究對于個人而言,好處之一就是減少了R、Python生態組件安裝時帶來的痛苦。如果你在容器中使用Python或R,之前所有的環境一致性問題就都灰飛煙滅了。如果我們使用容器技術,就可以在容器中肆無忌憚地使用新包,因為即使出現意外導致容器不可用了,我們只需要重跑一個容器就可以了。
彈性高可用另一方面,對于整個數據科學套件而言,在架構上越來越流行微服務對原來SOA的架構進行進一步解耦,以便于每一個模塊可以獨立迭代,小步快跑。而容器技術基于輕量級的進程,使得我們可以快速擴展計算資源實現分布式計算并且輕松管理。
以 Shiny-Server 為例,吐槽Shiny-Server的單機能力其實沒什么意義,這就好像你在吐槽tornado和nodejs的性能不行?但是明明這兩個Web框架就是根據Epoll的IO復用,故意設計成異步單線程的模型來應對高并發業務場景的,正確的使用姿勢其實是搭配 Nignx反向代理 + Supervisor + 多個服務器實例。如果是 Tornado、Nodejs 跑單個服務也跪了,那Python和JS又得躺槍。Docker化之后,這些都可以一起用docker-compose.yml的配置文件來描述,然后一鍵啟動整個集群服務,這樣一來就獲得了商用版本的Shiny-Server的主要特性了。
和運維劃清界限在實際生產中,使用Docker之后,運維只需要定義好基本的鏡像的Dockerfile,而不用處理具體的開發產生的依賴包問題。數據部門可以引用運維提供的基礎鏡像,在此基礎上自行添加需要的依賴包。一面解脫了運維不必要的負擔,另一方面也提升數據部門對項目的掌控力,從而提升整個團隊的效率。
數據科學鏡像 R + Docker = RockerRocker 是一個組織管理R語言Docker鏡像的項目。Rocker提供了一系列用于不同場景下的R 鏡像。
這些鏡像是構建在 Debian OS的基礎之上的,基礎鏡像由r-base(通用),r-devel(開發者),rstudio(含rstuido服務器)這三類構成。
用例鏡像有:
hadleyverse鏡像:包含了hadley大人所經營的rstudio開發的相關R包,包括rmarkdown、 pandoc、knitr、shiny、ggplot2、 dplyr、 tidyr、devtools、 httr 等等,這基本可以滿足大多數人的需求。
ropensci鏡像:在hadleyverse的基礎上,又擴展了 rOpenSci 項目所涉及的包,讓各領域的數據科學研究如虎添翼。
社區鏡像則包括:
r-java鏡像:在r-base基礎上加入了 Java 8 和 rJava包,用來和java做各種交互。
r-pandoc鏡像: 在r-base基礎上加入了 pandoc,主要用來寫作。
r-ssh鏡像:在r-base基礎上加入了 SSH客戶端,讓我們可以通過SSH登陸到這個R容器中。
除了 Rocker 之外,我們還可以使用一些其他第三方鏡像:
docker-mro鏡像 通過微軟的Open R 優化 R 底層的矩陣運算,自動利用起多CPU的計算性能。
shrektan/shiny 鏡像 自帶了 Shiny-server和rstudio以及其他常見R包,用來部署服務器非常方便。
依賴于這些開源鏡像,我們就可以快速組合鏡像搭建所需要的R語言計算環境,并且不會因為每臺電腦的操作系統不一樣而產生一些不必要的問題。
Pythonjupyter 為Python科學計算環境虛擬化提供了諸多鏡像,我們可以根據不同的需要選擇相應的鏡像。
all-spark-notebook
base-notebook
datascience-notebook
minimal-notebook
pyspark-notebook
scipy-notebook
基本上我們在科學計算環境中用到的包都可以在這里找到,如果需要安裝更多的包,我們亦可以直接在notebook中輸入,比如
%% bash conda install financer
正確安裝后,直接重啟內核即可。不過因為容器的無狀態,所以還是建議大家在Dockerfile里面修改,或者在conda安裝之后包后,自行docker commit來持久化鏡像。
一攬子解決方案阿里云其實為為數據科學還提供了一攬子解決方案,執行下面命令,你可以把科學計算全套帶回家。
docker pull registry.aliyuncs.com/alicloudhpc/toolkit
其中包含了
圖像識別:OpenCV
機器學習工具:Cuda、Theano、R、Caffe等等
數值計算:Numpy、Scipy、OpenBLAS、Octave
配置和監控:lspci、numactl、perf、iostat、netstat
開發工具:Gcc/g++、JDK、CUDA、 OpenMPI 、OpenCL、 Python 、Lua
自行腦補一下自己為了"深度學習"在一臺ubuntu上安裝一天都沒搞定和這里一鍵搞定的差距。。
實戰現實并不完美,對于這些固有的鏡像,我們需要如何定制呢?其實,我們可以去查看這些開源鏡像都是通過Dockerfile制作的。通過修改 Dockerfile,我們就可以根據自己的需要重新建立一些私有鏡像,然后上傳到公有或私有的Registry上和其他人共享鏡像了。
由于國情問題,在制作容器的時候,我們最好修改一下我們的apt-get源(科學計算推崇操作系統使用 Ubuntu14.04 或 Debian)。
cp /etc/apt/sources.list /etc/apt/sources.list.back vi /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main multiverse restricted universe
R 則中可以通過參數修改CRAN源:
install.packages("some_pakcage",repos="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")
Python的conda源則可以這樣修改:
%% bash conda config --add channels "https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/" conda config --set show_channel_urls yes
這樣一來我們的整個容器的包管理加載速度就可以有一個質的提升。
文末放一個 Minecraft 版本的 Docker管理器,僅供娛樂。
Docker 速查表
Scaling and Performance Tuning with shinyapps.io
How to get started with data science in containers
Docker: Data Science Environment with Jupyter
The Real Value of Containers for Data Science
清華大學 TUNA 鏡像源
Start doing data science in minutes
Linkedin Slides: Docker for data science
wiseio/datascience-docker
Strata 2016: Docker for Data Scientists
Introducing Rocker: Docker for R
Jupyter Notebook Data Science Stack
寫給Python數據科學家們 : 科學計算開發環境排雷
Dockercraft
aliyun 機器學習套裝
阿里云Docker學習資料
為什么容器技術將主宰世界
容器化的數據科學與工程
Containerized Data Science and Engineering - Part 1, Dockerized Data Pipelines
liftr:Dockerize R Markdown Documents CRAN
BioC2015:nan xiao
Dockerizing a Shiny App
更優閱讀體驗可直接訪問原文地址:https://segmentfault.com/a/11...
作為分享主義者(sharism),本人所有互聯網發布的圖文均遵從CC版權,轉載請保留作者信息并注明作者 Harry Zhu 的 FinanceR專欄:https://segmentfault.com/blog...,如果涉及源代碼請注明GitHub地址:https://github.com/harryprince。微信號: harryzhustudio
商業使用請聯系作者。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26595.html
摘要:概述隨著容器化技術的興起,數據科學現在最大的一場運動已經不是由一個新的算法或者統計方法發起的了,而是來自的容器化技術。本文將介紹利用容器技術如何加速數據科學在生產環境中的實際應用。 showImg(https://segmentfault.com//img/bVxzYL); 概述 隨著容器化技術的興起,數據科學現在最大的一場運動已經不是由一個新的算法或者統計方法發起的了,而是來自Doc...
摘要:而大多數數據科學研究的場景下,更快的速度也意味著更早地發現問題和完成檢驗假設的閉環。通常,數據科學被認為研究成果立即應用到生產環境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數據科學研究中,快速驗證想法是非常關鍵的一環,而如何快速開發出數據產品則可以有效推動整個數據科學項...
摘要:而大多數數據科學研究的場景下,更快的速度也意味著更早地發現問題和完成檢驗假設的閉環。通常,數據科學被認為研究成果立即應用到生產環境都是比較緩慢的一個過程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在數據科學研究中,快速驗證想法是非常關鍵的一環,而如何快速開發出數據產品則可以有效推動整個數據科學項...
摘要:對于數據科學的研究可以說已經是本文我將介紹如何以文檔定義應用的方式成為數據科學中的標準交付。參考前文解密的數據科學部門如果構建知識倉庫,作為一個謝大大的死忠,我很自然選擇了作為我文檔輸出的首選工具。 showImg(https://segmentfault.com/img/remote/1460000006760433?w=423&h=426); 概述 隨著近年來,Rstudio 通過...
摘要:概述工欲善其事必先利其器,如果現在要評選數據科學中最好用的編輯器注意一定是可以通過訪問的,和一定是角逐的最大熱門,正確使用編輯器可以很大地提升我們的工作效率。 概述 showImg(https://segmentfault.com/img/bVAdol); 工欲善其事必先利其器,如果現在要評選數據科學中最好用的Web 編輯器(注意一定是可以通過Web訪問的),RStudio和Jupyt...
閱讀 3400·2021-10-08 10:15
閱讀 5440·2021-09-23 11:56
閱讀 1467·2019-08-30 15:55
閱讀 445·2019-08-29 16:05
閱讀 2725·2019-08-29 12:34
閱讀 2036·2019-08-29 12:18
閱讀 914·2019-08-26 12:02
閱讀 1650·2019-08-26 12:00