docker_install.txt 5.2 KB
Newer Older
Y
Yu Yang 已提交
1
Docker installation guide
2
==========================
Y
Yu Yang 已提交
3

4
PaddlePaddle provide the `Docker <https://www.docker.com/>`_ image. `Docker`_ is a lightweight container utilities. The performance of PaddlePaddle in `Docker`_ container is basically as same as run it in a normal linux. The `Docker`_ is a very convenient way to deliver the binary release for linux programs.
Y
Yu Yang 已提交
5

6
..  note::
Y
Yu Yang 已提交
7

8
    The `Docker`_ image is the recommended way to run PaddlePaddle 
Y
Yu Yang 已提交
9

10 11
PaddlePaddle Docker images
--------------------------
Y
Yu Yang 已提交
12

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
There are 12 `images <https://hub.docker.com/r/paddledev/paddle/tags/>`_ for PaddlePaddle, and the name is :code:`paddle-dev/paddle`,  tags are\: 


+-----------------+------------------+------------------------+-----------------------+
|                 |   normal         |           devel        |          demo         |
+=================+==================+========================+=======================+
|       CPU       | cpu-latest       | cpu-devel-latest       | cpu-demo-latest       |
+-----------------+------------------+------------------------+-----------------------+
|       GPU       | gpu-latest       | gpu-devel-latest       | gpu-demo-latest       |
+-----------------+------------------+------------------------+-----------------------+
| CPU WITHOUT AVX | cpu-noavx-latest | cpu-devel-noavx-latest | cpu-demo-noavx-latest |
+-----------------+------------------+------------------------+-----------------------+
| GPU WITHOUT AVX | gpu-noavx-latest | gpu-devel-noavx-latest | gpu-demo-noavx-latest |
+-----------------+------------------+------------------------+-----------------------+

And the three columns are:

* normal\: The docker image only contains binary of PaddlePaddle.
* devel\: The docker image contains PaddlePaddle binary, source code and essential build environment.
* demo\: The docker image contains the dependencies to run PaddlePaddle demo.

And the four rows are:

* CPU\: CPU Version. Support CPU which has :code:`AVX` instructions.
* GPU\: GPU Version. Support GPU, and cpu has :code:`AVX` instructions.
* CPU WITHOUT AVX\: CPU Version, which support most CPU even doesn't have :code:`AVX` instructions.
* GPU WITHOUT AVX\: GPU Version, which support most CPU even doesn't have :code:`AVX` instructions.

User can choose any version depends on machine. The following script can help you to detect your CPU support :code:`AVX` or not.

..  code-block:: bash
    
    if cat /proc/cpuinfo | grep -q avx ; then echo "Support AVX"; else echo "Not support AVX"; fi

If the output is :code:`Support AVX`, then you can choose the AVX version of PaddlePaddle, otherwise, you need select :code:`noavx` version of PaddlePaddle. For example, the CPU develop version of PaddlePaddle is :code:`paddle-dev/paddle:cpu-devel-latest`.

The PaddlePaddle images don't contain any entry command. You need to write your entry command to use this image. See :code:`Remote Access` part or just use following command to run a :code:`bash`

..  code-block:: bash

    docker run -it paddledev/paddle:cpu-latest /bin/bash


Download and Run Docker images
------------------------------
Y
Yu Yang 已提交
58 59 60

You have to install Docker in your machine which has linux kernel version 3.10+ first. You can refer to the official guide https://docs.docker.com/engine/installation/ for further information.

61 62 63 64 65 66
You can use :code:`docker pull ` to download images first, or just launch a container with :code:`docker run` \:

..  code-block:: bash

    docker run -it paddledev/paddle:cpu-latest

Y
Yu Yang 已提交
67 68 69

If you want to launch container with GPU support, you need to set some environment variables at the same time:

70 71 72 73 74
..  code-block:: bash

    export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}"
    export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}')
    docker run ${CUDA_SO} ${DEVICES} -it paddledev/paddle:gpu-latest
Y
Yu Yang 已提交
75 76


77 78 79 80 81
Some notes for docker
---------------------

Performance
+++++++++++
Y
Yu Yang 已提交
82 83 84 85 86 87 88 89

Since Docker is based on the lightweight virtual containers, the CPU computing performance maintains well. And GPU driver and equipments are all mapped to the container, so the GPU computing performance would not be seriously affected.

If you use high performance nic, such as RDMA(RoCE 40GbE or IB 56GbE), Ethernet(10GbE), it is recommended to use config "-net = host".




90 91
Remote access
+++++++++++++
Y
Yu Yang 已提交
92 93


94
If you want to enable ssh access background, you need to build an image by yourself. Please refer to official guide https://docs.docker.com/engine/reference/builder/ for further information.
Y
Yu Yang 已提交
95

96
Following is a simple Dockerfile with ssh:
Y
Yu Yang 已提交
97

98
..  literalinclude:: ../../doc_cn/build_and_install/install/paddle_ssh.Dockerfile
Y
Yu Yang 已提交
99

100
Then you can build an image with Dockerfile and launch a container:
Y
Yu Yang 已提交
101

102
..  code-block:: bash
Y
Yu Yang 已提交
103

104 105 106 107
    # cd into Dockerfile directory
    docker build . -t paddle_ssh
    # run container, and map host machine port 8022 to container port 22
    docker run -d -p 8022:22 --name paddle_ssh_machine paddle_ssh
Y
Yu Yang 已提交
108 109 110

Now, you can ssh on port 8022 to access the container, username is root, password is also root:

111
..  code-block:: bash
Y
Yu Yang 已提交
112

113
    ssh -p 8022 root@YOUR_HOST_MACHINE
Y
Yu Yang 已提交
114 115

You can stop and delete the container as following:
116 117 118 119 120 121 122

..  code-block:: bash

    # stop
    docker stop paddle_ssh_machine
    # delete
    docker rm paddle_ssh_machine