1+ ARG PYTHON_VERSION=312
2+ ARG IMAGE_TAG=9.7-1778488949
3+
4+ FROM registry.access.redhat.com/ubi9/python-${PYTHON_VERSION}:${IMAGE_TAG}
5+
6+ ARG TARGETARCH
7+
8+ LABEL name="ray-ubi9-py312-cu128" \
9+ summary="CUDA 12.8 Python 3.12 image based on UBI9 for Ray" \
10+ description="CUDA 12.8 Python 3.12 image based on UBI9 for Ray" \
11+ io.k8s.display-name="CUDA 12.8 Python 3.12 base image for Ray" \
12+ io.k8s.description="CUDA 12.8 Python 3.12 image based on UBI9 for Ray" \
13+ authoritative-source-url="https://github.com/opendatahub-io/distributed-workloads"
14+
15+ # Install CUDA base from:
16+ # https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.8.0/ubi9/base/Dockerfile
17+ USER 0
18+ WORKDIR /opt/app-root/bin
19+
20+ ENV NVIDIA_REQUIRE_CUDA="cuda>=12.8 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551 brand=unknown,driver>=560,driver<561 brand=grid,driver>=560,driver<561 brand=tesla,driver>=560,driver<561 brand=nvidia,driver>=560,driver<561 brand=quadro,driver>=560,driver<561 brand=quadrortx,driver>=560,driver<561 brand=nvidiartx,driver>=560,driver<561 brand=vapps,driver>=560,driver<561 brand=vpc,driver>=560,driver<561 brand=vcs,driver>=560,driver<561 brand=vws,driver>=560,driver<561 brand=cloudgaming,driver>=560,driver<561 brand=unknown,driver>=565,driver<566 brand=grid,driver>=565,driver<566 brand=tesla,driver>=565,driver<566 brand=nvidia,driver>=565,driver<566 brand=quadro,driver>=565,driver<566 brand=quadrortx,driver>=565,driver<566 brand=nvidiartx,driver>=565,driver<566 brand=vapps,driver>=565,driver<566 brand=vpc,driver>=565,driver<566 brand=vcs,driver>=565,driver<566 brand=vws,driver>=565,driver<566 brand=cloudgaming,driver>=565,driver<566"
21+ ENV NV_CUDA_CUDART_VERSION=12.8.57-1
22+
23+ RUN NVIDIA_GPGKEY_SUM=d0664fbbdb8c32356d45de36c5984617217b2d0bef41b93ccecd326ba3b80c87 && \
24+ if [ "${TARGETARCH}" = "arm64" ]; then NVARCH=sbsa; else NVARCH=x86_64; fi && \
25+ curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel9/${NVARCH}/D42D0685.pub | sed '/^Version/d' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \
26+ echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict -
27+
28+ ENV CUDA_VERSION=12.8.0
29+
30+ COPY cuda.repo-* ./
31+ COPY NGC-DL-CONTAINER-LICENSE /
32+
33+ RUN if [ "${TARGETARCH}" = "arm64" ]; then \
34+ cp cuda.repo-arm64 /etc/yum.repos.d/cuda.repo; \
35+ else \
36+ cp cuda.repo-x86_64 /etc/yum.repos.d/cuda.repo; \
37+ fi
38+
39+ # For libraries in the cuda-compat-* package: https://docs.nvidia.com/cuda/eula/index.html#attachment-a
40+ RUN yum upgrade -y && yum install -y \
41+ cuda-cudart-12-8-${NV_CUDA_CUDART_VERSION} \
42+ cuda-compat-12-8 \
43+ && yum clean all \
44+ && rm -rf /var/cache/yum/*
45+
46+ # nvidia-docker 1.0
47+ RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
48+ echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
49+
50+ ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
51+ ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
52+
53+ # nvidia-container-runtime
54+ ENV NVIDIA_VISIBLE_DEVICES=all
55+ ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
56+
57+ # Install CUDA runtime from:
58+ # https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.8.0/ubi9/runtime/Dockerfile
59+ ENV NV_CUDA_LIB_VERSION=12.8.0-1
60+ ENV NV_NVTX_VERSION=12.8.55-1
61+ ENV NV_LIBNPP_VERSION=12.3.3.65-1
62+ ENV NV_LIBNPP_PACKAGE=libnpp-12-8-${NV_LIBNPP_VERSION}
63+ ENV NV_LIBCUBLAS_VERSION=12.8.3.14-1
64+ ENV NV_LIBNCCL_PACKAGE_NAME=libnccl
65+ ENV NV_LIBNCCL_PACKAGE_VERSION=2.25.1-1
66+ ENV NV_LIBNCCL_VERSION=2.25.1
67+ ENV NCCL_VERSION=2.25.1
68+ ENV NV_LIBNCCL_PACKAGE=${NV_LIBNCCL_PACKAGE_NAME}-${NV_LIBNCCL_PACKAGE_VERSION}+cuda12.8
69+
70+ RUN yum install -y \
71+ cuda-libraries-12-8-${NV_CUDA_LIB_VERSION} \
72+ cuda-nvtx-12-8-${NV_NVTX_VERSION} \
73+ ${NV_LIBNPP_PACKAGE} \
74+ libcublas-12-8-${NV_LIBCUBLAS_VERSION} \
75+ ${NV_LIBNCCL_PACKAGE} \
76+ && yum clean all \
77+ && rm -rf /var/cache/yum/*
78+
79+ # Set this flag so that libraries can find the location of CUDA
80+ ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda
81+
82+ # Install CUDA devel from:
83+ # https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.8.0/ubi9/devel/Dockerfile
84+ ENV NV_CUDA_LIB_VERSION=12.8.0-1
85+ # ARM64 doesn't have nvprof package - set in runtime
86+ ENV NV_NVPROF_VERSION=12.8.57-1
87+ ENV NV_NVPROF_DEV_PACKAGE=cuda-nvprof-12-8-${NV_NVPROF_VERSION}
88+ ENV NV_CUDA_CUDART_DEV_VERSION=12.8.57-1
89+ ENV NV_NVML_DEV_VERSION=12.8.55-1
90+ ENV NV_LIBCUBLAS_DEV_VERSION=12.8.3.14-1
91+ ENV NV_LIBNPP_DEV_VERSION=12.3.3.65-1
92+ ENV NV_LIBNPP_DEV_PACKAGE=libnpp-devel-12-8-${NV_LIBNPP_DEV_VERSION}
93+ ENV NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-devel
94+ ENV NV_LIBNCCL_DEV_PACKAGE_VERSION=2.25.1-1
95+ ENV NCCL_VERSION=2.25.1
96+ ENV NV_LIBNCCL_DEV_PACKAGE=${NV_LIBNCCL_DEV_PACKAGE_NAME}-${NV_LIBNCCL_DEV_PACKAGE_VERSION}+cuda12.8
97+ ENV NV_CUDA_NSIGHT_COMPUTE_VERSION=12.8.0-1
98+ ENV NV_CUDA_NSIGHT_COMPUTE_DEV_PACKAGE=cuda-nsight-compute-12-8-${NV_CUDA_NSIGHT_COMPUTE_VERSION}
99+
100+ RUN yum install -y \
101+ make \
102+ findutils \
103+ cuda-command-line-tools-12-8-${NV_CUDA_LIB_VERSION} \
104+ cuda-libraries-devel-12-8-${NV_CUDA_LIB_VERSION} \
105+ cuda-minimal-build-12-8-${NV_CUDA_LIB_VERSION} \
106+ cuda-cudart-devel-12-8-${NV_CUDA_CUDART_DEV_VERSION} \
107+ cuda-nvml-devel-12-8-${NV_NVML_DEV_VERSION} \
108+ libcublas-devel-12-8-${NV_LIBCUBLAS_DEV_VERSION} \
109+ ${NV_LIBNPP_DEV_PACKAGE} \
110+ ${NV_LIBNCCL_DEV_PACKAGE} \
111+ ${NV_CUDA_NSIGHT_COMPUTE_DEV_PACKAGE} \
112+ && if [ "${TARGETARCH}" != "arm64" ]; then \
113+ yum install -y ${NV_NVPROF_DEV_PACKAGE}; \
114+ fi \
115+ && yum clean all \
116+ && rm -rf /var/cache/yum/*
117+
118+ ENV LIBRARY_PATH=/usr/local/cuda/lib64/stubs
119+
120+ # Install CUDA devel cudnn from:
121+ # https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/12.8.0/ubi9/devel/cudnn/Dockerfile
122+ ENV NV_CUDNN_VERSION=9.7.0.66-1
123+ ENV NV_CUDNN_PACKAGE=libcudnn9-cuda-12-${NV_CUDNN_VERSION}
124+ ENV NV_CUDNN_PACKAGE_DEV=libcudnn9-devel-cuda-12-${NV_CUDNN_VERSION}
125+
126+ LABEL com.nvidia.cudnn.version="${NV_CUDNN_VERSION}"
127+
128+ RUN yum install -y \
129+ ${NV_CUDNN_PACKAGE} \
130+ ${NV_CUDNN_PACKAGE_DEV} \
131+ && yum clean all \
132+ && rm -rf /var/cache/yum/*
133+
134+ # Install Python packages
135+
136+ # Install micropipenv to deploy packages from Pipfile.lock
137+ RUN pip install --no-cache-dir -U "micropipenv[toml]"
138+
139+ # Install Python dependencies from Pipfile.lock file
140+ COPY Pipfile.lock ./
141+
142+ RUN micropipenv install && rm -f ./Pipfile.lock
143+
144+ # Restore user workspace
145+ USER 1001
146+ WORKDIR /opt/app-root/src
0 commit comments