1+ FROM serving:build_of as build_of
2+ FROM nvcr.io/nvidia/tritonserver:23.10-py3 as full
3+ FROM serving:base
4+
5+ ENV PATH /miniconda3/envs/py310/bin:$PATH
6+ ENV PATH /opt/tritonserver/bin:${PATH}
7+
8+ # Create a user that can be used to run triton as
9+ # non-root. Make sure that this user to given ID 1000. All server
10+ # artifacts copied below are assign to this user.
11+ ENV TRITON_SERVER_USER=triton-server
12+ RUN userdel tensorrt-server > /dev/null 2>&1 || true && if ! id -u $TRITON_SERVER_USER > /dev/null 2>&1 ; then useradd $TRITON_SERVER_USER; fi && [ `id -u $TRITON_SERVER_USER` -eq 1000 ] && [ `id -g $TRITON_SERVER_USER` -eq 1000 ]
13+
14+ # Ensure apt-get won't prompt for selecting options
15+ ENV DEBIAN_FRONTEND=noninteractive
16+
17+ RUN distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g') && \
18+ wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb && \
19+ dpkg -i cuda-keyring_1.0-1_all.deb && \
20+ apt-get update && \
21+ apt-get install -y datacenter-gpu-manager=1:2.4.7 && \
22+ rm cuda-keyring_1.0-1_all.deb
23+
24+ WORKDIR /opt/tritonserver
25+ RUN rm -rf /opt/tritonserver/*
26+ COPY --chown=1000:1000 --from=full /opt/tritonserver/LICENSE .
27+ COPY --chown=1000:1000 --from=full /opt/tritonserver/TRITON_VERSION .
28+ COPY --chown=1000:1000 --from=full /opt/tritonserver/NVIDIA_Deep_Learning_Container_License.pdf .
29+ COPY --chown=1000:1000 --from=full /opt/tritonserver/bin bin/
30+ COPY --chown=1000:1000 --from=full /opt/tritonserver/lib lib/
31+ COPY --chown=1000:1000 --from=full /opt/tritonserver/include include/
32+ COPY --chown=1000:1000 --from=full /opt/tritonserver/backends/python backends/python/
33+
34+ RUN cd /opt && \
35+ git clone https://github.com/Oneflow-Inc/serving.git && \
36+ cd /opt/serving && \
37+ git checkout multi_backends && \
38+ cp /opt/serving/ci/build/oneflow_serving_triton_entrypoint.sh /opt/nvidia/ && \
39+ cp /opt/serving/ci/build/oneflow-serving.py /opt/tritonserver/bin/oneflow-serving && \
40+ mkdir -p /opt/tritonserver/backends/oneflow_python && \
41+ cp /opt/serving/src/triton_python/model.py /opt/tritonserver/backends/oneflow_python/
42+
43+
44+ COPY --chown=1000:1000 --from=build_of /opt/oneflow /opt/oneflow
45+ COPY --chown=1000:1000 --from=build_of /opt/oneflow/build/liboneflow_cpp /opt/liboneflow_cpp
46+
47+ RUN apt-get install -y --no-install-recommends libunwind-dev libarchive-dev && \
48+ rm /opt/oneflow/python/oneflow/core && \
49+ cp -r /opt/oneflow/build/of_proto_python/oneflow/core /opt/oneflow/python/oneflow/ && \
50+ rm -rf /opt/oneflow/build && \
51+ /miniconda3/envs/py310/bin/python -m pip --no-cache-dir install -r /opt/oneflow/dev-requirements.txt && \
52+ /miniconda3/envs/py310/bin/python -m pip --no-cache-dir install typing_extensions && \
53+ echo "export PYTHONPATH=/opt/oneflow/python:$PYTHONPATH" >> ~/.bashrc
54+
55+ RUN cd /opt && \
56+ git clone https://github.com/Oneflow-Inc/oneflow-lite.git && \
57+ cd /opt/oneflow-lite/runtime && \
58+ mkdir build && \
59+ cd /opt/oneflow-lite/runtime/build && \
60+ cmake -DBUILD_X86=ON \
61+ -DBUILD_CUDA=ON .. && \
62+ make -j32 && \
63+ make install
64+
65+ RUN mkdir -p /opt/serving/build && \
66+ cd /opt/serving/build && \
67+ cmake -DCMAKE_PREFIX_PATH=/opt/liboneflow_cpp/share \
68+ -DTRITON_RELATED_REPO_TAG="r23.10" \
69+ -DTRITON_ENABLE_GPU=ON \
70+ -DTHIRD_PARTY_MIRROR=aliyun \
71+ -DBUILD_ONEFLOW_LITE_BACKEND=ON \
72+ -DBUILD_ONEFLOW_BACKEND=ON \
73+ -G Ninja .. && \
74+ ninja -j32 && \
75+ mkdir -p /opt/tritonserver/backends/oneflow && \
76+ mkdir -p /opt/tritonserver/backends/oneflow_lite && \
77+ mv /opt/serving/build/libtriton_oneflow.so /opt/tritonserver/backends/oneflow/ && \
78+ mv /opt/serving/build/libtriton_oneflow_lite.so /opt/tritonserver/backends/oneflow_lite/ && \
79+ mkdir -p /usr/local/nvidia/lib && \
80+ mv /opt/liboneflow_cpp/lib/* /usr/local/nvidia/lib/ && \
81+ cd /opt && \
82+ rm -rf /opt/liboneflow_cpp && \
83+ rm -rf /opt/oneflow_lite && \
84+ rm -rf /opt/serving
85+
86+ ENTRYPOINT ["/opt/nvidia/oneflow_serving_triton_entrypoint.sh"]
0 commit comments