From 15fd67245e2492f073d6f3a7b11e1c72bde0ff43 Mon Sep 17 00:00:00 2001 From: Jordi Mas Date: Thu, 13 Nov 2025 06:32:48 +0100 Subject: [PATCH 1/2] cuda --- .dockerignore | 2 +- docker/Dockerfile | 224 ++++++++++++++++++++++++---------------------- 2 files changed, 120 insertions(+), 106 deletions(-) diff --git a/.dockerignore b/.dockerignore index ece8c9427..c1b3896b6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,4 @@ -* +#* !CMakeLists.txt !README.md !cli diff --git a/docker/Dockerfile b/docker/Dockerfile index 18a43ebec..141ea7cd9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,105 +1,119 @@ -FROM nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04 as builder - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - python3-dev \ - python3-pip \ - wget \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -WORKDIR /root - -ENV ONEAPI_VERSION=2025.3 -RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \ - apt-key add *.PUB && \ - rm *.PUB && \ - echo "deb https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - intel-oneapi-mkl-devel-$ONEAPI_VERSION \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -RUN python3 -m pip --no-cache-dir install cmake==3.22.* - -ENV ONEDNN_VERSION=3.1.1 -RUN wget -q https://github.com/oneapi-src/oneDNN/archive/refs/tags/v${ONEDNN_VERSION}.tar.gz && \ - tar xf *.tar.gz && \ - rm *.tar.gz && \ - cd oneDNN-* && \ - cmake -DCMAKE_BUILD_TYPE=Release -DONEDNN_LIBRARY_TYPE=STATIC -DONEDNN_BUILD_EXAMPLES=OFF -DONEDNN_BUILD_TESTS=OFF -DONEDNN_ENABLE_WORKLOAD=INFERENCE -DONEDNN_ENABLE_PRIMITIVE="CONVOLUTION;REORDER" -DONEDNN_BUILD_GRAPH=OFF . && \ - make -j$(nproc) install && \ - cd .. && \ - rm -r oneDNN-* - -ENV OPENMPI_VERSION=4.1.6 -RUN wget -q https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-${OPENMPI_VERSION}.tar.bz2 && \ - tar xf *.tar.bz2 && \ - rm *.tar.bz2 && \ - cd openmpi-* && \ - ./configure && \ - make -j$(nproc) install && \ - cd .. && \ - rm -r openmpi-* - -COPY third_party third_party -COPY cli cli -COPY include include -COPY src src -COPY cmake cmake -COPY python python -COPY CMakeLists.txt . - -ARG CXX_FLAGS -ENV CXX_FLAGS=${CXX_FLAGS:-"-msse4.1"} -ARG CUDA_NVCC_FLAGS -ENV CUDA_NVCC_FLAGS=${CUDA_NVCC_FLAGS:-"-Xfatbin=-compress-all"} -ARG CUDA_ARCH_LIST -ENV CUDA_ARCH_LIST=${CUDA_ARCH_LIST:-"Common"} -ENV CTRANSLATE2_ROOT=/opt/ctranslate2 -ENV LD_LIBRARY_PATH=/usr/local/lib/:${LD_LIBRARY_PATH} - -RUN mkdir build_tmp && \ - cd build_tmp && \ - cmake -DCMAKE_INSTALL_PREFIX=${CTRANSLATE2_ROOT} \ - -DWITH_CUDA=ON -DWITH_CUDNN=ON -DWITH_MKL=ON -DWITH_DNNL=ON -DOPENMP_RUNTIME=COMP \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" \ - -DCUDA_NVCC_FLAGS="${CUDA_NVCC_FLAGS}" -DCUDA_ARCH_LIST="${CUDA_ARCH_LIST}" -DWITH_TENSOR_PARALLEL=ON .. && \ - VERBOSE=1 make -j$(nproc) install - -ENV LANG=en_US.UTF-8 -COPY README.md . - -RUN cd python && \ - python3 -m pip --no-cache-dir install -r install_requirements.txt && \ - python3 setup.py bdist_wheel --dist-dir $CTRANSLATE2_ROOT - -FROM nvidia/cuda:12.2.2-base-ubuntu22.04 - -# We remove the cuda-compat package because it conflicts with the CUDA Enhanced Compatibility. -# See e.g. https://github.com/NVIDIA/nvidia-docker/issues/1515 -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - libcublas-12-2 \ - libcudnn8=8.9.7.29-1+cuda12.2 \ - libnccl2=2.19.3-1+cuda12.2 \ - libopenmpi3=4.1.2-2ubuntu1 \ - openmpi-bin \ - libgomp1 \ - python3-pip \ - && \ - apt-get purge -y cuda-compat-12-2 && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -ENV CTRANSLATE2_ROOT=/opt/ctranslate2 -ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CTRANSLATE2_ROOT/lib - -COPY --from=builder $CTRANSLATE2_ROOT $CTRANSLATE2_ROOT -RUN python3 -m pip --no-cache-dir install $CTRANSLATE2_ROOT/*.whl && \ - rm $CTRANSLATE2_ROOT/*.whl - -ENTRYPOINT ["/opt/ctranslate2/bin/ct2-translator"] + FROM nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04 as builder + + RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + python3-dev \ + python3-pip \ + wget \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + WORKDIR /root + + ENV ONEAPI_VERSION=2025.3 + RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \ + apt-key add *.PUB && \ + rm *.PUB && \ + echo "deb https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + intel-oneapi-mkl-devel-$ONEAPI_VERSION \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + RUN python3 -m pip --no-cache-dir install cmake==3.22.* + + ENV ONEDNN_VERSION=3.1.1 + RUN wget -q https://github.com/oneapi-src/oneDNN/archive/refs/tags/v${ONEDNN_VERSION}.tar.gz && \ + tar xf *.tar.gz && \ + rm *.tar.gz && \ + cd oneDNN-* && \ + cmake -DCMAKE_BUILD_TYPE=Release -DONEDNN_LIBRARY_TYPE=STATIC -DONEDNN_BUILD_EXAMPLES=OFF -DONEDNN_BUILD_TESTS=OFF -DONEDNN_ENABLE_WORKLOAD=INFERENCE -DONEDNN_ENABLE_PRIMITIVE="CONVOLUTION;REORDER" -DONEDNN_BUILD_GRAPH=OFF . && \ + make -j$(nproc) install && \ + cd .. && \ + rm -r oneDNN-* + + ENV OPENMPI_VERSION=4.1.6 + RUN wget -q https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-${OPENMPI_VERSION}.tar.bz2 && \ + tar xf *.tar.bz2 && \ + rm *.tar.bz2 && \ + cd openmpi-* && \ + ./configure && \ + make -j$(nproc) install && \ + cd .. && \ + rm -r openmpi-* + + COPY third_party third_party + COPY cli cli + COPY include include + COPY src src + COPY cmake cmake + COPY python python + COPY CMakeLists.txt . + + ARG CXX_FLAGS + ENV CXX_FLAGS=${CXX_FLAGS:-"-msse4.1"} + ARG CUDA_NVCC_FLAGS + ENV CUDA_NVCC_FLAGS=${CUDA_NVCC_FLAGS:-"-Xfatbin=-compress-all"} + ARG CUDA_ARCH_LIST + ENV CUDA_ARCH_LIST=${CUDA_ARCH_LIST:-"Common"} + ENV CTRANSLATE2_ROOT=/opt/ctranslate2 + ENV LD_LIBRARY_PATH=/usr/local/lib/:${LD_LIBRARY_PATH} + + RUN mkdir build_tmp && \ + cd build_tmp && \ + cmake -DCMAKE_INSTALL_PREFIX=${CTRANSLATE2_ROOT} \ + -DWITH_CUDA=ON -DWITH_CUDNN=ON -DWITH_MKL=ON -DWITH_DNNL=ON -DOPENMP_RUNTIME=COMP \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" \ + -DCUDA_NVCC_FLAGS="${CUDA_NVCC_FLAGS}" -DCUDA_ARCH_LIST="${CUDA_ARCH_LIST}" -DWITH_TENSOR_PARALLEL=ON .. && \ + VERBOSE=1 make -j$(nproc) install + + ENV LANG=en_US.UTF-8 + COPY README.md . + + RUN cd python && \ + python3 -m pip --no-cache-dir install -r install_requirements.txt && \ + python3 setup.py bdist_wheel --dist-dir $CTRANSLATE2_ROOT + + FROM nvidia/cuda:12.2.2-base-ubuntu22.04 + + # We remove the cuda-compat package because it conflicts with the CUDA Enhanced Compatibility. + # See e.g. https://github.com/NVIDIA/nvidia-docker/issues/1515 + +# RUN apt-get update && \ + # apt-get install -y --no-install-recommends \ +# nvidia-utils-535 + + +# RUN apt-get update && \ +# apt-get install -y --no-install-recommends \ +# nvidia-utils-535 \ +# libcublas-12-2 \ +# libcudnn8=8.9.7.29-1+cuda12.2 \ +# libnccl2=2.19.3-1+cuda12.2 \ +# libopenmpi3=4.1.2-2ubuntu1 \ +# openmpi-bin \ +# libgomp1 \ +# python3-pip \ +# && \ +# apt-get purge -y cuda-compat-12-2 && \ +# apt-get clean && \ +# rm -rf /var/lib/apt/lists/* + + ENV CTRANSLATE2_ROOT=/opt/ctranslate2 + ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CTRANSLATE2_ROOT/lib + + #COPY --from=builder $CTRANSLATE2_ROOT $CTRANSLATE2_ROOT +# RUN python3 -m pip --no-cache-dir install $CTRANSLATE2_ROOT/*.whl && \ +# rm $CTRANSLATE2_ROOT/*.whl + + #ENTRYPOINT ["/opt/ctranslate2/bin/ct2-translator"] + + COPY inaguracio2011.mp3 $CTRANSLATE2_ROOT + RUN pip install whisper-ctranslate2 + WORKDIR $CTRANSLATE2_ROOT + ENTRYPOINT bash + #ENTRYPOINT ["bash", "-c", "whisper-ctranslate2 inaguracio2011.mp3 --device=cuda"] + From b7616afa92df3d186aaa3c5576106a382bb3f1ea Mon Sep 17 00:00:00 2001 From: Jordi Mas Date: Thu, 13 Nov 2025 07:50:23 +0100 Subject: [PATCH 2/2] Fix --- .dockerignore | 2 +- docker/Dockerfile | 224 ++++++++++++++++++++++------------------------ 2 files changed, 106 insertions(+), 120 deletions(-) diff --git a/.dockerignore b/.dockerignore index c1b3896b6..ece8c9427 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,4 @@ -#* +* !CMakeLists.txt !README.md !cli diff --git a/docker/Dockerfile b/docker/Dockerfile index 141ea7cd9..0573692c7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,119 +1,105 @@ - FROM nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04 as builder - - RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - python3-dev \ - python3-pip \ - wget \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - - WORKDIR /root - - ENV ONEAPI_VERSION=2025.3 - RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \ - apt-key add *.PUB && \ - rm *.PUB && \ - echo "deb https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - intel-oneapi-mkl-devel-$ONEAPI_VERSION \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - - RUN python3 -m pip --no-cache-dir install cmake==3.22.* - - ENV ONEDNN_VERSION=3.1.1 - RUN wget -q https://github.com/oneapi-src/oneDNN/archive/refs/tags/v${ONEDNN_VERSION}.tar.gz && \ - tar xf *.tar.gz && \ - rm *.tar.gz && \ - cd oneDNN-* && \ - cmake -DCMAKE_BUILD_TYPE=Release -DONEDNN_LIBRARY_TYPE=STATIC -DONEDNN_BUILD_EXAMPLES=OFF -DONEDNN_BUILD_TESTS=OFF -DONEDNN_ENABLE_WORKLOAD=INFERENCE -DONEDNN_ENABLE_PRIMITIVE="CONVOLUTION;REORDER" -DONEDNN_BUILD_GRAPH=OFF . && \ - make -j$(nproc) install && \ - cd .. && \ - rm -r oneDNN-* - - ENV OPENMPI_VERSION=4.1.6 - RUN wget -q https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-${OPENMPI_VERSION}.tar.bz2 && \ - tar xf *.tar.bz2 && \ - rm *.tar.bz2 && \ - cd openmpi-* && \ - ./configure && \ - make -j$(nproc) install && \ - cd .. && \ - rm -r openmpi-* - - COPY third_party third_party - COPY cli cli - COPY include include - COPY src src - COPY cmake cmake - COPY python python - COPY CMakeLists.txt . - - ARG CXX_FLAGS - ENV CXX_FLAGS=${CXX_FLAGS:-"-msse4.1"} - ARG CUDA_NVCC_FLAGS - ENV CUDA_NVCC_FLAGS=${CUDA_NVCC_FLAGS:-"-Xfatbin=-compress-all"} - ARG CUDA_ARCH_LIST - ENV CUDA_ARCH_LIST=${CUDA_ARCH_LIST:-"Common"} - ENV CTRANSLATE2_ROOT=/opt/ctranslate2 - ENV LD_LIBRARY_PATH=/usr/local/lib/:${LD_LIBRARY_PATH} - - RUN mkdir build_tmp && \ - cd build_tmp && \ - cmake -DCMAKE_INSTALL_PREFIX=${CTRANSLATE2_ROOT} \ - -DWITH_CUDA=ON -DWITH_CUDNN=ON -DWITH_MKL=ON -DWITH_DNNL=ON -DOPENMP_RUNTIME=COMP \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" \ - -DCUDA_NVCC_FLAGS="${CUDA_NVCC_FLAGS}" -DCUDA_ARCH_LIST="${CUDA_ARCH_LIST}" -DWITH_TENSOR_PARALLEL=ON .. && \ - VERBOSE=1 make -j$(nproc) install - - ENV LANG=en_US.UTF-8 - COPY README.md . - - RUN cd python && \ - python3 -m pip --no-cache-dir install -r install_requirements.txt && \ - python3 setup.py bdist_wheel --dist-dir $CTRANSLATE2_ROOT - - FROM nvidia/cuda:12.2.2-base-ubuntu22.04 - - # We remove the cuda-compat package because it conflicts with the CUDA Enhanced Compatibility. - # See e.g. https://github.com/NVIDIA/nvidia-docker/issues/1515 - -# RUN apt-get update && \ - # apt-get install -y --no-install-recommends \ -# nvidia-utils-535 - - -# RUN apt-get update && \ -# apt-get install -y --no-install-recommends \ -# nvidia-utils-535 \ -# libcublas-12-2 \ -# libcudnn8=8.9.7.29-1+cuda12.2 \ -# libnccl2=2.19.3-1+cuda12.2 \ -# libopenmpi3=4.1.2-2ubuntu1 \ -# openmpi-bin \ -# libgomp1 \ -# python3-pip \ -# && \ -# apt-get purge -y cuda-compat-12-2 && \ -# apt-get clean && \ -# rm -rf /var/lib/apt/lists/* - - ENV CTRANSLATE2_ROOT=/opt/ctranslate2 - ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CTRANSLATE2_ROOT/lib - - #COPY --from=builder $CTRANSLATE2_ROOT $CTRANSLATE2_ROOT -# RUN python3 -m pip --no-cache-dir install $CTRANSLATE2_ROOT/*.whl && \ -# rm $CTRANSLATE2_ROOT/*.whl - - #ENTRYPOINT ["/opt/ctranslate2/bin/ct2-translator"] - - COPY inaguracio2011.mp3 $CTRANSLATE2_ROOT - RUN pip install whisper-ctranslate2 - WORKDIR $CTRANSLATE2_ROOT - ENTRYPOINT bash - #ENTRYPOINT ["bash", "-c", "whisper-ctranslate2 inaguracio2011.mp3 --device=cuda"] - +FROM nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 as builder + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + python3-dev \ + python3-pip \ + wget \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /root + +ENV ONEAPI_VERSION=2025.3 +RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && \ + apt-key add *.PUB && \ + rm *.PUB && \ + echo "deb https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + intel-oneapi-mkl-devel-$ONEAPI_VERSION \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN python3 -m pip --no-cache-dir install cmake==3.22.* + +ENV ONEDNN_VERSION=3.1.1 +RUN wget -q https://github.com/oneapi-src/oneDNN/archive/refs/tags/v${ONEDNN_VERSION}.tar.gz && \ + tar xf *.tar.gz && \ + rm *.tar.gz && \ + cd oneDNN-* && \ + cmake -DCMAKE_BUILD_TYPE=Release -DONEDNN_LIBRARY_TYPE=STATIC -DONEDNN_BUILD_EXAMPLES=OFF -DONEDNN_BUILD_TESTS=OFF -DONEDNN_ENABLE_WORKLOAD=INFERENCE -DONEDNN_ENABLE_PRIMITIVE="CONVOLUTION;REORDER" -DONEDNN_BUILD_GRAPH=OFF . && \ + make -j$(nproc) install && \ + cd .. && \ + rm -r oneDNN-* + +ENV OPENMPI_VERSION=4.1.6 +RUN wget -q https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-${OPENMPI_VERSION}.tar.bz2 && \ + tar xf *.tar.bz2 && \ + rm *.tar.bz2 && \ + cd openmpi-* && \ + ./configure && \ + make -j$(nproc) install && \ + cd .. && \ + rm -r openmpi-* + +COPY third_party third_party +COPY cli cli +COPY include include +COPY src src +COPY cmake cmake +COPY python python +COPY CMakeLists.txt . + +ARG CXX_FLAGS +ENV CXX_FLAGS=${CXX_FLAGS:-"-msse4.1"} +ARG CUDA_NVCC_FLAGS +ENV CUDA_NVCC_FLAGS=${CUDA_NVCC_FLAGS:-"-Xfatbin=-compress-all"} +ARG CUDA_ARCH_LIST +ENV CUDA_ARCH_LIST=${CUDA_ARCH_LIST:-"Common"} +ENV CTRANSLATE2_ROOT=/opt/ctranslate2 +ENV LD_LIBRARY_PATH=/usr/local/lib/:${LD_LIBRARY_PATH} + +RUN mkdir build_tmp && \ + cd build_tmp && \ + cmake -DCMAKE_INSTALL_PREFIX=${CTRANSLATE2_ROOT} \ + -DWITH_CUDA=ON -DWITH_CUDNN=ON -DWITH_MKL=ON -DWITH_DNNL=ON -DOPENMP_RUNTIME=COMP \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CXX_FLAGS}" \ + -DCUDA_NVCC_FLAGS="${CUDA_NVCC_FLAGS}" -DCUDA_ARCH_LIST="${CUDA_ARCH_LIST}" -DWITH_TENSOR_PARALLEL=ON .. && \ + VERBOSE=1 make -j$(nproc) install + +ENV LANG=en_US.UTF-8 +COPY README.md . + +RUN cd python && \ + python3 -m pip --no-cache-dir install -r install_requirements.txt && \ + python3 setup.py bdist_wheel --dist-dir $CTRANSLATE2_ROOT + +FROM nvidia/cuda:12.4.1-base-ubuntu22.04 + +# We remove the cuda-compat package because it conflicts with the CUDA Enhanced Compatibility. +# See e.g. https://github.com/NVIDIA/nvidia-docker/issues/1515 +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + libcublas-12-4 \ + libcudnn9-cuda-12 \ + libnccl2 \ + libopenmpi3=4.1.2-2ubuntu1 \ + openmpi-bin \ + libgomp1 \ + python3-pip \ + && \ + apt-get purge -y cuda-compat-12-4 && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV CTRANSLATE2_ROOT=/opt/ctranslate2 +ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CTRANSLATE2_ROOT/lib + +COPY --from=builder $CTRANSLATE2_ROOT $CTRANSLATE2_ROOT +RUN python3 -m pip --no-cache-dir install $CTRANSLATE2_ROOT/*.whl && \ + rm $CTRANSLATE2_ROOT/*.whl + +ENTRYPOINT ["/opt/ctranslate2/bin/ct2-translator"]