Dockerfile_preprocessing 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # Copyright (c) 2021 NVIDIA CORPORATION. All rights reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. ARG CUDF_VERSION=0.18
  15. ARG RAPIDS_VERSION=0.4.0
  16. ARG SPARK_VERSION=3.0.1
  17. ARG DGX_VERSION=DGX-2
  18. ARG NUMBER_OF_GPUS
  19. ARG FROM_IMAGE_NAME=nvcr.io/nvidia/nvtabular:0.3
  20. FROM ${FROM_IMAGE_NAME} AS base
  21. ARG CUDF_VERSION
  22. ARG RAPIDS_VERSION
  23. ARG SPARK_VERSION
  24. ARG DGX_VERSION
  25. ARG NUMBER_OF_GPUS
  26. RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
  27. RUN apt update && \
  28. apt install -y openjdk-8-jdk && \
  29. apt install -y curl
  30. RUN curl https://archive.apache.org/dist/spark/spark-$SPARK_VERSION/spark-$SPARK_VERSION-bin-hadoop2.7.tgz -o /opt/spark.tgz && \
  31. tar zxf /opt/spark.tgz -C /opt/ && \
  32. mv /opt/spark-$SPARK_VERSION-bin-hadoop2.7 /opt/spark && \
  33. rm /opt/spark.tgz && \
  34. curl https://repo1.maven.org/maven2/ai/rapids/cudf/0.18.1/cudf-0.18.1-cuda11.jar -o /opt/cudf.jar && \
  35. curl https://repo1.maven.org/maven2/com/nvidia/rapids-4-spark_2.12/0.4.0/rapids-4-spark_2.12-0.4.0.jar -o /opt/rapids-4-spark.jar && \
  36. apt install -y git
  37. WORKDIR /workspace/dlrm
  38. COPY . .
  39. RUN mv /opt/cudf.jar /opt/spark/jars && \
  40. mv /opt/rapids-4-spark.jar /opt/spark/jars/ && \
  41. mv /workspace/dlrm/preproc/gpu/get_gpu_resources.sh /opt/spark/conf/ && \
  42. mv /workspace/dlrm/preproc/gpu/spark-defaults.conf /opt/spark/conf/spark-defaults.conf && \
  43. rm -rf /workspace/dlrm/preproc/gpu
  44. RUN chmod +x /workspace/dlrm/preproc/run_spark_gpu_$DGX_VERSION.sh
  45. RUN chmod +x /opt/spark/conf/get_gpu_resources.sh
  46. RUN chmod +x /workspace/dlrm/preproc/run_NVTabular.sh
  47. ENV SPARK_HOME /opt/spark
  48. ENV PYTHONPATH $SPARK_HOME/python
  49. ENV PYSPARK_PYTHON /conda/envs/rapids/bin/python
  50. ENV PYSPARK_DRIVER_PYTHON /conda/envs/rapids/bin/python
  51. ENV DGX_VERSION $DGX_VERSION
  52. ENV SPARK_VERSION $SPARK_VERSION
  53. SHELL ["/bin/bash", "-c"]
  54. RUN source activate rapids && \
  55. pip install --upgrade pip && \
  56. pip install --no-cache-dir -r requirements_preprocessing.txt
  57. FROM base AS image-machine-DGX-2
  58. ARG NUMBER_OF_GPUS
  59. ENV NUMBER_OF_GPUS ${NUMBER_OF_GPUS:-16}
  60. FROM base AS image-machine-DGX-A100
  61. ENV NUMBER_OF_GPUS 8
  62. FROM image-machine-${DGX_VERSION} AS final
  63. RUN echo "spark.worker.resource.gpu.amount ${NUMBER_OF_GPUS}" >> /opt/spark/conf/spark-defaults.conf