DL&ML工程实验环境搭建

人工智能的大热让很多人都想了解其中的奥秘,然而也有很多人因为实验环境的搭建而放弃在探索的第一步上,作为一个记录,这篇博客将系统的讲述如何搭建一个较为通用完善的DeepLearning和machinelearning实验开发环境。

系统 Unix&Linux

如果你是Mac用户那你可以跳过这一部分直接进入下面的开发环境搭建,如果你还在使用Windows并且有不可替代的理由,那么对不起这篇文章无法对你提供任何帮助,在这里我只推荐一种操作系统Linux最流行的发行版Ubuntu,使用其他Linux版本的读者可以做相应的参考。
下面列出的是Ubuntu的官方下载地址:http://cn.ubuntu.com/download/
安装方法不再赘述,读者可自行搜索

科学上网

思索再三觉得这一部分还是不可或缺的,作为目前技术上较为前沿的领域,很多信息国内还来不及消化,遇到问题也无法及时解决,以及一些外国友人开发的第三方工具或网站无法使用,由于众所周知的原因,我们不得不借助一些工具来获取这些信息。当然,如果你对这方面的兴趣和需求并没有这么强烈,你也可以尝试修改Ubuntu或其他的安装源,使他们通过访问国内的镜像源达到同样的目的,具体方法请搜索其他博客得到帮助。
在这里我用到的是SSR(shadowsocksR),shadowsocksR作为shadowsocks的部分升级加入了一些混淆等其他协议,分为Client和Server两部分,本人不推荐自己搭建一整套的vpn服务,相对来说购买成熟的服务可以节省好多时间以及避免一些问题,所以这里只用到ssr客户端,当然如果你对相关技术很感兴趣并有较强的动手能力想自己尝试,可以再去参考其他教程自己搭建科学上网服务。
用到的软件可以在这两个下载地址找到:
这是ssr的客户程序 ssr
可视化配置ssr ssr-gui
使用Git下载后进入文件

1
2
3
4
user@computer:~$ cd electron-ssr-0.1.2/
#运行程序
user@computer:~/electron-ssr-0.1.2$ ./electron-ssr

运行界面
ssr.png
进入shadowsocksr目录下的shadowsocks文件夹点击确认
选择客户端
然后在下面的页面中就可以配置你自己的VPN了
ssr_config
本机代理一般为1080端口
如果你使用Firefox浏览器那么你可以在设置中配置socks代理
firefox_proxy
如果使用Chrome可以下载Chrome插件SwitchyOmega
Chrome_config.png
按照指导配置本地代理
swich
使用代理我们可以愉快的开始上网了
google
上述的一系列配置已经可以满足我们日常信息查询和访问的需求了,但是当我们在安装一些环境时,如Python的第三方package时,在terminal中运行命令,系统默认直接访问而不经过本地代理会导致下载速度非常慢,所以我们还需要配置在命令行模式下的VPN访问,这也是我记录VPN访问搭建时的重点所在。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# install proxychains
user@computer:~$ sudo apt-get install proxychains
# config proxychains
user@computer:~$ sudo vim /etc/proxychains.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5 127.0.0.1 1080
# test
user@computer:~$ proxychains curl www.google.com
roxyChains-3.1 (http://proxychains.sf.net)
|DNS-request| www.google.com
|S-chain|-<>-127.0.0.1:1080-<><>-4.2.2.2:53-<><>-OK
|DNS-response| www.google.com is 172.217.24.4
|S-chain|-<>-127.0.0.1:1080-<><>-172.217.24.4:80-<><>-OK
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.jp/?gfe_rd=cr&amp;dcr=0&amp;ei=ceAeWo7sNfSm8wehwrvACg">here</A>.
</BODY></HTML>

之后在使用命令行访问网络时在要执行的命令前加上proxychains 就可以实现代理。

语言环境

由于AI在算法方面迭代更新非常频繁,新的方法出现很快,使得我们不能太过于关注一门编程语言的语法细节,因此为了快速开发和容易理解的需求,Python不失为一个较好的选择。如果你之前已经了解和学习过Python恭喜你可以省去一部分语言学习的时间,如果你并没有接触过Python也不用太过担心,Python因其容易理解的特点如果你有其他编程语言的经验,学习起来也十分轻松。

Anaconda

Ubuntu系统下已经带有Python的开发编译环境,然而它只是一个通用的开发环境,并没有针对数据科学做一些特定配置,很多第三方的十分重要的用来做数据分析的package需要用户自己手动安装如numpy,pandas,sklearn等。
因此我推荐安装Anaconda,一个集成了Python编译,包管理以及一些高效辅助工具如notebook的针对Data Science定制的第三方Python环境。
我们可以在它的官方网站下载Anaconda

Python3 OR Python2

由于Python的发展迅猛,所以在广泛使用的Python2的基础上有了一次较为重大的更新Python3,然而由于Python3并没有考虑后向兼容,所以导致了一个问题原有在Python2上开发的一些程序在Python3环境下并不能运行,因此如果你是Python2的用户并且有在Python2上运行维护的代码,建议你慎重考虑是否使用Python3,如果你打算重新开始Python或者以前没有接触过Python个人建议直接从Python3环境开始学习,因为技术毕竟在进步,新版本的一些特性是在考虑了旧版的不足优化而来,同时一些第三方package也有过一段时间后不再维护Python2版本,所以选择Python3是比较理想的。

安装

下载好对应的anaconda版本 .sh 文件,在terminal中进入下载目录,进行安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
user@computer:~$ bash Anaconda3-5.0.1-Linux-x86_64.sh
Welcome to Anaconda3 5.0.1
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> #单击enter,阅读许可
... ... #一直enter,直到读完许可
Do you accept the license terms? [yes|no]
[no] >>> yes #输入yes同意许可
Anaconda3 will now be installed into this location:
/home/swapinfo/anaconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/swapinfo/anaconda3] >>> #一般为默认安装路径,单击enter就好
... 执行安装
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/swapinfo/.bashrc ? [yes|no]
[no] >>> #如果输入yes 则会在全局使用anaconda环境,如果输入no则在每次使用时需要引用。

实验环境

OpenCV

如果你对CV(computer version)方向很感兴趣的话,OpenCV是你必不可少的用来处理和分析图像的工具。

安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
user@computer:~$ sudo apt-get install build-essential checkinstall cmake pkg-config yasm
user@computer:~$ sudo apt-get install git gfortran
user@computer:~$ sudo apt-get install libjpeg8-dev libjasper-dev libpng12-dev
user@computer:~$ sudo apt-get install libtiff5-dev
user@computer:~$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
user@computer:~$ sudo apt-get install libxine2-dev libv4l-dev
user@computer:~$ sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
user@computer:~$ sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev
user@computer:~$ sudo apt-get install libatlas-base-dev
user@computer:~$ sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
user@computer:~$ sudo apt-get install libvorbis-dev libxvidcore-dev
user@computer:~$ sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
user@computer:~$ sudo apt-get install x264 v4l-utils
1
user@computer:~$ sudo apt-get install python2.7-dev python3.5-dev

下载OpenCV

1
2
user@computer:~$ git clone https://github.com/opencv/opencv.git
user@computer:~$ git clone https://github.com/opencv/opencv_contrib.git

编辑OpenCV安装配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
user@computer:~$ cd opencv/
user@computer:~/opencv$ mkdir build
user@computer:~/opencv$ cd build
user@computer:~/opencv/build$ cmake -D CMAKE_INSTALL_PREFIX=/usr/local #默认安装路径
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules #额外modules
-D ENABLE_FAST_MATH=ON
-D WITH_CUBLAS=ON
-D BUILD_OPENCV_PYTHON3=ON #这里我使用了Anaconda python3 所以开启Python3编译
-D PYTHON3_EXECUTABLE=~/anaconda3/bin/python Anaconda python 执行路径
-D PYTHON3_INCLUDE_PATH=~/anaconda3/include/python3.6m
-D PYTHON3_LIBRARIES=~/anaconda3/lib/python3.6/site-packages
-D OPENCV_ENABLE_NONFREE=ON
-D WITH_TBB=ON
-D WITH_V4L=ON
-D INSTALL_C_EXAMPLES=OFF
-D BUILD_SHARED_LIBS=ON
..

编译&安装OpenCV

1
2
3
user@computer:~/opencv/build$ make -j4
user@computer:~/opencv/build$ sudo make install
user@computer:~/opencv/build$ sudo ldconfig

测试安装是否成功

1
2
user@computer:~$ pkg-config --modversion opencv
3.3.1

动态链接到Anaconda Python环境

1
2
3
4
5
6
7
8
9
10
11
12
user@computer:~$ cd /usr/local/lib/python3.4/disk-packages/cv2
user@computer:/usr/local/lib/python3.4/disk-packages/cv2$ cp cv2.cpython-34m.so ~/anaconda3/lib/python3.6/site-packages/cv2.so
# test
user@computer:~$ ipython
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import cv2
In [2]:
# 安装成功

TensorFlow

作为当前最为流行的机器学习库之一,TensorFlow有大量开源的实验的代码和十分活跃的社区为其更新提供支持,当你在遇到问题时也可以十分迅速的得到解决,因此在这里我第一个推荐安装的
详细请参考TensorFlow官方安装指导
由于实验机器带有NVIDIA独立GPU,所以我用下面的命令进行安装

1
2
3
4
if use GPU
user@computer:~$ pip install tensorflow
if not use GPU
user@computer:~$ pip install tensorflow-gpu