-
-
Notifications
You must be signed in to change notification settings - Fork 11.7k
[CI/Build] Dockerfile.cpu improvements #7298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,4 @@ | ||
| vllm/*.so | ||
| /.venv | ||
| /build | ||
| dist |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,37 +2,49 @@ | |
|
|
||
| FROM ubuntu:22.04 AS cpu-test-1 | ||
|
|
||
| RUN apt-get update -y \ | ||
| && apt-get install -y curl git wget vim numactl gcc-12 g++-12 python3 python3-pip libtcmalloc-minimal4 libnuma-dev \ | ||
| RUN --mount=type=cache,target=/var/cache/apt \ | ||
| apt-get update -y \ | ||
| && apt-get install -y curl ccache git wget vim numactl gcc-12 g++-12 python3 python3-pip libtcmalloc-minimal4 libnuma-dev \ | ||
| && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 10 --slave /usr/bin/g++ g++ /usr/bin/g++-12 | ||
|
|
||
| # https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/performance_tuning/tuning_guide.html | ||
| # intel-openmp provides additional performance improvement vs. openmp | ||
| # tcmalloc provides better memory allocation efficiency, e.g, holding memory in caches to speed up access of commonly-used objects. | ||
| RUN pip install intel-openmp | ||
| RUN --mount=type=cache,target=/root/.cache/pip \ | ||
| pip install intel-openmp | ||
|
|
||
| ENV LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4:/usr/local/lib/libiomp5.so:$LD_PRELOAD" | ||
|
|
||
| RUN echo 'ulimit -c 0' >> ~/.bashrc | ||
|
|
||
| RUN pip install https://intel-extension-for-pytorch.s3.amazonaws.com/ipex_dev/cpu/intel_extension_for_pytorch-2.4.0%2Bgitfbaa4bc-cp310-cp310-linux_x86_64.whl | ||
|
|
||
| RUN pip install --upgrade pip \ | ||
| && pip install wheel packaging ninja "setuptools>=49.4.0" numpy | ||
| ENV PIP_EXTRA_INDEX_URL=https://download.pytorch.org/whl/cpu | ||
| RUN --mount=type=cache,target=/root/.cache/pip \ | ||
| --mount=type=bind,src=requirements-build.txt,target=requirements-build.txt \ | ||
| pip install --upgrade pip && \ | ||
| pip install -r requirements-build.txt | ||
|
|
||
| FROM cpu-test-1 AS build | ||
|
|
||
| COPY ./ /workspace/vllm | ||
|
|
||
| WORKDIR /workspace/vllm | ||
|
|
||
| RUN pip install -v -r requirements-cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu | ||
| RUN --mount=type=cache,target=/root/.cache/pip \ | ||
| --mount=type=bind,src=requirements-common.txt,target=requirements-common.txt \ | ||
| --mount=type=bind,src=requirements-cpu.txt,target=requirements-cpu.txt \ | ||
| pip install -v -r requirements-cpu.txt | ||
|
|
||
| COPY ./ ./ | ||
|
|
||
| # Support for building with non-AVX512 vLLM: docker build --build-arg VLLM_CPU_DISABLE_AVX512="true" ... | ||
| ARG VLLM_CPU_DISABLE_AVX512 | ||
| ENV VLLM_CPU_DISABLE_AVX512=${VLLM_CPU_DISABLE_AVX512} | ||
|
|
||
| RUN VLLM_TARGET_DEVICE=cpu python3 setup.py install | ||
| ENV CCACHE_DIR=/root/.cache/ccache | ||
| RUN --mount=type=cache,target=/root/.cache/pip \ | ||
| --mount=type=cache,target=/root/.cache/ccache \ | ||
| VLLM_TARGET_DEVICE=cpu python3 setup.py bdist_wheel && \ | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A significant issue here is that the |
||
| pip install dist/*.whl | ||
|
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do the files in
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, that's correct, good catch. I did not bother too much about cleaning the image as I think this is clear this is mostly a CI image. If there's an interest in making this production ready, we can set up multi-stage builds and have a final deployment stage without dev/build dependencies. I can remove this if others think this is worth removing in this PR
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This isn't a big overhead, we can remove later |
||
| WORKDIR /workspace/ | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall LGTM, thanks for the improvement!
The only thing I concerned is using
requirements-build.txtwill install torch with many CUDA dependencies, which looks a bit redundant and increases download time.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It will not:
PIP_EXTRA_INDEX_URLis set before the RUN command, resulting in the following dependencies being installed:One possible issue might come up with some package managers such as
uv:export UV_EXTRA_INDEX_URL=https://download.pytorch.org/whl/cpu uv pip install -r requirements-build.txtwill fail due to the way
uvresolves local version identifiers: in order for this to succeed, the+cpuspecifier should be explicitly added (torch==2.40+cpu).Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that this
PIP_EXTRA_INDEXurl also works for PEP517 style builds, so runningwill also install the cpu version when creating the isolated build venv.