x
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
# AMD R9700 vLLM Toolbox
|
||||
amd-r9700-vllm-toolboxes/
|
||||
+9
-3
@@ -15,7 +15,7 @@ ARG ROCM_MAJOR_VER=7
|
||||
ARG GFX=gfx120X-all
|
||||
RUN set -euo pipefail; \
|
||||
BASE="https://therock-nightly-tarball.s3.amazonaws.com"; \
|
||||
PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}-${ROCM_MAJOR_VER}"; \
|
||||
PREFIX="therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}"; \
|
||||
KEY="$(curl -s "${BASE}?list-type=2&prefix=${PREFIX}" \
|
||||
| tr '<' '\n' \
|
||||
| grep -o "therock-dist-linux-${GFX}-${ROCM_MAJOR_VER}\..*\.tar\.gz" \
|
||||
@@ -64,7 +64,7 @@ RUN python -m pip install \
|
||||
WORKDIR /opt
|
||||
ENV FLASH_ATTENTION_TRITON_AMD_ENABLE="TRUE"
|
||||
|
||||
RUN git clone https://github.com/ROCm/flash-attention.git &&\ \
|
||||
RUN git clone https://github.com/ROCm/flash-attention.git &&\
|
||||
cd flash-attention &&\
|
||||
git checkout main_perf &&\
|
||||
python setup.py install && \
|
||||
@@ -75,16 +75,20 @@ RUN git clone https://github.com/vllm-project/vllm.git /opt/vllm
|
||||
WORKDIR /opt/vllm
|
||||
|
||||
# --- PATCHING ---
|
||||
# vLLM relies on 'amdsmi' to detect AMD GPUs. If it's missing or fails (common in containers),
|
||||
# vLLM falls back to CPU. We patch it to force ROCm detection.
|
||||
RUN echo "import sys, re" > patch_vllm.py && \
|
||||
echo "from pathlib import Path" >> patch_vllm.py && \
|
||||
# Patch 1: __init__.py - Force is_rocm=True and bypass amdsmi checks
|
||||
echo "p = Path('vllm/platforms/__init__.py')" >> patch_vllm.py && \
|
||||
echo "txt = p.read_text()" >> patch_vllm.py && \
|
||||
echo "txt = txt.replace('import amdsmi', '# import amdsmi')" >> patch_vllm.py && \
|
||||
echo "txt = re.sub(r'import is_rocm = .*', 'is_rocm = True', txt)" >> patch_vllm.py && \
|
||||
echo "txt = re.sub(r'is_rocm = .*', 'is_rocm = True', txt)" >> patch_vllm.py && \
|
||||
echo "txt = re.sub(r'if len\(amdsmi\.amdsmi_get_processor_handles\(\)\) > 0:', 'if True:', txt)" >> patch_vllm.py && \
|
||||
echo "txt = txt.replace('amdsmi.amdsmi_init()', 'pass')" >> patch_vllm.py && \
|
||||
echo "txt = txt.replace('amdsmi.amdsmi_shut_down()', 'pass')" >> patch_vllm.py && \
|
||||
echo "p.write_text(txt)" >> patch_vllm.py && \
|
||||
# Patch 2: rocm.py - Mock amdsmi and force device name
|
||||
echo "p = Path('vllm/platforms/rocm.py')" >> patch_vllm.py && \
|
||||
echo "txt = p.read_text()" >> patch_vllm.py && \
|
||||
echo "header = 'import sys\nfrom unittest.mock import MagicMock\nsys.modules[\"amdsmi\"] = MagicMock()\n'" >> patch_vllm.py && \
|
||||
@@ -107,6 +111,8 @@ ENV AMDGPU_TARGETS="gfx1201"
|
||||
ENV MAX_JOBS="4"
|
||||
|
||||
# --- FIX FOR SEGFAULT ---
|
||||
# We force the Host Compiler (CC/CXX) to be the ROCm Clang, not Fedora GCC.
|
||||
# This aligns the ABI of the compiled vLLM extensions with PyTorch.
|
||||
ENV CC="/opt/rocm/llvm/bin/clang"
|
||||
ENV CXX="/opt/rocm/llvm/bin/clang++"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user