如何建造數據科學發展環境的「銅牆鐵壁」?(內附手把手教程)

全文共4725字,預計學習時長20分鐘python

來源:Pexelsgit

1. 簡介程序員

啓動一個數據科學項目一般頗有趣,至少在初期是這樣。獲取一些數據,開始進行提問,探索項目,製做場景,嘗試建模,幾分鐘後你就會有一堆有趣又混亂的想法,並且還要處理更多數據整理工做。而後你就會明白必需要去整理Jupyter Notebook,開始對代碼進行註釋和版本控制,而且還須要花些時間在「沒那麼有趣」的分析部分。若是須要與他人共享發現成果,或者要將模型產出,而你又發現本身在分析過程當中不知道到底使用了哪些庫和版本,那麼將來就會面臨更多問題。github

通常來講,數據科學家每每更關注結果(好比模型、可視化等)而不是過程自己,這意味着做爲軟件工程師,咱們對文件編制和版本控制的重視不夠。api

所以,通常須要使用現有的合適工具,爲開發數據科學項目定下慣例。bash

目標:本文的目標是爲數據科學家提供工具和方向,以便數據科學家們經過使用Conda、Git、DVC和JupyterLab四個關鍵工具,以可靠且可重現的方式管理其項目。學完本教程,讀者就可以建立存儲庫,更新Scrips、數據集和模型版本,並在新計算機上覆制相同的開發環境。微信

本教程爲在Linux計算機上運行Ubuntu 18.04,但也能夠經過使用其餘命令行包管理工具,例如Homebrew(運行平臺Mac)或者Chocolatey(運行平臺爲Windows)在Mac或Windows上輕鬆複製。app

此外,還會使用AWS S3將數據文件在DVC文件中存儲。要執行本教程中的相同步驟,須要一個安裝並配置了awscil的AWS帳戶。curl

2. 工具機器學習

Conda

Conda是一個環境和包管理工具,能夠代替Python中的pipenv和pip。Conda是Anaconda的一部分,Anaconda是Python(和R語言)針對數據科學領域的發行版本。能夠選擇安裝完整版(名爲Anaconda,大小約3GB)或輕量版(名爲Miniconda,大小約400MB)。筆者建議使用Miniconda,由於只要安裝所需的庫。

Git

Git是一個用於管理軟件開發的版本控制系統。使用Git能夠追蹤在存儲庫文件夾中的代碼上所作的全部更改。一般會把GitHub、Bitbucket或GitLab等雲服務鏈接到本地存儲庫來管理和儲存存儲庫。本教程使用GitHub來存儲項目存儲庫,所以須要一個已激活的賬戶來執行本教程的步驟。

DVC

DVC(數據版本控制)是用於管理數據集和機器學習模型的工具,至關於Git。經過DVC,將 Git 存儲庫連接到雲(AWS、Azure、GoogleCloud Platform等雲服務平臺)或者本地存儲以存儲大型文件,由於Git不適合用於大於100MB的文件。

JupyterLab

JupyterLab是一個交互式開發環境,用於運行Jupyternotebook、代碼和數據。JupyterLab是Project Jupyter最新發布的版本,具有舊版Jupyternotebook中的全部功能,而且具備更穩定的界面。在數據科學項目中,進行數據整理和可視化的Notebook已經流行起來,由於它提供了動態研究數據的絕佳方式。

代碼編輯器和Git客戶端

代碼編輯器是程序員的必備工具,如今有許多開源版本和付費版本可供選用。因此能夠任意選擇更契合需求的代碼編輯器。

Git客戶端是一個提供圖形用戶界面的工具,用於對代碼進行版本控制。Git頗有意思,能夠做爲一組工具的補充以幫助項目管理。

來源:Pexels

3. 安裝Git和Conda

爲了開始構建開發環境,首先須要安裝這些工具。首先安裝Git(1)並使用終端進行配置(2)。

第1步:安裝Git

sudo apt-get install git

第2步:配置Git帳戶

git config --global user.name"Your Name"

git config --global user.email "yourmail@mail.com"

接下來安裝Miniconda,下載其最新版本(3),更改安裝文件的權限(4)並啓動運行(5)。如下操做也很重要:將Miniconda文件夾添加到系統路徑(6)中,只需在終端上輸入「conda」便可運行命令。

第3步:下載Miniconda的Linux最新版

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

第4步:更改許可並運行Minicondabash文件

chmod +xMiniconda3-latest-Linux-x86_64.sh

第5步:運行Miniconda安裝文件

./Miniconda3-latest-Linux-x86_64.sh

第6步:導出路徑到Miniconda安裝文件夾

exportPATH=/home/YOURNAME/miniconda3/bin:$PATH

4. 配置開發環境

如今已經安裝了工具,是時候開始設置開發環境了。

建立項目 Git 存儲庫

首先,使用GitHub信息定義變量(8),在 GitHub上建立遠程存儲庫(9),並檢查建立是否成功(10)。接下來,建立一個本地文件夾來存儲項目存儲庫(11)和README文件(12)。而後,啓動本地Git存儲庫(13),並將第一個提交推送到 GitHub(14)。

第8步:將 GitHub 信息定義爲變量

GitHubName=<YourGitHubName>

GitHubPassword=<YourGitHubPassword>

第9步:在 GitHub 上建立一個新的git存儲庫

#名爲"DataScience_DevEnv "

curl -u $GitHubName:$GitHubPassword https://api.github.com/user/repos -d'{"name":"DataScience_DevEnv"}'

第10步:檢查新存儲庫是否在GitHub有效

curl"https://api.github.com/users/$GitHubName/repos?per_page=100" | grep-w clone_url | grep -o '[^"]\+://.\+.git'

第11步:建立一個文件夾並以存儲庫名稱命名

mkdir DataScience_DevEnv

cd DataScience_DevEnv

第12步:爲存儲庫建立README文件夾

echo "# Data Science developmentenvironment repository" >> README.md

第13步:啓動本地Git存儲庫

git init

第14步:添加、提交和推送README.md到GitHub

git add README.md

git commit -m "first commit with README file"

git remote add originhttps://github.com/GabrielSGoncalves/DataScience_DevEnv.git

git push -u origin master

能夠在GitHub頁面上檢查是否正確建立了存儲庫,它應包含首次提交的README文件。

使用Conda建立環境

如今已經設置了Git存儲庫,下一步將建立咱們的conda環境(15)。只需定義此環境的名稱(-n)、python版本和要安裝的庫(例如pandas和scikit-learn)。建立後,只須要輸入命令 conda activate和此環境的名稱(16)。

第15步:建立o Conda環境

conda create -n datascience_devenvpython=3.7 pandas scikit-learn

第16步:激活此環境

conda activatedatascience_devenv

在環境中安裝JupyterLab、DVC和其餘庫

如今咱們在conda環境中工做,能夠安裝JupyterLab(17)和DVC(18)。使用 conda 的另外一個好處是它也能夠用來安裝軟件包,就像使用pip時同樣。:

第17步:安裝JupyterLab和

#Conda

conda install -c conda-forge jupyterlab

#或者pip

pip install jupyterlab

第18步:安裝DVC和

#conda

conda install -c conda-forgedvc

#或者pip

pip install dvc

咱們可使用命令 list(19)列出當前環境中可用的庫。還可使用conda或pip(20)爲環境生成需求文件。

第19步:列出已安裝軟件包

#使用conda命令

conda list

#使用pip命令

pip list

第20步:建立需求文件

#使用conda命令

conda list --export > requirements.txt

#使用pip命令

pip freeze > requirements.txt

DVC和依賴項

要使用DVC存儲大型數據文件,須要配置遠程存儲文件夾。教程中使用的是WS S3,但還有其餘選擇(例如本地文件夾、Azure Blob存儲、Google Cloud存儲、Secure Shell、Hadoop分佈式文件系統、HTTP和HTTPS協議)。在DVC安裝期間必須定義要使用的存儲類型,並在括號下指定(21)。爲DVC安裝AWS S3依賴項後初始化DVC存儲庫(22)。接下來在存儲庫中建立一個名爲data 的文件夾來存儲數據文件,並使用 DVC進行版本控制(23)。而後建立一個S3存儲桶以遠程存儲數據文件(24)。請牢記,爲了使用終端運行 AWS 命令,已經使用IAM證書對awscli進行了配置。建立 S3 存儲桶後將其定義爲DVC遠程文件夾(25),並檢查最後一步是否點了接受(26)。如今,能夠將csv文件下載到data 文件夾(27)並開始使用 DVC進行版本控制(28)。

第21步:安裝DVC和其附屬項以鏈接S3

pip install dvc[s3]

第22步:啓動DVC存儲庫

dvc init

第23步:在存儲庫中建立文件夾以存儲文件

mkdir data

第24步:建立S3存儲桶

aws s3 mbs3://dvc-datascience-devenv

第25步:設定新存儲桶爲DVC遠程存儲庫

dvc remote add -d myremote s3://dvc-datascience-devenv

第26步:列舉DVC遠程文件夾

dvc remote list

第27步:下載data文件命令

wget -P data/ https://dvc-repos-gsg.s3.amazonaws.com/models_pytorch_n_params.csv

第28步:添加數據文件到DVC

dvc adddata/models_pytorch_n_params.csv

每當添加文件至DVC時,都會建立一個.dvc文件,用於追蹤對原始文件所作的更改,並可使用Git進行版本控制。DVC還在data 文件夾中建立一個.gitignore文件,並將數據文件添加到其中,以便Git能夠忽略它,不須要手動設置它(29)。最後,使用 DVC將數據文件推送到遠程文件夾(即建立的S3存儲桶)(30)。

第29步:使用Git開始追蹤DVC文件和.gitignore文件

git add data/.gitignoredata/models_pytorch_n_params.csv.dvc

git commit -m "Start versioning csv file stored with DVC on S3bucket"

git push

第30步:將數據文件推送到S3存儲桶的DVC遠程存儲庫中

dvc push

DVC還能夠幫助咱們構建管道並執行實驗,從而更輕鬆地測試和重現特定的ETL步驟。

JupyterLab內核

安裝 JupyterLab 後,能夠在終端上輸入命令 jupyter lab。JupyterLab默認以Python爲基礎安裝做爲內核,所以若是嘗試在新建立的conda環境(而不是以Python爲基礎的環境)上導入新安裝的庫,就會跳出ModuleNotFoundError 這個錯誤。爲修復這個錯誤,須要從Conda環境(32)中安裝ipython內核(31)。這樣作能夠有一個對應於conda環境的內核,所以每一個已安裝和新安裝的庫均可以在JupyterLab環境中使用。還能夠檢查安裝在計算機上可用的Jupyter內核(33)。

第31步:使用conda安裝ipython

condainstall ipykernel

第32步:安裝基於工做環境的內核

ipythonkernel install --user --name=datascience_devenv

第33步:列出可用內核

jupyter kernelspec list

導出Conda環境

如簡介所述,堅實的開發環境有一個重要方面是能夠輕鬆進行復制。複製的其中一種方法是將有關conda環境的信息導出到 YAML 文件(34)。請記住,爲了成功導入,首先須要激活此conda環境。

第34步:導出當前conda環境到YAML文件

conda env export >datascience_devenv.yaml

第35步:將YAML文件添加到GitHub存儲庫中

git adddatascience_devenv.yaml

git commit -m 'add environment yaml to repo'

git push

項目存儲庫結構

目前爲止,該項目存儲庫具備如下結構(36)。

第36步:項目存儲庫結構

tree

.

├── data

│ ├── models_pytorch_n_params.csv

│ └── models_pytorch_n_params.csv.dvc

├── datascience_devenv.yaml

├── README.md

└── requirements.txt

若是將參數-a 與命令tree 一塊兒使用,就能對生成Git和DVC(37)的配置文件有更好的概念。如前所述,DVC爲添加的每一個數據文件建立一個.gitignore文件,以免Git對其進行追蹤。

第37步:詳細列出存儲庫結構

tree -a

.

├── data

│ ├── .gitignore

│ ├── models_pytorch_n_params.csv

│ └── models_pytorch_n_params.csv.dvc

├── datascience_devenv.yaml

├── .dvc

│ ├── cache

│ │ └── 6f

│ │ └── 387350081297a29ecde86ebfdf632c

│ ├── config

│ ├── .gitignore

│ ├── state

│ ├── tmp

│ └── updater

├── .git

│ ├── branches

│ ├── COMMIT_EDITMSG

│ ├── config

│ ├── description

│ ├── HEAD

│ ├── hooks

│ │ ├── applypatch-msg.sample

│ │ ├── commit-msg.sample

│ │ ├── fsmonitor-watchman.sample

│ │ ├── post-update.sample

│ │ ├── pre-applypatch.sample

│ │ ├── pre-commit.sample

│ │ ├── prepare-commit-msg.sample

│ │ ├── pre-push.sample

│ │ ├── pre-rebase.sample

│ │ ├── pre-receive.sample

│ │ └── update.sample

│ ├── index

│ ├── info

│ │ └── exclude

│ ├── logs

│ │ ├── HEAD

│ │ └── refs

│ │ ├── heads

│ │ │ └── master

│ │ └── remotes

│ │ └── origin

│ │ └── master

│ ├── objects

│ │ ├── 10

│ │ │ └──c06accd2ad99b6cde7fc6e3f3cd36e766ce88f

│ │ ├── 19

│ │ │ └──193f4a173c56c8d174ecc19700204d250e9067

│ │ ├── 4e

│ │ │ └──0790499d1d09db63aaf1436ddbd91bfa043058

│ │ ├── 52

│ │ │ └──4cb7d319626c1bcf24ca5184d83dc1df60c307

│ │ ├── 5f

│ │ │ └──694b1bd973389b9c0cdbf6b6893bbad2c0ebc6

│ │ ├── 61

│ │ │ └──d5f990a1bee976a2f99b202f1dc14e33b43702

│ │ ├── 67

│ │ │ └──3b06660535a92d0fdd72fe51c70c9ada47f22d

│ │ ├── 70

│ │ │ └── 1490f13b01089d7da8fa830bae3b6909d12875

│ │ ├── 72

│ │ │ └──a0ddbcc242d223cd71ee5a058fc99de2fa53cc

│ │ ├── a3

│ │ │ └──b5ebf7e3b752fa0da823aeb258b96e007b97ef

│ │ ├── af

│ │ │ └──8017769b22fcba5945e836c3c2d454efa16bd1

│ │ ├── c1

│ │ │ └──694ff5e7fe6493206eebf59ac31bf493eb7e6b

│ │ ├── d7

│ │ │ └──39682b1f99f9a684cecdf976c24ddf3266b823

│ │ ├── e4

│ │ │ └──5eca3c70f6f47e0a12f00b489aabc526c86e8b

│ │ ├── e6

│ │ │ └──9de29bb2d1d6434b8b29ae775ad8c2e48c5391

│ │ ├──ee

│ │ │ └──75f0e66a68873ac2f767c212c56411cd729eb2

│ │ ├── info

│ │ └── pack

│ └── refs

│ ├── heads

│ │ └── master

│ ├── remotes

│ │ └── origin

│ │ └── master

│ └── tags

├── README.md

└── requirements.txt

接下來,使用 Git,在存儲庫的根目錄中,爲其餘不用Git進行追蹤的文件建立一個.gitignore文件(例如Python編譯的字節碼文件:.pyc文件)(38)。

第38步:在存儲庫中爲腳本文件添加.gitignore文件

echo"*.pyc" >> .gitignore

git add .gitignore

git commit -m 'Add .gitignore for regular files'

git push

如今開發環境已完成配置並準備就緒。JupyterLab的內核與conda 環境相匹配,數據文件由 DVC 進行版本控制,Git存儲庫對其他文件進行追蹤。所以項目所作的任何更改都會記錄在案,而且能夠輕鬆複製和追蹤。

5. 複製開發環境

在設置Git存儲庫並配置DVC存儲文件夾後,就能夠在任何新計算機上對其進行復制。只需克隆這個Git存儲庫(39),從YAML文件(40)建立conda環境並激活(41),爲此環境建立一個JupyterLab內核(42),最後使用DVC文件從S3存儲桶中提取數據文件(43)。

第39步:在新計算機上克隆Git存儲庫

git clone https://github.com/$GitHubName/DataScience_DevEnv.git

第40步:建立conda環境

conda env create--file=datascience_devenv.yaml

第41步:激活此conda環境

conda activatedatascience_devenv

第42步:安裝JupyterLab內核

ipythonkernel install --user --name=datascience_devenv

第43步:使用DVC文件從S3存儲桶中提取數據文件

dvc pull

所以,僅需5條命令就能夠在新計算機上擁有徹底相同的開發環境(包括數據文件和已安裝的庫)。

6. 結論

本文介紹了一些關鍵的工具,以便數據科學家建立可靠且可重構的開發環境。咱們相信,數據科學這個領域能夠經過在項目開發中使用最佳的方法而變得更加成熟,而Conda、Git、DVC和JupyterLab則是這一新方法的關鍵部分。

來源:Pexels

留言 點贊 關注

咱們一塊兒分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」


(添加小編微信:dxsxbb,加入讀者圈,一塊兒討論最新鮮的人工智能科技哦~)

相關文章
相關標籤/搜索