2024-05-06 05:48:11 -06:00
|
|
|
FROM lukemathwalker/cargo-chef:latest-rust-1.78 AS chef
|
2024-04-26 07:48:58 -06:00
|
|
|
WORKDIR /usr/src
|
|
|
|
|
|
|
|
ARG CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
|
|
|
|
|
|
|
|
FROM chef as planner
|
|
|
|
COPY Cargo.toml Cargo.toml
|
|
|
|
COPY rust-toolchain.toml rust-toolchain.toml
|
|
|
|
COPY proto proto
|
|
|
|
COPY benchmark benchmark
|
|
|
|
COPY router router
|
|
|
|
COPY launcher launcher
|
|
|
|
RUN cargo chef prepare --recipe-path recipe.json
|
|
|
|
|
|
|
|
FROM chef AS builder
|
|
|
|
|
|
|
|
ARG GIT_SHA
|
|
|
|
ARG DOCKER_LABEL
|
|
|
|
|
|
|
|
RUN PROTOC_ZIP=protoc-21.12-linux-x86_64.zip && \
|
|
|
|
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/$PROTOC_ZIP && \
|
|
|
|
unzip -o $PROTOC_ZIP -d /usr/local bin/protoc && \
|
|
|
|
unzip -o $PROTOC_ZIP -d /usr/local 'include/*' && \
|
|
|
|
rm -f $PROTOC_ZIP
|
|
|
|
|
|
|
|
COPY --from=planner /usr/src/recipe.json recipe.json
|
|
|
|
RUN cargo chef cook --release --recipe-path recipe.json
|
|
|
|
|
|
|
|
COPY Cargo.toml Cargo.toml
|
|
|
|
COPY rust-toolchain.toml rust-toolchain.toml
|
|
|
|
COPY proto proto
|
|
|
|
COPY benchmark benchmark
|
|
|
|
COPY router router
|
|
|
|
COPY launcher launcher
|
|
|
|
RUN cargo build --release
|
|
|
|
|
|
|
|
|
|
|
|
# Text Generation Inference base image for Intel
|
|
|
|
FROM intel/intel-extension-for-pytorch:2.1.10-xpu as base
|
|
|
|
|
|
|
|
USER root
|
|
|
|
# libssl.so.1.1 is not installed on Ubuntu 22.04 by default, install it
|
|
|
|
RUN wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb && \
|
|
|
|
dpkg -i ./libssl1.1_1.1.1f-1ubuntu2_amd64.deb
|
|
|
|
|
|
|
|
|
|
|
|
RUN wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
|
|
|
|
| gpg --dearmor | tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null && echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list
|
|
|
|
|
|
|
|
RUN apt-get update && apt install -y intel-basekit xpu-smi cmake python3-dev ninja-build
|
|
|
|
|
|
|
|
# Text Generation Inference base env
|
|
|
|
ENV HUGGINGFACE_HUB_CACHE=/data \
|
|
|
|
HF_HUB_ENABLE_HF_TRANSFER=1 \
|
|
|
|
PORT=80
|
|
|
|
|
|
|
|
|
|
|
|
WORKDIR /usr/src
|
|
|
|
# Build pytorch and ipex
|
|
|
|
RUN git clone https://github.com/intel/intel-extension-for-pytorch && cd intel-extension-for-pytorch && git checkout -b xpu_main origin/xpu-main
|
|
|
|
RUN git clone https://github.com/pytorch/pytorch.git && cd pytorch && git checkout 209f2fa8ff86652f67d75c2f19bf9cb9942fd018 && git apply /usr/src/intel-extension-for-pytorch/torch_patches/00*.patch
|
|
|
|
|
|
|
|
# Install server
|
|
|
|
COPY proto proto
|
|
|
|
COPY server server
|
|
|
|
COPY server/Makefile server/Makefile
|
|
|
|
RUN cd server && \
|
|
|
|
make gen-server && \
|
|
|
|
pip install -r requirements_cuda.txt && \
|
|
|
|
pip install ".[accelerate, peft, outlines]" --no-cache-dir
|
|
|
|
|
|
|
|
ENV CCL_ROOT=/opt/intel/oneapi/ccl/latest
|
|
|
|
ENV I_MPI_ROOT=/opt/intel/oneapi/mpi/latest
|
|
|
|
ENV FI_PROVIDER_PATH=/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/lib/prov:/usr/lib/x86_64-linux-gnu/libfabric
|
|
|
|
ENV DIAGUTIL_PATH=/opt/intel/oneapi/compiler/latest/etc/compiler/sys_check/sys_check.sh
|
|
|
|
ENV CCL_CONFIGURATION=cpu_gpu_dpcpp
|
|
|
|
ENV MANPATH=/opt/intel/oneapi/mpi/latest/share/man:/opt/intel/oneapi/mpi/latest/share/man:/opt/intel/oneapi/compiler/latest/share/man
|
|
|
|
ENV CMAKE_PREFIX_PATH=/opt/intel/oneapi/mkl/latest/lib/cmake:/opt/intel/oneapi/compiler/latest
|
|
|
|
ENV CMPLR_ROOT=/opt/intel/oneapi/compiler/latest
|
|
|
|
ENV LIBRARY_PATH=/opt/intel/oneapi/mpi/latest/lib:/opt/intel/oneapi/ccl/latest/lib/:/opt/intel/oneapi/mkl/latest/lib/:/opt/intel/oneapi/compiler/latest/lib
|
|
|
|
ENV OCL_ICD_FILENAMES=libintelocl_emu.so:libalteracl.so:/opt/intel/oneapi/compiler/latest/lib/libintelocl.so
|
|
|
|
ENV CLASSPATH=/opt/intel/oneapi/mpi/latest/share/java/mpi.jar:/opt/intel/oneapi/mpi/latest/share/java/mpi.jar
|
|
|
|
ENV LD_LIBRARY_PATH=/opt/intel/oneapi/ccl/latest/lib/:/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/lib:/opt/intel/oneapi/mpi/latest/lib:/opt/intel/oneapi/mkl/latest/lib:/opt/intel/oneapi/compiler/latest/opt/compiler/lib:/opt/intel/oneapi/compiler/latest/lib:/opt/intel/oneapi/lib:/opt/intel/oneapi/lib/intel64:
|
|
|
|
ENV MKLROOT=/opt/intel/oneapi/mkl/latest
|
|
|
|
ENV NLSPATH=/opt/intel/oneapi/mkl/latest/share/locale/%l_%t/%N:/opt/intel/oneapi/compiler/latest/lib/locale/%l_%t/%N
|
|
|
|
ENV PATH=/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/bin:/opt/intel/oneapi/mpi/latest/bin:/opt/intel/oneapi/mpi/latest/opt/mpi/libfabric/bin:/opt/intel/oneapi/mkl/latest/bin/:/opt/intel/oneapi/compiler/latest/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
|
|
ENV CPATH=/opt/intel/oneapi/mpi/latest/include:/opt/intel/oneapi/ccl/latest/include:/opt/intel/oneapi/mkl/latest/include
|
|
|
|
ENV CCL_ZE_IPC_EXCHANGE=sockets
|
|
|
|
|
|
|
|
|
|
|
|
RUN pip uninstall -y torch && cd pytorch && git submodule update --init --recursive && python setup.py install
|
|
|
|
RUN pip uninstall -y intel-extension-for-pytorch && cd intel-extension-for-pytorch && git submodule update --init --recursive && USE_AOT_DEVLIST='pvc' BUILD_SEPARATE_OPS=ON BUILD_WITH_CPU=ON USE_XETLA=ON python setup.py install
|
|
|
|
|
|
|
|
# Install benchmarker
|
|
|
|
COPY --from=builder /usr/src/target/release/text-generation-benchmark /usr/local/bin/text-generation-benchmark
|
|
|
|
# Install router
|
|
|
|
COPY --from=builder /usr/src/target/release/text-generation-router /usr/local/bin/text-generation-router
|
|
|
|
# Install launcher
|
|
|
|
COPY --from=builder /usr/src/target/release/text-generation-launcher /usr/local/bin/text-generation-launcher
|
|
|
|
|
|
|
|
# Final image
|
|
|
|
FROM base
|
|
|
|
|
|
|
|
ENTRYPOINT ["text-generation-launcher"]
|
|
|
|
CMD ["--json-output"]
|