Dockerfile 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. FROM nvidia/cuda:10.0-devel-ubuntu18.04
  2. ##############################################################################
  3. # Installation/Basic Utilities
  4. ##############################################################################
  5. RUN apt-get update && \
  6. apt-get install -y --no-install-recommends \
  7. software-properties-common \
  8. openssh-client openssh-server \
  9. pdsh curl sudo net-tools \
  10. vim iputils-ping wget
  11. #llvm-9-dev cmake
  12. ##############################################################################
  13. # Installation Latest Git
  14. ##############################################################################
  15. RUN add-apt-repository ppa:git-core/ppa -y && \
  16. apt-get update && \
  17. apt-get install -y git && \
  18. git --version
  19. ##############################################################################
  20. # Python
  21. ##############################################################################
  22. ENV DEBIAN_FRONTEND=noninteractive
  23. ENV PYTHON_VERSION=3
  24. RUN apt-get install -y python3 python3-dev && \
  25. rm -f /usr/bin/python && \
  26. ln -s /usr/bin/python3 /usr/bin/python && \
  27. curl -O https://bootstrap.pypa.io/get-pip.py && \
  28. python get-pip.py && \
  29. rm get-pip.py && \
  30. pip install --upgrade pip && \
  31. # Print python an pip version
  32. python -V && pip -V
  33. RUN pip install pyyaml
  34. ##############################################################################
  35. # TensorFlow
  36. ##############################################################################
  37. ENV TENSORFLOW_VERSION=1.15.2
  38. RUN pip install tensorflow-gpu==${TENSORFLOW_VERSION}
  39. ##############################################################################
  40. # PyTorch
  41. ##############################################################################
  42. ENV PYTORCH_VERSION=1.2.0
  43. ENV TORCHVISION_VERSION=0.4.0
  44. ENV TENSORBOARDX_VERSION=1.8
  45. RUN pip install torch==${PYTORCH_VERSION}
  46. RUN pip install torchvision==${TORCHVISION_VERSION}
  47. RUN pip install tensorboardX==${TENSORBOARDX_VERSION}
  48. ##############################################################################
  49. # Temporary Installation Directory
  50. ##############################################################################
  51. ENV STAGE_DIR=/tmp
  52. RUN mkdir -p ${STAGE_DIR}
  53. ##############################################################################
  54. # Mellanox OFED
  55. ##############################################################################
  56. ENV MLNX_OFED_VERSION=4.6-1.0.1.1
  57. RUN apt-get install -y libnuma-dev
  58. RUN cd ${STAGE_DIR} && \
  59. 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 - && \
  60. cd MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64 && \
  61. ./mlnxofedinstall --user-space-only --without-fw-update --all -q && \
  62. cd ${STAGE_DIR} && \
  63. rm -rf ${STAGE_DIR}/MLNX_OFED_LINUX-${MLNX_OFED_VERSION}-ubuntu18.04-x86_64*
  64. ##############################################################################
  65. # nv_peer_mem
  66. ##############################################################################
  67. ENV NV_PEER_MEM_VERSION=1.1
  68. ENV NV_PEER_MEM_TAG=1.1-0
  69. RUN mkdir -p ${STAGE_DIR} && \
  70. git clone https://github.com/Mellanox/nv_peer_memory.git --branch ${NV_PEER_MEM_TAG} ${STAGE_DIR}/nv_peer_memory && \
  71. cd ${STAGE_DIR}/nv_peer_memory && \
  72. ./build_module.sh && \
  73. cd ${STAGE_DIR} && \
  74. tar xzf ${STAGE_DIR}/nvidia-peer-memory_${NV_PEER_MEM_VERSION}.orig.tar.gz && \
  75. cd ${STAGE_DIR}/nvidia-peer-memory-${NV_PEER_MEM_VERSION} && \
  76. apt-get update && \
  77. apt-get install -y dkms && \
  78. dpkg-buildpackage -us -uc && \
  79. dpkg -i ${STAGE_DIR}/nvidia-peer-memory_${NV_PEER_MEM_TAG}_all.deb
  80. ##############################################################################
  81. ## SSH daemon port inside container cannot conflict with host OS port
  82. ###############################################################################
  83. ENV SSH_PORT=2222
  84. RUN cat /etc/ssh/sshd_config > ${STAGE_DIR}/sshd_config && \
  85. sed "0,/^#Port 22/s//Port ${SSH_PORT}/" ${STAGE_DIR}/sshd_config > /etc/ssh/sshd_config
  86. ##############################################################################
  87. ## Add deepspeed user
  88. ###############################################################################
  89. # Add a deepspeed user with user id 8877
  90. #RUN useradd --create-home --uid 8877 deepspeed
  91. RUN useradd --create-home --uid 1000 --shell /bin/bash deepspeed
  92. RUN usermod -aG sudo deepspeed
  93. RUN echo "deepspeed ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
  94. # # Change to non-root privilege
  95. USER deepspeed
  96. ##############################################################################
  97. # DeepSpeed
  98. ##############################################################################
  99. RUN git clone https://github.com/microsoft/DeepSpeed.git ${STAGE_DIR}/DeepSpeed
  100. RUN cd ${STAGE_DIR}/DeepSpeed && \
  101. git checkout . && \
  102. git checkout master && \
  103. ./install.sh --pip_sudo
  104. RUN rm -rf ${STAGE_DIR}/DeepSpeed
  105. RUN python -c "import deepspeed; print(deepspeed.__version__)"