@@ -4,138 +4,137 @@ PaddlePaddle的Docker容器使用方式
4
4
PaddlePaddle目前唯一官方支持的运行的方式是Docker容器。因为Docker能在所有主要操作系统(包括Linux,Mac OS X和Windows)上运行。 请注意,您需要更改 `Dockers设置 <https://github.com/PaddlePaddle/Paddle/issues/627 >`_ 才能充分利用Mac OS X和Windows上的硬件资源。
5
5
6
6
7
- 通过Docker容器开发PaddlePaddle
7
+ 纯CPU和GPU的docker镜像使用说明
8
8
------------------------------
9
9
10
- 开发人员可以在Docker中开发PaddlePaddle。这样开发人员可以以一致的方式在不同的平台上工作 - Linux,Mac OS X和Windows。
10
+ 对于每一个PaddlePaddle版本,我们都会发布两个Docker镜像:纯CPU的和GPU的。
11
+ 我们通过设置 `dockerhub.com <https://hub.docker.com/r/paddledev/paddle/ >`_ 自动生成最新的docker镜像:
12
+ `paddledev/paddle:0.10.0rc1-cpu ` 和 `paddledev/paddle:0.10.0rc1-gpu `。
11
13
12
- 1. 将开发环境构建为Docker镜像
13
-
14
- .. code-block :: bash
14
+ 以交互容器方式运行纯CPU的镜像:
15
15
16
- git clone --recursive https://github.com/PaddlePaddle/Paddle
17
- cd Paddle
18
- docker build -t paddle:dev -f paddle/scripts/docker/Dockerfile .
16
+ .. code-block :: bash
19
17
18
+ docker run -it --rm paddledev/paddle:0.10.0rc1-cpu /bin/bash
20
19
21
- 请注意,默认情况下, :code: ` docker build ` 不会将源码导入到镜像中并编译它。如果我们想这样做,需要设置一个参数 :
20
+ 或者,可以以后台进程方式运行容器 :
22
21
23
- .. code-block :: bash
22
+ .. code-block :: bash
24
23
25
- docker build -t paddle:dev -f paddle/scripts/docker/Dockerfile --build-arg BUILD_AND_INSTALL=ON .
24
+ docker run -d -p 2202:22 -p 8888:8888 paddledev/paddle:0.10.0rc1-cpu
26
25
26
+ 然后用密码 :code: `root ` SSH进入容器:
27
27
28
- 2. 运行开发环境
28
+ .. code-block :: bash
29
29
30
- 当我们编译好了 :code: `paddle:dev `, 我们可以在docker容器里做开发,源代码可以通过挂载本地文件来被载入Docker的开发环境里面:
31
-
32
- .. code-block :: bash
30
+ ssh -p 2202 root@localhost
33
31
34
- docker run -d -p 2202:22 -v $PWD :/paddle paddle:dev
32
+ SSH方式的一个优点是我们可以从多个终端进入容器。比如,一个终端运行vi,另一个终端运行Python。另一个好处是我们可以把PaddlePaddle容器运行在远程服务器上,并在笔记本上通过SSH与其连接。
35
33
36
- 以上代码会启动一个带有PaddlePaddle开发环境的docker容器,源代码会被挂载到 :code: `/paddle ` 。
37
34
38
- 请注意, :code: `paddle:dev ` 的默认入口是 :code: `sshd ` 。以上的 :code: `docker run ` 命令其实会启动一个在2202端口监听的SSHD服务器。这样,我们就能SSH进入我们的开发容器了:
39
-
40
- .. code-block :: bash
35
+ 以上方法在GPU镜像里也能用-只是请不要忘记按装CUDA驱动,以及告诉Docker:
41
36
42
- ssh root@localhost -p 2202
37
+ .. code-block :: bash
43
38
44
- 3. 在Docker开发环境中编译与安装PaddlPaddle代码
39
+ export CUDA_SO=" $( \l s /usr/lib64/libcuda* | xargs -I{} echo ' -v {}:{}' ) $( \l s /usr/lib64/libnvidia* | xargs -I{} echo ' -v {}:{}' ) "
40
+ export DEVICES=$( \l s /dev/nvidia* | xargs -I{} echo ' --device {}:{}' )
41
+ docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:0.10.0rc1-gpu
45
42
46
- 当在容器里面的时候,可以用脚本 :code: `paddle/scripts/docker/build.sh ` 来编译、安装与测试PaddlePaddle:
47
-
48
- .. code-block :: bash
49
-
50
- /paddle/paddle/scripts/docker/build.sh
51
43
52
- 以上指令会在 :code: `/paddle/build ` 中编译PaddlePaddle。通过以下指令可以运行单元测试:
53
-
54
- .. code-block :: bash
44
+ 运行PaddlePaddle书籍
45
+ ---------------------
55
46
56
- cd /paddle/build
57
- ctest
47
+ Jupyter Notebook是一个开源的web程序,大家可以通过它制作和分享带有代码、公式、图表、文字的交互式文档。用户可以通过网页浏览文档。
58
48
59
- 4. 在Docker容器中运行PaddlePaddle书籍
49
+ PaddlePaddle书籍是为用户和开发者制作的一个交互式的Jupyter Nodebook。
50
+ 如果您想要更深入了解deep learning,PaddlePaddle书籍一定是您最好的选择。
60
51
61
- Jupyter Notebook是一个开源的web程序,大家可以通过它制作和分享带有代码、公式、图表、文字的交互式文档。用户可以通过网页浏览文档。
52
+ 当您进入容器内之后,只用运行以下命令:
62
53
63
- PaddlePaddle书籍是为用户和开发者制作的一个交互式的Jupyter Nodebook。
64
- 如果您想要更深入了解deep learning,PaddlePaddle书籍一定是您最好的选择。
65
-
66
- 当您进入容器内之后,只用运行以下命令:
54
+ .. code-block :: bash
55
+
56
+ jupyter notebook
67
57
68
- .. code-block :: bash
69
-
70
- jupyter notebook
58
+ 然后在浏览器中输入以下网址:
59
+
60
+ .. code-block :: text
71
61
72
- 然后在浏览器中输入以下网址:
73
-
74
- .. code-block :: text
62
+ http://localhost:8888/
75
63
76
- http://localhost:8888/
64
+ 就这么简单,享受您的旅程!
77
65
78
- 就这么简单,享受您的旅程!
79
66
80
- 纯CPU和GPU的docker镜像
81
- ----------------------
67
+ 非AVX镜像
68
+ ---------
82
69
83
- 对于每一个PaddlePaddle版本,我们都会发布两个Docker镜像:纯CPU的和GPU的。我们通过设置 ` dockerhub.com < https://hub.docker.com/r/paddledev/paddle/ >`_ 自动运行以下两个命令 :
70
+ 纯CPU镜像以及GPU镜像都会用到AVX指令集,但是2008年之前生产的旧电脑不支持AVX。以下指令能检查Linux电脑是否支持AVX :
84
71
85
72
.. code-block :: bash
86
73
87
- docker build -t paddle:cpu -f paddle/scripts/docker/Dockerfile --build-arg BUILD_AND_INSTALL=ON .
88
- docker build -t paddle:gpu -f paddle/scripts/docker/Dockerfile.gpu --build-arg BUILD_AND_INSTALL=ON .
74
+ if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi
89
75
90
- 以交互容器方式运行纯CPU的镜像 :
76
+ 如果输出是No,我们就需要手动编译一个非AVX版本的镜像 :
91
77
92
78
.. code-block :: bash
93
79
94
- docker run -it --rm paddledev/paddle:0.10.0rc1-cpu /bin/bash
80
+ cd ~
81
+ git clone https://github.com/PaddlePaddle/Paddle.git
82
+ cd Paddle
83
+ docker build --build-arg WITH_AVX=OFF -t paddle:cpu-noavx -f paddle/scripts/docker/Dockerfile .
84
+ docker build --build-arg WITH_AVX=OFF -t paddle:gpu-noavx -f paddle/scripts/docker/Dockerfile.gpu .
95
85
96
- 或者,可以以后台进程方式运行容器:
97
86
98
- .. code-block :: bash
87
+ 通过Docker容器开发PaddlePaddle
88
+ ------------------------------
99
89
100
- docker run -d -p 2202:22 paddledev/paddle:0.10.0rc1-cpu
90
+ 开发人员可以在Docker中开发PaddlePaddle。这样开发人员可以以一致的方式在不同的平台上工作 - Linux,Mac OS X和Windows。
101
91
102
- 然后用密码 :code: `root ` SSH进入容器:
92
+ 1. 将开发环境构建为Docker镜像
93
+
94
+ .. code-block :: bash
103
95
104
- .. code-block :: bash
96
+ git clone --recursive https://github.com/PaddlePaddle/Paddle
97
+ cd Paddle
98
+ docker build -t paddle:dev -f paddle/scripts/docker/Dockerfile .
105
99
106
- ssh -p 2202 root@localhost
107
100
108
- SSH方式的一个优点是我们可以从多个终端进入容器。比如,一个终端运行vi,另一个终端运行Python。另一个好处是我们可以把PaddlePaddle容器运行在远程服务器上,并在笔记本上通过SSH与其连接。
101
+ 请注意,默认情况下, :code: ` docker build ` 不会将源码导入到镜像中并编译它。如果我们想这样做,需要设置一个参数:
109
102
103
+ .. code-block :: bash
110
104
111
- 以上方法在GPU镜像里也能用-只是请不要忘记按装CUDA驱动,以及告诉Docker:
105
+ docker build -t paddle:dev -f paddle/scripts/docker/Dockerfile --build-arg BUILD_AND_INSTALL=ON .
112
106
113
- .. code-block :: bash
114
107
115
- export CUDA_SO=" $( \l s /usr/lib64/libcuda* | xargs -I{} echo ' -v {}:{}' ) $( \l s /usr/lib64/libnvidia* | xargs -I{} echo ' -v {}:{}' ) "
116
- export DEVICES=$( \l s /dev/nvidia* | xargs -I{} echo ' --device {}:{}' )
117
- docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:0.10.0rc1-gpu
108
+ 2. 运行开发环境
118
109
110
+ 当我们编译好了 :code: `paddle:dev `, 我们可以在docker容器里做开发,源代码可以通过挂载本地文件来被载入Docker的开发环境里面:
111
+
112
+ .. code-block :: bash
119
113
120
- 非AVX镜像
121
- ---------
114
+ docker run -d -p 2202:22 -v $PWD :/paddle paddle:dev
122
115
123
- 纯CPU镜像以及GPU镜像都会用到AVX指令集,但是2008年之前生产的旧电脑不支持AVX。以下指令能检查Linux电脑是否支持AVX:
116
+ 以上代码会启动一个带有PaddlePaddle开发环境的docker容器,源代码会被挂载到 :code: ` /paddle ` 。
124
117
118
+ 请注意, :code: `paddle:dev ` 的默认入口是 :code: `sshd ` 。以上的 :code: `docker run ` 命令其实会启动一个在2202端口监听的SSHD服务器。这样,我们就能SSH进入我们的开发容器了:
119
+
120
+ .. code-block :: bash
125
121
126
- .. code-block :: bash
122
+ ssh root@localhost -p 2202
127
123
128
- if cat /proc/cpuinfo | grep -i avx ; then echo Yes ; else echo No ; fi
124
+ 3. 在Docker开发环境中编译与安装PaddlPaddle代码
129
125
130
- 如果输出是No,我们就需要手动编译一个非AVX版本的镜像:
126
+ 当在容器里面的时候,可以用脚本 :code: `paddle/scripts/docker/build.sh ` 来编译、安装与测试PaddlePaddle:
127
+
128
+ .. code-block :: bash
129
+
130
+ /paddle/paddle/scripts/docker/build.sh
131
131
132
- .. code-block :: bash
132
+ 以上指令会在 :code: `/paddle/build ` 中编译PaddlePaddle。通过以下指令可以运行单元测试:
133
+
134
+ .. code-block :: bash
133
135
134
- cd ~
135
- git clone https://github.com/PaddlePaddle/Paddle.git
136
- cd Paddle
137
- docker build --build-arg WITH_AVX=OFF -t paddle:cpu-noavx -f paddle/scripts/docker/Dockerfile .
138
- docker build --build-arg WITH_AVX=OFF -t paddle:gpu-noavx -f paddle/scripts/docker/Dockerfile.gpu .
136
+ cd /paddle/build
137
+ ctest
139
138
140
139
141
140
文档
0 commit comments