如何建造数据科学发展环境的“铜墙铁壁”?(内附手把手教程)

全文共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,加入读者圈,一块儿讨论最新鲜的人工智能科技哦~)

相关文章
相关标签/搜索