@@ -11,6 +11,9 @@ FROM ${DLFW_IMAGE} as dlfw
1111FROM ${BASE_IMAGE} as build
1212
1313# Args
14+ ARG TARGETOS
15+ ARG TARGETARCH
16+
1417ARG DASK_VER=2023.1.1
1518ARG MERLIN_VER=main
1619ARG CORE_VER=main
@@ -38,12 +41,13 @@ ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extra
3841ENV PATH=${CUDA_HOME}/lib64/:${PATH}:${CUDA_HOME}/bin
3942
4043# Set up NVIDIA package repository
41- RUN apt clean && apt update -y --fix-missing && \
44+ RUN ARCH=$([ "${TARGETARCH}" = "arm64" ] && echo "sbsa" || echo "x86_64") && \
45+ apt clean && apt update -y --fix-missing && \
4246 apt install -y --no-install-recommends software-properties-common && \
43- wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 /cuda-ubuntu2204.pin && \
47+ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/${ARCH} /cuda-ubuntu2204.pin && \
4448 mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \
45- apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 /3bf863cc.pub && \
46- add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 / /" && \
49+ apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/${ARCH} /3bf863cc.pub && \
50+ add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/${ARCH} / /" && \
4751 apt install -y --no-install-recommends \
4852 autoconf \
4953 automake \
@@ -95,10 +99,11 @@ RUN pip install --no-cache-dir --upgrade pip; pip install --no-cache-dir "cmake<
9599 cachetools graphviz nvtx scipy "scikit-learn<1.2" \
96100 tritonclient[all] grpcio-channelz fiddle wandb npy-append-array \
97101 git+https://github.com/rapidsai/asvdb.git@main \
98- xgboost==1.6.2 lightgbm treelite==2.4.0 treelite_runtime==2.4.0 \
102+ xgboost==1.6.2 lightgbm \
99103 lightfm implicit \
100104 numba "cuda-python>=11.5,<12.0" fsspec==2022.5.0 llvmlite \
101105 pynvml==11.4.1
106+ RUN pip install --no-cache-dir treelite==2.4.0 treelite_runtime==2.4.0
102107RUN pip install --no-cache-dir numpy==1.22.4 protobuf==3.20.3 onnx onnxruntime pycuda
103108RUN pip install --no-cache-dir dask==${DASK_VER} distributed==${DASK_VER} dask[dataframe]==${DASK_VER}
104109RUN pip install --no-cache-dir onnx_graphsurgeon --index-url https://pypi.ngc.nvidia.com
@@ -113,7 +118,8 @@ COPY --chown=1000:1000 --from=triton /opt/tritonserver/lib lib/
113118COPY --chown=1000:1000 --from=triton /opt/tritonserver/include include/
114119COPY --chown=1000:1000 --from=triton /opt/tritonserver/repoagents/ repoagents/
115120COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/python backends/
116- COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/fil backends/fil/
121+ # NOTE 2023-07: fil-backend is not available on ARM.
122+ COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/fil* backends/
117123COPY --chown=1000:1000 --from=triton /usr/bin/serve /usr/bin/.
118124
119125ENV PATH=/opt/tritonserver/bin:${PATH}:
@@ -139,6 +145,10 @@ CMD ["/bin/bash"]
139145
140146FROM ${BASE_IMAGE} as base
141147
148+ # Args
149+ ARG TARGETOS
150+ ARG TARGETARCH
151+
142152# Envs
143153ENV CUDA_HOME=/usr/local/cuda
144154ENV CUDA_PATH=$CUDA_HOME
@@ -148,12 +158,13 @@ ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extra
148158ENV PATH=${CUDA_HOME}/lib64/:${PATH}:${CUDA_HOME}/bin
149159
150160# Set up NVIDIA package repository
151- RUN apt update -y --fix-missing && \
161+ RUN ARCH=$([ "${TARGETARCH}" = "arm64" ] && echo "sbsa" || echo "x86_64") && \
162+ apt update -y --fix-missing && \
152163 apt install -y --no-install-recommends software-properties-common && \
153- wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 /cuda-ubuntu2204.pin && \
164+ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/${ARCH} /cuda-ubuntu2204.pin && \
154165 mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \
155- apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 /3bf863cc.pub && \
156- add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 / /" && \
166+ apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/${ARCH} /3bf863cc.pub && \
167+ add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/${ARCH} / /" && \
157168 apt install -y --no-install-recommends \
158169 ca-certificates \
159170 clang-format \
@@ -196,9 +207,12 @@ RUN apt update -y --fix-missing && \
196207 # Required to run Hadoop.
197208 openssh-server \
198209 # [ HugeCTR ]
199- libaio-dev \
210+ libaio-dev && \
211+ # NOTE: libnvinfer is installed anyway, just Python bindings are missing on ARM.
212+ if [[ "$TARGETARCH" != "arm64" ]]; then \
200213 # TensorRT dependencies
201- python3-libnvinfer && \
214+ apt install -y --no-install-recommends python3-libnvinfer \
215+ ; fi && \
202216 apt autoremove -y && \
203217 apt clean && \
204218 rm -rf /var/lib/apt/lists/*
@@ -223,16 +237,21 @@ COPY --chown=1000:1000 --from=triton /opt/tritonserver/lib lib/
223237COPY --chown=1000:1000 --from=triton /opt/tritonserver/include include/
224238COPY --chown=1000:1000 --from=triton /opt/tritonserver/repoagents/ repoagents/
225239COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/python backends/python/
226- COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/fil backends/fil/
240+ # NOTE 2023-07: fil-backend is not available on ARM.
241+ COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/fil* backends/
227242COPY --chown=1000:1000 --from=triton /opt/tritonserver/backends/tensorrt backends/tensorrt/
228243COPY --chown=1000:1000 --from=triton /usr/bin/serve /usr/bin/.
229- COPY --chown=1000:1000 --from=triton /usr/lib/x86_64-linux-gnu/libdcgm.so.2 /usr/lib/x86_64-linux-gnu/libdcgm.so.2
230- COPY --chown=1000:1000 --from=triton /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcupti.so.12 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcupti.so.12
244+ COPY --chown=1000:1000 --from=triton /usr/lib/*-linux-gnu/libdcgm.so.2 /tmp
245+ RUN ARCH=$([ "${TARGETARCH}" = "arm64" ] && echo "aarch64" || echo "x86_64") && \
246+ mv /tmp/libdcgm.so.2 /usr/lib/${ARCH}-linux-gnu/libdcgm.so.2 && \
247+ chmod 644 /usr/lib/${ARCH}-linux-gnu/libdcgm.so.2 && \
248+ ln -s libdcgm.so.2 /usr/lib/${ARCH}-linux-gnu/libdcgm.so
231249
232250
233251ENV PATH=/opt/tritonserver/bin:${PATH}:
234252ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/tritonserver/lib
235253
254+ # python --version | sed -e 's/[A-Za-z ]*//g' | awk -F'.' '{print $1"."$2}'
236255ENV PYTHON_VERSION=3.10
237256
238257# Python Packages
@@ -256,8 +275,6 @@ COPY --chown=1000:1000 --from=dlfw /usr/include/arrow /usr/include/arrow/
256275COPY --chown=1000:1000 --from=dlfw /usr/include/cudf /usr/include/cudf/
257276
258277# ptx compiler required by cubinlinker
259- COPY --chown=1000:1000 --from=dlfw /usr/local/cuda-12.1/targets/x86_64-linux/lib/libnvptxcompiler_static.a /usr/local/cuda-12.1/targets/x86_64-linux/lib/libnvptxcompiler_static.a
260- COPY --chown=1000:1000 --from=dlfw /usr/local/cuda-12.1/targets/x86_64-linux/include/nvPTXCompiler.h /usr/local/cuda-12.1/targets/x86_64-linux/include/nvPTXCompiler.h
261278RUN git clone https://github.com/rapidsai/ptxcompiler.git /ptx && cd /ptx/ && python setup.py develop;
262279
263280COPY --chown=1000:1000 --from=dlfw /usr/local/lib/python${PYTHON_VERSION}/dist-packages/rmm /usr/local/lib/python${PYTHON_VERSION}/dist-packages/rmm
0 commit comments