diff --git a/DeepSpeedExamples b/DeepSpeedExamples index 9e2c34e31cec..a0a80fcc010b 160000 --- a/DeepSpeedExamples +++ b/DeepSpeedExamples @@ -1 +1 @@ -Subproject commit 9e2c34e31cec99f7d5785c6a1a3b0854c322f883 +Subproject commit a0a80fcc010be54dca1710d71436859eabc52c0c diff --git a/azure-pipelines-docker.yml b/azure-pipelines-docker.yml index dc1782f997f3..b468c267aebc 100644 --- a/azure-pipelines-docker.yml +++ b/azure-pipelines-docker.yml @@ -29,7 +29,7 @@ stages: displayName: Build and Push inputs: command: buildAndPush - dockerfile: '$(Build.SourcesDirectory)/Dockerfile' + dockerfile: '$(Build.SourcesDirectory)/docker/Dockerfile' repository: deepspeed/deepspeed tags: | $(tag) diff --git a/Dockerfile b/docker/Dockerfile similarity index 76% rename from Dockerfile rename to docker/Dockerfile index de6932351cd0..62309c03ea0d 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -11,11 +11,13 @@ RUN mkdir -p ${STAGE_DIR} ############################################################################## RUN apt-get update && \ apt-get install -y --no-install-recommends \ - software-properties-common \ - openssh-client openssh-server \ - pdsh curl sudo net-tools \ - vim iputils-ping wget - #llvm-9-dev cmake + software-properties-common build-essential autotools-dev \ + nfs-common pdsh \ + cmake g++ gcc \ + curl wget vim tmux emacs less unzip \ + htop iftop iotop ca-certificates openssh-client openssh-server \ + rsync iputils-ping net-tools sudo \ + llvm-9-dev ############################################################################## # Installation Latest Git @@ -25,6 +27,43 @@ RUN add-apt-repository ppa:git-core/ppa -y && \ apt-get install -y git && \ git --version +############################################################################## +# Client Liveness & Uncomment Port 22 for SSH Daemon +############################################################################## +# Keep SSH client alive from server side +RUN echo "ClientAliveInterval 30" >> /etc/ssh/sshd_config +RUN cp /etc/ssh/sshd_config ${STAGE_DIR}/sshd_config && \ + sed "0,/^#Port 22/s//Port 22/" ${STAGE_DIR}/sshd_config > /etc/ssh/sshd_config + +############################################################################## +# Mellanox OFED +############################################################################## +ENV MLNX_OFED_VERSION=4.6-1.0.1.1 +RUN apt-get install -y libnuma-dev +RUN cd ${STAGE_DIR} && \ + wget -q -O - http://www.mellanox.com/downloads/ofed/MLNX_OFED-${MLNX_OFED_VERSION}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64.tgz | tar xzf - && \ + cd MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64 && \ + ./mlnxofedinstall --user-space-only --without-fw-update --all -q && \ + cd ${STAGE_DIR} && \ + rm -rf ${STAGE_DIR}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64* + +############################################################################## +# nv_peer_mem +############################################################################## +ENV NV_PEER_MEM_VERSION=1.1 +ENV NV_PEER_MEM_TAG=1.1-0 +RUN mkdir -p ${STAGE_DIR} && \ + git clone https://github.com/Mellanox/nv_peer_memory.git --branch ${NV_PEER_MEM_TAG} ${STAGE_DIR}/nv_peer_memory && \ + cd ${STAGE_DIR}/nv_peer_memory && \ + ./build_module.sh && \ + cd ${STAGE_DIR} && \ + tar xzf ${STAGE_DIR}/nvidia-peer-memory_${NV_PEER_MEM_VERSION}.orig.tar.gz && \ + cd ${STAGE_DIR}/nvidia-peer-memory-${NV_PEER_MEM_VERSION} && \ + apt-get update && \ + apt-get install -y dkms && \ + dpkg-buildpackage -us -uc && \ + dpkg -i ${STAGE_DIR}/nvidia-peer-memory_${NV_PEER_MEM_TAG}_all.deb + ############################################################################## # OPENMPI ############################################################################## @@ -63,6 +102,7 @@ RUN apt-get install -y python3 python3-dev && \ # Print python an pip version python -V && pip -V RUN pip install pyyaml +RUN pip install ipython ############################################################################## # TensorFlow @@ -70,6 +110,49 @@ RUN pip install pyyaml ENV TENSORFLOW_VERSION=1.15.2 RUN pip install tensorflow-gpu==${TENSORFLOW_VERSION} +############################################################################## +# Some Packages +############################################################################## +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + libsndfile-dev \ + libcupti-dev \ + libjpeg-dev \ + libpng-dev \ + screen +RUN pip install psutil \ + yappi \ + cffi \ + ipdb \ + pandas \ + matplotlib \ + py3nvml \ + pyarrow \ + graphviz \ + astor \ + boto3 \ + tqdm \ + sentencepiece \ + msgpack \ + requests \ + pandas \ + sphinx \ + sphinx_rtd_theme \ + scipy \ + numpy \ + sklearn \ + scikit-learn \ + nvidia-ml-py3 \ + mpi4py \ + cupy-cuda100 + +############################################################################## +## SSH daemon port inside container cannot conflict with host OS port +############################################################################### +ENV SSH_PORT=2222 +RUN cat /etc/ssh/sshd_config > ${STAGE_DIR}/sshd_config && \ + sed "0,/^#Port 22/s//Port ${SSH_PORT}/" ${STAGE_DIR}/sshd_config > /etc/ssh/sshd_config + ############################################################################## # PyTorch ############################################################################## @@ -81,46 +164,11 @@ RUN pip install torchvision==${TORCHVISION_VERSION} RUN pip install tensorboardX==${TENSORBOARDX_VERSION} ############################################################################## -# Temporary Installation Directory -############################################################################## -ENV STAGE_DIR=/tmp -RUN mkdir -p ${STAGE_DIR} - -############################################################################## -# Mellanox OFED -############################################################################## -ENV MLNX_OFED_VERSION=4.6-1.0.1.1 -RUN apt-get install -y libnuma-dev -RUN cd ${STAGE_DIR} && \ - wget -q -O - http://www.mellanox.com/downloads/ofed/MLNX_OFED-${MLNX_OFED_VERSION}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64.tgz | tar xzf - && \ - cd MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64 && \ - ./mlnxofedinstall --user-space-only --without-fw-update --all -q && \ - cd ${STAGE_DIR} && \ - rm -rf ${STAGE_DIR}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64* - -############################################################################## -# nv_peer_mem +# PyYAML build issue +# https://stackoverflow.com/a/53926898 ############################################################################## -ENV NV_PEER_MEM_VERSION=1.1 -ENV NV_PEER_MEM_TAG=1.1-0 -RUN mkdir -p ${STAGE_DIR} && \ - git clone https://github.com/Mellanox/nv_peer_memory.git --branch ${NV_PEER_MEM_TAG} ${STAGE_DIR}/nv_peer_memory && \ - cd ${STAGE_DIR}/nv_peer_memory && \ - ./build_module.sh && \ - cd ${STAGE_DIR} && \ - tar xzf ${STAGE_DIR}/nvidia-peer-memory_${NV_PEER_MEM_VERSION}.orig.tar.gz && \ - cd ${STAGE_DIR}/nvidia-peer-memory-${NV_PEER_MEM_VERSION} && \ - apt-get update && \ - apt-get install -y dkms && \ - dpkg-buildpackage -us -uc && \ - dpkg -i ${STAGE_DIR}/nvidia-peer-memory_${NV_PEER_MEM_TAG}_all.deb - -############################################################################## -## SSH daemon port inside container cannot conflict with host OS port -############################################################################### -ENV SSH_PORT=2222 -RUN cat /etc/ssh/sshd_config > ${STAGE_DIR}/sshd_config && \ - sed "0,/^#Port 22/s//Port ${SSH_PORT}/" ${STAGE_DIR}/sshd_config > /etc/ssh/sshd_config +RUN rm -rf /usr/lib/python3/dist-packages/yaml && \ + rm -rf /usr/lib/python3/dist-packages/PyYAML-* ############################################################################## ## Add deepspeed user