全文共4725字,预计学习时长20分钟

环境设计元素分析图(如何建造数据科学发展环境的)(1)

来源:Pexels

环境设计元素分析图(如何建造数据科学发展环境的)(2)

1. 简介

启动一个数据科学项目通常很有趣,至少在初期是这样。获取一些数据,开始进行提问,探索项目,制作场景,尝试建模,几分钟后你就会有一堆有趣又混乱的想法,而且还要处理更多数据整理工作。然后你就会明白必须要去整理Jupyter Notebook,开始对代码进行注释和版本控制,并且还需要花些时间在“没那么有趣”的分析部分。如果需要与他人共享发现成果,或者要将模型产出,而你又发现自己在分析过程中不知道到底使用了哪些库和版本,那么未来就会面临更多问题。

一般来说,数据科学家往往更关注结果(比如模型、可视化等)而不是过程本身,这意味着作为软件工程师,我们对文件编制和版本控制的重视不够。

因此,一般需要使用现有的合适工具,为开发数据科学项目定下惯例。

目标:本文的目标是为数据科学家提供工具和方向,以便数据科学家们通过使用Conda、Git、DVC和JupyterLab四个关键工具,以可靠且可重现的方式管理其项目。学完本教程,读者就能够创建存储库,更新Scrips、数据集和模型版本,并在新计算机上复制相同的开发环境。

本教程为在Linux计算机上运行Ubuntu 18.04,但也可以通过使用其他命令行包管理工具,例如Homebrew(运行平台Mac)或者Chocolatey(运行平台为Windows)在Mac或Windows上轻松复制。

此外,还会使用AWS S3将数据文件在DVC文件中存储。要执行本教程中的相同步骤,需要一个安装并配置了awscil的AWS账户。

环境设计元素分析图(如何建造数据科学发展环境的)(3)

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很有意思,可以作为一组工具的补充以帮助项目管理。

环境设计元素分析图(如何建造数据科学发展环境的)(4)

来源:Pexels

环境设计元素分析图(如何建造数据科学发展环境的)(5)

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

环境设计元素分析图(如何建造数据科学发展环境的)(6)

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存储库对其余文件进行追踪。因此项目所做的任何更改都会记录在案,并且可以轻松复制和追踪。

环境设计元素分析图(如何建造数据科学发展环境的)(7)

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条命令就可以在新计算机上拥有完全相同的开发环境(包括数据文件和已安装的库)。

环境设计元素分析图(如何建造数据科学发展环境的)(8)

6. 结论

本文介绍了一些关键的工具,以便数据科学家创建可靠且可重构的开发环境。我们相信,数据科学这个领域可以通过在项目开发中使用最佳的方法而变得更加成熟,而Conda、Git、DVC和JupyterLab则是这一新方法的关键部分。

环境设计元素分析图(如何建造数据科学发展环境的)(9)

来源:Pexels

环境设计元素分析图(如何建造数据科学发展环境的)(10)

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

,