Dockerfile.rocm 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # default base image
  2. ARG BASE_IMAGE="rocm/pytorch:rocm6.0_ubuntu20.04_py3.9_pytorch_2.1.1"
  3. FROM $BASE_IMAGE
  4. RUN echo "Base image is $BASE_IMAGE"
  5. # BASE_IMAGE for ROCm_5.7: "rocm/pytorch:rocm5.7_ubuntu22.04_py3.10_pytorch_2.0.1"
  6. # BASE_IMAGE for ROCm_6.0: "rocm/pytorch:rocm6.0_ubuntu20.04_py3.9_pytorch_2.1.1"
  7. ARG FA_GFX_ARCHS="gfx90a;gfx942;gfx1100"
  8. RUN echo "FA_GFX_ARCHS is $FA_GFX_ARCHS"
  9. ARG FA_BRANCH="3d2b6f5"
  10. RUN echo "FA_BRANCH is $FA_BRANCH"
  11. # whether to build flash-attention
  12. # if 0, will not build flash attention
  13. # this is useful for gfx target where flash-attention is not supported
  14. ARG BUILD_FA="1"
  15. # Install some basic utilities
  16. RUN apt-get update && apt-get install python3 python3-pip -y
  17. # Install some basic utilities
  18. RUN apt-get update && apt-get install -y \
  19. curl \
  20. ca-certificates \
  21. sudo \
  22. git \
  23. bzip2 \
  24. libx11-6 \
  25. build-essential \
  26. wget \
  27. unzip \
  28. nvidia-cuda-toolkit \
  29. tmux \
  30. && rm -rf /var/lib/apt/lists/*
  31. ### Mount Point ###
  32. # When launching the container, mount the code directory to /app
  33. ARG APP_MOUNT=/app
  34. VOLUME [ ${APP_MOUNT} ]
  35. WORKDIR ${APP_MOUNT}
  36. RUN python3 -m pip install --upgrade pip
  37. RUN python3 -m pip install --no-cache-dir fastapi ninja tokenizers pandas
  38. ENV LLVM_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer
  39. ENV PATH=$PATH:/opt/rocm/bin:/libtorch/bin:
  40. ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib/:/libtorch/lib:
  41. ENV CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/libtorch/include:/libtorch/include/torch/csrc/api/include/:/opt/rocm/include/:
  42. # Install ROCm flash-attention
  43. RUN if [ "$BUILD_FA" = "1" ]; then \
  44. mkdir libs \
  45. && cd libs \
  46. && git clone https://github.com/ROCm/flash-attention.git \
  47. && cd flash-attention \
  48. && git checkout ${FA_BRANCH} \
  49. && git submodule update --init \
  50. && export GPU_ARCHS=${FA_GFX_ARCHS} \
  51. && if [ "$BASE_IMAGE" = "rocm/pytorch:rocm5.7_ubuntu22.04_py3.10_pytorch_2.0.1" ]; then \
  52. patch /opt/conda/envs/py_3.10/lib/python3.10/site-packages/torch/utils/hipify/hipify_python.py hipify_patch.patch; fi \
  53. && python3 setup.py install \
  54. && cd ..; \
  55. fi
  56. COPY ./ /app/aphrodite-engine
  57. RUN python3 -m pip install --upgrade pip
  58. RUN python3 -m pip install xformers==0.0.23 --no-deps
  59. # Error related to odd state for numpy 1.20.3 where there is no METADATA etc, but an extra LICENSES_bundled.txt.
  60. # Manually removed it so that later steps of numpy upgrade can continue
  61. RUN if [ "$BASE_IMAGE" = "rocm/pytorch:rocm6.0_ubuntu20.04_py3.9_pytorch_2.1.1" ]; then \
  62. rm -rf /opt/conda/envs/py_3.9/lib/python3.9/site-packages/numpy-1.20.3.dist-info/; fi
  63. RUN cd /app \
  64. && cd aphrodite-engine \
  65. && pip install -U -r requirements-rocm.txt \
  66. && if [ "$BUILD_FA" = "1" ]; then \
  67. bash patch_xformers.rocm.sh; fi \
  68. && patch /opt/rocm/include/hip/amd_detail/amd_hip_bf16.h /app/aphrodite-engine/rocm_patch/rocm_bf16.patch \
  69. && python3 setup.py install \
  70. && cd ..
  71. RUN python3 -m pip install --upgrade pip
  72. RUN python3 -m pip install --no-cache-dir ray[all]
  73. CMD ["/bin/bash"]