1
+ # syntax=docker/dockerfile:1.7-labs
2
+ ARG RAY_VERSION
3
+ ARG PYTHON_VERSION
4
+ ARG CUDA_SUFFIX
5
+ ARG TARGET_ARCH_SUFFIX
6
+
7
+ FROM rayproject/ray:${RAY_VERSION}-py${PYTHON_VERSION}${CUDA_SUFFIX}${TARGET_ARCH_SUFFIX}
8
+
9
+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
10
+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
11
+ sudo apt-get update && \
12
+ DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata curl vim cmake && \
13
+ sudo rm -rf /var/lib/apt/lists/*
14
+
15
+ # Build mlc-llm from source
16
+ RUN conda create -y -q -n mlc-venv -c conda-forge "cmake>=3.24" rust git python=${PYTHON_VERSION}
17
+ RUN conda run -n mlc-venv bash -c " \
18
+ git clone --recursive https://github.com/mlc-ai/mlc-llm.git && \
19
+ cd mlc-llm/ && \
20
+ mkdir -p build && cd build && \
21
+ echo '
22
+ set(TVM_SOURCE_DIR 3rdparty/tvm)\n \
23
+ set(CMAKE_BUILD_TYPE RelWithDebInfo)\n \
24
+ set(USE_CUDA OFF)\n \
25
+ set(USE_CUTLASS OFF)\n \
26
+ set(USE_CUBLAS OFF)\n \
27
+ set(USE_ROCM OFF)\n \
28
+ set(USE_VULKAN OFF)\n \
29
+ set(USE_METAL OFF)\n \
30
+ set(USE_OPENCL OFF)\n \
31
+ set(USE_OPENCL_ENABLE_HOST_PTR OFF)\n \
32
+ set(USE_FLASHINFER ON)' > config.cmake && \
33
+ cmake .. && cmake --build . --parallel $(nproc) && sudo make install"
34
+
35
+ ARG SYSTEM_PACKAGES
36
+ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
37
+ --mount=type=cache,target=/var/lib/apt,sharing=locked \
38
+ sudo apt-get update && \
39
+ for package in ${SYSTEM_PACKAGES}; do \
40
+ DEBIAN_FRONTEND=noninteractive sudo apt-get install -y $package; \
41
+ done && \
42
+ sudo rm -rf /var/lib/apt/lists/*
43
+
44
+ ARG PYTHON_PACKAGES
45
+ RUN --mount=type=cache,target=/root/.cache/pip,sharing=locked \
46
+ for package in ${PYTHON_PACKAGES}; do \
47
+ pip install $package; \
48
+ done
49
+
50
+ COPY --chown=ray:users . .
51
+
52
+ ARG INSTILL_PYTHON_SDK_PROJECT_NAME
53
+ ARG INSTILL_PYTHON_SDK_VERSION
54
+ RUN --mount=type=cache,target=/root/.cache/pip,sharing=locked \
55
+ if [ ! -z "$INSTILL_PYTHON_SDK_PROJECT_NAME" ]; then \
56
+ pip install -e ${INSTILL_PYTHON_SDK_PROJECT_NAME}; \
57
+ elif [ -f instill_sdk-${INSTILL_PYTHON_SDK_VERSION}dev-py3-none-any.whl ]; then \
58
+ pip install instill_sdk-${INSTILL_PYTHON_SDK_VERSION}dev-py3-none-any.whl; \
59
+ else \
60
+ pip install instill-sdk==${INSTILL_PYTHON_SDK_VERSION}; \
61
+ fi;
62
+
63
+ # The python-sdk is a local module that is not installed in the Ray worker environment.
64
+ # Ray workers need to deserialize model configurations and deployment settings that were
65
+ # created in the runtime environment. These objects may depend on this python-sdk.
66
+ # Instead of installing the SDK in the Ray image, we copy
67
+ # the entire SDK to /home/ray and set PYTHONPATH to allow dynamic importing.
68
+ ARG PYTHONPATH_USER_DEFINED_PROTO
69
+ ENV PYTHONPATH=${PYTHONPATH_USER_DEFINED_PROTO}
0 commit comments