diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index cf51ba25..00000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM mcr.microsoft.com/devcontainers/cpp:1-debian-11 - -ARG REINSTALL_CMAKE_VERSION_FROM_SOURCE="none" - -# Optionally install the cmake for vcpkg -COPY ./reinstall-cmake.sh /tmp/ - -RUN if [ "${REINSTALL_CMAKE_VERSION_FROM_SOURCE}" != "none" ]; then \ - chmod +x /tmp/reinstall-cmake.sh && /tmp/reinstall-cmake.sh ${REINSTALL_CMAKE_VERSION_FROM_SOURCE}; \ - fi \ - && rm -f /tmp/reinstall-cmake.sh - -# [Optional] Uncomment this section to install additional vcpkg ports. -# RUN su vscode -c "${VCPKG_ROOT}/vcpkg install " - -# [Optional] Uncomment this section to install additional packages. -# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ -# && apt-get -y install --no-install-recommends diff --git a/.devcontainer/Dockerfile.trtllm b/.devcontainer/Dockerfile.trtllm index e69de29b..abe81450 100644 --- a/.devcontainer/Dockerfile.trtllm +++ b/.devcontainer/Dockerfile.trtllm @@ -0,0 +1,70 @@ +ARG CUDA_ARCH_LIST="75-real;80-real;86-real;89-real;90-real" +ARG OMPI_VERSION="4.1.7rc1" + +# Build dependencies resolver stage +FROM lukemathwalker/cargo-chef:latest AS chef +WORKDIR /usr/src/text-generation-inference/backends/trtllm + +FROM chef AS planner +COPY . . +RUN cargo chef prepare --recipe-path recipe.json + +# CUDA dependent dependencies resolver stage +FROM nvidia/cuda:12.6.1-cudnn-devel-ubuntu24.04 AS cuda-builder + +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt update && apt install -y \ + build-essential \ + cmake \ + curl \ + gcc \ + g++ \ + git \ + git-lfs \ + libssl-dev \ + libucx-dev \ + ninja-build \ + pkg-config \ + pipx \ + python3 \ + python3-dev \ + python3-setuptools \ + tar \ + wget && \ + pipx ensurepath + +ENV TGI_INSTALL_PREFIX=/usr/local/tgi +ENV TENSORRT_INSTALL_PREFIX=/usr/local/tensorrt + +# Install OpenMPI +FROM cuda-builder AS mpi-builder +ARG OMPI_VERSION + +ENV OMPI_TARBALL_FILENAME="openmpi-$OMPI_VERSION.tar.bz2" +RUN wget "https://download.open-mpi.org/release/open-mpi/v4.1/$OMPI_TARBALL_FILENAME" -P /opt/src && \ + mkdir /usr/src/mpi && \ + tar -xf "/opt/src/$OMPI_TARBALL_FILENAME" -C /usr/src/mpi --strip-components=1 && \ + cd /usr/src/mpi && \ + ./configure --prefix=/usr/local/mpi --with-cuda=/usr/local/cuda --with-slurm && \ + make -j all && \ + make install && \ + rm -rf "/opt/src/$OMPI_TARBALL_FILENAME" + +# Install TensorRT +FROM cuda-builder AS trt-builder +COPY backends/trtllm/scripts/install_tensorrt.sh /opt/install_tensorrt.sh +RUN chmod +x /opt/install_tensorrt.sh && \ + /opt/install_tensorrt.sh + +# Prepare build Backend +FROM cuda-builder AS tgi-builder +WORKDIR /usr/src/text-generation-inference + +# Install Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y && \ + chmod -R a+w /root/.rustup && \ + chmod -R a+w /root/.cargo + +ENV PATH="/root/.cargo/bin:$PATH" +RUN cargo install cargo-chef \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 01d23f67..f0b9de32 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,10 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/cpp { "name": "CUDA", - "image": "nvidia/cuda:12.6.0-devel-ubuntu24.04", +// "image": "nvidia/cuda:12.6.0-devel-ubuntu24.04", + "build": { + "dockerfile": "Dockerfile.trtllm" + }, // "runArgs": [ // "--gpus=all" // ], diff --git a/.devcontainer/install-dev-tools.sh b/.devcontainer/install-dev-tools.sh deleted file mode 100644 index 5547d523..00000000 --- a/.devcontainer/install-dev-tools.sh +++ /dev/null @@ -1,20 +0,0 @@ -# update system -apt-get update -apt-get upgrade -y -# install Linux tools and Python 3 -apt-get install software-properties-common wget curl git build-essential \ - python3-dev python3-pip python3-wheel python3-setuptools -y -# install Python packages -python3 -m pip install --upgrade pip -pip3 install --user -r .devcontainer/requirements.txt -# update CUDA Linux GPG repository key -wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb -dpkg -i cuda-keyring_1.0-1_all.deb -rm cuda-keyring_1.0-1_all.deb -# install recommended packages -apt-get install zlib1g g++ freeglut3-dev \ - libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev libfreeimage-dev -y -# clean up -pip3 cache purge -apt-get autoremove -y -apt-get clean \ No newline at end of file