-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathDockerfile.rocm.ubi
More file actions
122 lines (100 loc) · 3.95 KB
/
Copy pathDockerfile.rocm.ubi
File metadata and controls
122 lines (100 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
## Global Args ##################################################################
ARG BASE_UBI_IMAGE_TAG
ARG PYTHON_VERSION
FROM registry.access.redhat.com/ubi9/ubi-minimal:${BASE_UBI_IMAGE_TAG} AS base
ARG PYTHON_VERSION
ENV VIRTUAL_ENV=/opt/vllm
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN --mount=type=cache,target=/root/.cache/pip \
microdnf -y update && \
microdnf install -y --setopt=install_weak_deps=0 --nodocs \
python${PYTHON_VERSION}-devel \
python${PYTHON_VERSION}-pip \
python${PYTHON_VERSION}-wheel && \
python${PYTHON_VERSION} -m venv $VIRTUAL_ENV && \
pip install -U pip wheel setuptools uv && \
microdnf clean all
FROM base AS rocm_base
ARG ROCM_VERSION
ARG AMDGPU_VERSION=${ROCM_VERSION}
ARG PYTHON_VERSION
ARG BASE_UBI_IMAGE_TAG
RUN printf "[amdgpu]\n\
name=amdgpu\n\
baseurl=https://repo.radeon.com/amdgpu/${AMDGPU_VERSION}/rhel/${BASE_UBI_IMAGE_TAG/-*/}/main/x86_64/\n\
enabled=1\n\
priority=50\n\
gpgcheck=1\n\
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key\n\
[ROCm-${ROCM_VERSION}]\n\
name=ROCm${ROCM_VERSION}\n\
baseurl=https://repo.radeon.com/rocm/rhel9/${ROCM_VERSION}/main\n\
enabled=1\n\
priority=50\n\
gpgcheck=1\n\
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key" > /etc/yum.repos.d/amdgpu.repo
RUN --mount=type=cache,target=/root/.cache/uv \
microdnf install -y --nodocs \
# aiter calls `hipconfig` on import, which requires hip-devel. It also requires `git` until https://github.com/ROCm/aiter/pull/2226 is merged
git \
amd-smi-lib \
hipcc \
hip-devel \
# these -devel packages are required for aiter JIT
hipsparse-devel rocthrust-devel hipblas-devel hipblaslt-devel hipsolver-devel \
# Install libdrm-amdgpu to avoid errors when retrieving device information (amdgpu.ids: No such file or directory)
libdrm-amdgpu \
&& \
microdnf clean all
ENV PATH=/opt/rocm/bin:$PATH \
ROCM_HOME=/opt/rocm \
ROCM_PATH=/opt/rocm
##################################################################################################
FROM rocm_base AS vllm-openai
ARG PYTHON_VERSION
WORKDIR /workspace
ENV VIRTUAL_ENV=/opt/vllm
ENV PATH=$VIRTUAL_ENV/bin:$PATH
# Required for triton (gcc, rsync), audio multimodal support (libsndfile), aiter (g++)
RUN microdnf install -y --setopt=install_weak_deps=0 --nodocs \
gcc g++ \
rsync libsndfile && \
microdnf clean all
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,src=payload,target=/workspace/payload \
./payload/run.sh
ENV HF_HUB_OFFLINE=1 \
VLLM_USAGE_STATS_SERVER=https://console.redhat.com/api/rhaiis-stats \
VLLM_USAGE_SOURCE=quay-docker-image \
VLLM_WORKER_MULTIPROC_METHOD=spawn \
# Silences the HF Tokenizers warning
TOKENIZERS_PARALLELISM=false \
RAY_EXPERIMENTAL_NOSET_ROCR_VISIBLE_DEVICES=1 \
VLLM_ROCM_USE_AITER=1 \
HIP_FORCE_DEV_KERNARG=1 \
OUTLINES_CACHE_DIR=/tmp/outlines \
NUMBA_CACHE_DIR=/tmp/numba \
TRITON_CACHE_DIR=/tmp/triton \
VLLM_CACHE_ROOT=/tmp/vllm \
MIOPEN_CACHE_DIR=/tmp/miopen
# setup non-root user for OpenShift
RUN umask 002 && \
useradd --uid 2000 --gid 0 vllm && \
mkdir -p /licenses /home/vllm && \
chmod g+rwx /home/vllm
# pre-download tiktoken/harmony tokenizer for disconnected environments
# openai_harmony uses TIKTOKEN_RS_CACHE_DIR
# while the python tiktoken module uses TIKTOKEN_CACHE_DIR
ENV TIKTOKEN_CACHE_DIR=/home/vllm/.cache/tiktoken
ENV TIKTOKEN_RS_CACHE_DIR=${TIKTOKEN_CACHE_DIR}
RUN --mount=type=bind,src=tools/predownload_tiktoken_tokenizers.py,target=predownload_tiktoken_tokenizers.py \
python predownload_tiktoken_tokenizers.py && \
chmod g+rwx "${TIKTOKEN_CACHE_DIR}" && \
chown -R vllm:0 $(dirname ${TIKTOKEN_CACHE_DIR})
COPY LICENSE /licenses/vllm.md
COPY examples/*.jinja /app/data/template/
RUN mkdir -p /opt/app-root && \
ln -s /app/data/template /opt/app-root/template
USER 2000
WORKDIR /home/vllm
ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"]