mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2026-04-07 17:47:06 +08:00
Signed-off-by: Nick Hill <nhill@redhat.com> Signed-off-by: Lucas Kabela <lucaskabela@meta.com> Signed-off-by: Max de Bayser <mbayser@br.ibm.com> Signed-off-by: Andrew Sansom <andrew@protopia.ai> Signed-off-by: Boyuan Feng <boyuan@meta.com> Signed-off-by: Boyuan Feng <fby.1994@gmail.com> Signed-off-by: boyuanfeng <boyuan@meta.com> Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com> Signed-off-by: JartX <sagformas@epdcenter.es> Signed-off-by: Chendi Xue <Chendi.Xue@intel.com> Signed-off-by: chaunceyjiang <chaunceyjiang@gmail.com> Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk> Signed-off-by: Chen Zhang <zhangch99@outlook.com> Signed-off-by: Roger Wang <hey@rogerw.io> Signed-off-by: mgoin <mgoin64@gmail.com> Signed-off-by: wwl2755 <wangwenlong2755@gmail.com> Signed-off-by: Manoel Marques <manoel.marques@ibm.com> Signed-off-by: Manoel Marques <manoelmrqs@gmail.com> Signed-off-by: Isotr0py <mozf@mail2.sysu.edu.cn> Signed-off-by: pengdrumli <pengdrumli@tencent.com> Signed-off-by: windsonsea <haifeng.yao@daocloud.io> Signed-off-by: Woosuk Kwon <woosuk@thinkingmachines.ai> Signed-off-by: Woosuk Kwon <woosuk.kwon@berkeley.edu> Signed-off-by: Huamin Li <3ericli@gmail.com> Signed-off-by: simondanielsson <simon.danielsson99@hotmail.com> Signed-off-by: Rahul Tuli <rtuli@redhat.com> Signed-off-by: Yang <lymailforjob@gmail.com> Signed-off-by: Debolina Roy <debroy@redhat.com> Signed-off-by: David Chen <530634352@qq.com> Signed-off-by: wangzi <3220100013@zju.edu.cn> Signed-off-by: Eldar Kurtic <8884008+eldarkurtic@users.noreply.github.com> Signed-off-by: NickLucche <nlucches@redhat.com> Signed-off-by: Yizhou Liu <liu_yizhou@outlook.com> Signed-off-by: Sara Kokkila Schumacher <saraks@ibm.com> Signed-off-by: Csrayz <jover@cmbchina.com> Signed-off-by: ivyilike <pww123@cmbchina.com> Signed-off-by: Burkhard Ringlein <ngl@zurich.ibm.com> Signed-off-by: Bowen Wang <abmfy@icloud.com> Signed-off-by: qqma <qqma@amazon.com> Signed-off-by: ElizaWszola <ewszola@redhat.com> Signed-off-by: Lu Fang <fanglu@fb.com> Signed-off-by: Zhuohan Li <zhuohan123@gmail.com> Signed-off-by: Luka Govedič <lgovedic@redhat.com> Signed-off-by: luka <lgovedic@redhat.com> Signed-off-by: Luka Govedič <ProExpertProg@users.noreply.github.com> Signed-off-by: Or Ozeri <oro@il.ibm.com> Signed-off-by: Johnny Yang <johnnyyang@google.com> Signed-off-by: Alec Solder <alecs@fb.com> Signed-off-by: Alec S <10566873+alecsolder@users.noreply.github.com> Signed-off-by: Russell Bryant <rbryant@redhat.com> Signed-off-by: Matthew Bonanni <mbonanni@redhat.com> Signed-off-by: Alexander Matveev <amatveev@redhat.com> Signed-off-by: yewentao256 <zhyanwentao@126.com> Signed-off-by: liuye.hj <liuye.hj@alibaba-inc.com> Signed-off-by: Kunshang Ji <kunshang.ji@intel.com> Signed-off-by: Lucia Fang <116399278+luccafong@users.noreply.github.com> Signed-off-by: Michael Goin <mgoin64@gmail.com> Signed-off-by: Varun Sundar Rabindranath <vsundarr@redhat.com> Signed-off-by: Ming Yang <minos.future@gmail.com> Signed-off-by: Zhikaiiii <1658973216@qq.com> Signed-off-by: Andreas Hartel <andreas.hartel@aleph-alpha.com> Signed-off-by: Jee Jee Li <pandaleefree@gmail.com> Signed-off-by: vllmellm <vllm.ellm@embeddedllm.com> Signed-off-by: wuxibin <wuxibin@bytedance.com> Signed-off-by: youkaichao <youkaichao@gmail.com> Signed-off-by: Peter Pan <Peter.Pan@daocloud.io> Signed-off-by: Peter Pan <peter.pan@daocloud.io> Signed-off-by: Nicolò Lucchesi<nicolo.lucchesi@gmail.com> Signed-off-by: Thomas Parnell <tpa@zurich.ibm.com> Signed-off-by: Sage Moore <sage@neuralmagic.com> Signed-off-by: Lucas Wilkinson <lwilkins@redhat.com> Signed-off-by: Lucas Wilkinson <LucasWilkinson@users.noreply.github.com> Signed-off-by: Tyler Michael Smith <tyler@neuralmagic.com> Signed-off-by: Bill Nell <bnell@redhat.com> Signed-off-by: Shreeasish Kumar <shreeasish@rivosinc.com> Signed-off-by: Weida Hong <wdhongtw@google.com> Signed-off-by: Ekagra Ranjan <3116519+ekagra-ranjan@users.noreply.github.com> Signed-off-by: Hashem Hashemi <hashem.hashemi@amd.com> Signed-off-by: Hashem Hashemi <159079214+amd-hhashemi@users.noreply.github.com> Signed-off-by: Amir Samani <asamani@nvidia.com> Signed-off-by: ElizaWszola <elizaw.9289@gmail.com> Signed-off-by: jiahanc <173873397+jiahanc@users.noreply.github.com> Signed-off-by: ilmarkov <markovilya197@gmail.com> Signed-off-by: Gregory Shtrasberg <Gregory.Shtrasberg@amd.com> Signed-off-by: Jialin Ouyang <Jialin.Ouyang@gmail.com> Signed-off-by: rouchenzi <ruochenwen@gmail.com> Signed-off-by: rouchenzi <40842833+rouchenzi@users.noreply.github.com> Signed-off-by: Andrew Xia <axia@meta.com> Signed-off-by: Kourosh Hakhamaneshi <kourosh@anyscale.com> Signed-off-by: Corey Lowman <clowman1993@gmail.com> Signed-off-by: jpvillam <jpvillam@amd.com> Signed-off-by: dougbtv <dosmith@redhat.com> Signed-off-by: Chenxi Yang <cxyang@fb.com> Signed-off-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com> Signed-off-by: ahao-anyscale <ahao@anyscale.com> Signed-off-by: Yan Lu <luyan@nvidia.com> Signed-off-by: baxingpiaochong <771405853@qq.com> Signed-off-by: Kyle Sayers <kylesayrs@gmail.com> Signed-off-by: Nikhil Gupta <nikhil.gupta2@arm.com> Signed-off-by: Yong Hoon Shin <yhshin@meta.com> Signed-off-by: Benjamin Chislett <benjamin.chislett@centml.ai> Signed-off-by: Benjamin Chislett <bchislett@nvidia.com> Signed-off-by: Ben Browning <bbrownin@redhat.com> Signed-off-by: Chengji Yao <chengjiyao@google.com> Signed-off-by: jiang1.li <jiang1.li@intel.com> Signed-off-by: Jackmin801 <ongjackm@gmail.com> Signed-off-by: Jonas M. Kübler <44084297+jmkuebler@users.noreply.github.com> Signed-off-by: taohui <taohui3@gmail.com> Signed-off-by: rongfu.leng <rongfu.leng@daocloud.io> Signed-off-by: Shu Wang <shuw@nvidia.com> Signed-off-by: Shu Wang. <shuw@nvidia.com> Signed-off-by: Tyler Michael Smith <tlrmchlsmth@gmail.com> Signed-off-by: Duncan Moss <djm.moss@gmail.com> Signed-off-by: Shiyan Deng <dsy842974287@meta.com> Signed-off-by: Wei Wei <wwei6@meta.com> Signed-off-by: Saman Keon <samanamp@outlook.com> Signed-off-by: yangxurui <yangxurui@meituan.com> Signed-off-by: nicole-lihui <nicole.li@daocloud.io> Signed-off-by: courage17340 <courage17340@163.com> Signed-off-by: Jacob Kahn <jacobkahn1@gmail.com> Signed-off-by: Fadi Arafeh <fadi.arafeh@arm.com> Signed-off-by: Agata Dobrzyniewicz <adobrzyniewicz@habana.ai> Signed-off-by: zxw <1020938856@qq.com> Signed-off-by: wang.yuqi <noooop@126.com> Signed-off-by: Cyrus Leung <cyrus.tl.leung@gmail.com> Signed-off-by: chenlang <chen.lang5@zte.com.cn> Signed-off-by: Jonas Kuebler <kuebj@amazon.com> Signed-off-by: AlonKejzman <alonkeizman@gmail.com> Signed-off-by: Tao Hui <taohui3@gmail.com> Signed-off-by: Matthew Bonanni <mbonanni001@gmail.com> Signed-off-by: Tomer Asida <57313761+tomeras91@users.noreply.github.com> Signed-off-by: Aleksandr Malyshev <maleksan@amd.com> Signed-off-by: Eugene Khvedchenia <ekhvedchenia@nvidia.com> Signed-off-by: Eugene Khvedchenya <ekhvedchenya@gmail.com> Signed-off-by: yiting.jiang <yiting.jiang@daocloud.io> Signed-off-by: xaguilar <Xavier.AguilarFruto@amd.com> Signed-off-by: Iceber Gu <caiwei95@hotmail.com> Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com> Signed-off-by: Icey <1790571317@qq.com> Signed-off-by: 许文卿 <xwq391974@alibaba-inc.com> Signed-off-by: Chih-Chieh-Yang <7364402+cyang49@users.noreply.github.com> Co-authored-by: Nick Hill <nhill@redhat.com> Co-authored-by: Lucas Kabela <lucasakabela@gmail.com> Co-authored-by: Maximilien de Bayser <mbayser@br.ibm.com> Co-authored-by: Andrew Sansom <andrew@protopia.ai> Co-authored-by: Boyuan Feng <boyuan@meta.com> Co-authored-by: Luka Govedič <ProExpertProg@users.noreply.github.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Harry Mellor <19981378+hmellor@users.noreply.github.com> Co-authored-by: JartX <sagformas@epdcenter.es> Co-authored-by: Chendi.Xue <chendi.xue@intel.com> Co-authored-by: Chauncey <chaunceyjiang@gmail.com> Co-authored-by: xin.li <xin.li@daocloud.io> Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk> Co-authored-by: Chen Zhang <zhangch99@outlook.com> Co-authored-by: Roger Wang <hey@rogerw.io> Co-authored-by: Michael Goin <mgoin64@gmail.com> Co-authored-by: Wenlong Wang <wangwenlong2755@gmail.com> Co-authored-by: Manoel Marques <manoelmrqs@gmail.com> Co-authored-by: Isotr0py <mozf@mail2.sysu.edu.cn> Co-authored-by: lirong <56789630+lirong-lirong@users.noreply.github.com> Co-authored-by: Michael Yao <haifeng.yao@daocloud.io> Co-authored-by: Woosuk Kwon <woosuk.kwon@berkeley.edu> Co-authored-by: Huamin Li <3ericli@gmail.com> Co-authored-by: Lu Fang <30275821+houseroad@users.noreply.github.com> Co-authored-by: Simon Danielsson <70206058+simondanielsson@users.noreply.github.com> Co-authored-by: Rahul Tuli <rtuli@redhat.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Yang Liu <127183760+KKSK-DON@users.noreply.github.com> Co-authored-by: Deboleina <debroy@redhat.com> Co-authored-by: yinz-aizip <yinz@aizip.ai> Co-authored-by: WeiQing Chen <40507679+david6666666@users.noreply.github.com> Co-authored-by: wangzi <3220100013@zju.edu.cn> Co-authored-by: Eldar Kurtić <8884008+eldarkurtic@users.noreply.github.com> Co-authored-by: Nicolò Lucchesi <nlucches@redhat.com> Co-authored-by: Ye (Charlotte) Qi <yeq@meta.com> Co-authored-by: Yizhou <136800916+yiz-liu@users.noreply.github.com> Co-authored-by: Sara-KS <50249410+Sara-KS@users.noreply.github.com> Co-authored-by: Csrayz <jover@cmbchina.com> Co-authored-by: ivyilike <pww123@cmbchina.com> Co-authored-by: Burkhard Ringlein <ngl@zurich.ibm.com> Co-authored-by: Bowen Wang <abmfy@icloud.com> Co-authored-by: Tyler Michael Smith <tyler@neuralmagic.com> Co-authored-by: Daisy-Ma-coder <daisy.ma.0117@gmail.com> Co-authored-by: qqma <qqma@amazon.com> Co-authored-by: ElizaWszola <ewszola@redhat.com> Co-authored-by: Lucia Fang <116399278+luccafong@users.noreply.github.com> Co-authored-by: Zhuohan Li <zhuohan123@gmail.com> Co-authored-by: Simon Mo <simon.mo@hey.com> Co-authored-by: Or Ozeri <oro@il.ibm.com> Co-authored-by: Johnny Yang <24908445+jcyang43@users.noreply.github.com> Co-authored-by: Chengji Yao <chengjiyao@google.com> Co-authored-by: Alec S <10566873+alecsolder@users.noreply.github.com> Co-authored-by: Alec Solder <alecs@fb.com> Co-authored-by: Russell Bryant <rbryant@redhat.com> Co-authored-by: Matthew Bonanni <mbonanni@redhat.com> Co-authored-by: Robert Shaw <114415538+robertgshaw2-redhat@users.noreply.github.com> Co-authored-by: Chris Bamford <chrisbam4d@gmail.com> Co-authored-by: Alexander Matveev <59768536+alexm-redhat@users.noreply.github.com> Co-authored-by: Wentao Ye <44945378+yewentao256@users.noreply.github.com> Co-authored-by: JJJYmmm <92386084+JJJYmmm@users.noreply.github.com> Co-authored-by: liuye.hj <liuye.hj@alibaba-inc.com> Co-authored-by: Kunshang Ji <kunshang.ji@intel.com> Co-authored-by: Lucia (Lu) Fang <fanglu@meta.com> Co-authored-by: Varun Sundar Rabindranath <varunsundar08@gmail.com> Co-authored-by: Varun Sundar Rabindranath <vsundarr@redhat.com> Co-authored-by: Ming Yang <yming@meta.com> Co-authored-by: Zhikaiiii <55917203+Zhikaiiii@users.noreply.github.com> Co-authored-by: Andreas Hartel <andreas@hartel.me> Co-authored-by: Jee Jee Li <pandaleefree@gmail.com> Co-authored-by: vllmellm <vllm.ellm@embeddedllm.com> Co-authored-by: Joel <wuxibin89@163.com> Co-authored-by: youkaichao <youkaichao@gmail.com> Co-authored-by: Mark McLoughlin <markmc@redhat.com> Co-authored-by: Peter Pan <peter.pan@daocloud.io> Co-authored-by: Nicolò Lucchesi <nicolo.lucchesi@gmail.com> Co-authored-by: Fanli Lin <fanli.lin@intel.com> Co-authored-by: Thomas Parnell <tpa@zurich.ibm.com> Co-authored-by: Lucas Wilkinson <LucasWilkinson@users.noreply.github.com> Co-authored-by: Sage Moore <sage@neuralmagic.com> Co-authored-by: yewentao256 <zhyanwentao@126.com> Co-authored-by: bnellnm <49004751+bnellnm@users.noreply.github.com> Co-authored-by: rivos-shreeasish <shreeasish@rivosinc.com> Co-authored-by: Chih-Chieh Yang <chih.chieh.yang@ibm.com> Co-authored-by: Weida Hong <wdhongtw@gmail.com> Co-authored-by: Ekagra Ranjan <3116519+ekagra-ranjan@users.noreply.github.com> Co-authored-by: Hashem Hashemi <159079214+amd-hhashemi@users.noreply.github.com> Co-authored-by: Amir Samani <samani@ualberta.ca> Co-authored-by: Luka Govedič <lgovedic@redhat.com> Co-authored-by: jiahanc <173873397+jiahanc@users.noreply.github.com> Co-authored-by: Ilya Markov <markovilya197@gmail.com> Co-authored-by: Gregory Shtrasberg <156009573+gshtras@users.noreply.github.com> Co-authored-by: Jialin Ouyang <Jialin.Ouyang@gmail.com> Co-authored-by: rouchenzi <40842833+rouchenzi@users.noreply.github.com> Co-authored-by: Andrew Xia <axia@meta.com> Co-authored-by: kourosh hakhamaneshi <31483498+kouroshHakha@users.noreply.github.com> Co-authored-by: Corey Lowman <clowman1993@gmail.com> Co-authored-by: Juan Villamizar <100237675+jpvillam-amd@users.noreply.github.com> Co-authored-by: jpvillam <jpvillam@amd.com> Co-authored-by: Doug Smith <dosmith@redhat.com> Co-authored-by: Chenxi Yang <cxyang@cs.utexas.edu> Co-authored-by: Chenxi Yang <cxyang@fb.com> Co-authored-by: ahao-anyscale <ahao@anyscale.com> Co-authored-by: 0xNullPath <luyanfcp@foxmail.com> Co-authored-by: baxingpiaochong <771405853@qq.com> Co-authored-by: Benjamin Chislett <bchislett@nvidia.com> Co-authored-by: Kyle Sayers <kylesayrs@gmail.com> Co-authored-by: Nikhil Gupta <nikhil.gupta2@arm.com> Co-authored-by: Yong Hoon Shin <48474650+sarckk@users.noreply.github.com> Co-authored-by: lhsjohn <huashuoli@tencent.com> Co-authored-by: Ben Browning <bbrownin@redhat.com> Co-authored-by: Li, Jiang <jiang1.li@intel.com> Co-authored-by: Jackmin801 <56836461+Jackmin801@users.noreply.github.com> Co-authored-by: Jonas M. Kübler <44084297+jmkuebler@users.noreply.github.com> Co-authored-by: Tao Hui <taohui3@gmail.com> Co-authored-by: rongfu.leng <rongfu.leng@daocloud.io> Co-authored-by: Shu Wang <shuw@nvidia.com> Co-authored-by: Tyler Michael Smith <tlrmchlsmth@gmail.com> Co-authored-by: Duncan Moss <djm.moss@gmail.com> Co-authored-by: Shiyan Deng <dsy842974287@meta.com> Co-authored-by: Wei Wei <wwei6@meta.com> Co-authored-by: Saman A. Pour <samanamp@outlook.com> Co-authored-by: XuruiYang <530534756@qq.com> Co-authored-by: yangxurui <yangxurui@meituan.com> Co-authored-by: Nicole LiHui 🥜 <nicolelihui@outlook.com> Co-authored-by: courage17340 <courage17340@users.noreply.github.com> Co-authored-by: Jacob Kahn <jacobkahn1@gmail.com> Co-authored-by: Nicole LiHui 🥜 <nicole.li@daocloud.io> Co-authored-by: Fadi Arafeh <115173828+fadara01@users.noreply.github.com> Co-authored-by: Agata Dobrzyniewicz <160237065+adobrzyn@users.noreply.github.com> Co-authored-by: yyzxw <34639446+yyzxw@users.noreply.github.com> Co-authored-by: wang.yuqi <noooop@126.com> Co-authored-by: Cyrus Leung <cyrus.tl.leung@gmail.com> Co-authored-by: chenlang <chen.lang5@zte.com.cn> Co-authored-by: chenlang <10346245@zte.com.cn> Co-authored-by: AlonKejzman <alonkeizman@gmail.com> Co-authored-by: tomeras91 <57313761+tomeras91@users.noreply.github.com> Co-authored-by: Aleksandr Malyshev <164964928+maleksan85@users.noreply.github.com> Co-authored-by: Aleksandr Malyshev <maleksan@amd.com> Co-authored-by: Doug Lehr <douglehr@amd.com> Co-authored-by: Eugene Khvedchenya <ekhvedchenya@gmail.com> Co-authored-by: yitingdc <59356937+yitingdc@users.noreply.github.com> Co-authored-by: xaguilar-amd <xavier.aguilarfruto@amd.com> Co-authored-by: Iceber Gu <caiwei95@hotmail.com> Co-authored-by: Tao He <linzhu.ht@alibaba-inc.com> Co-authored-by: Icey <1790571317@qq.com> Co-authored-by: Xu Wenqing <121550081+Xu-Wenqing@users.noreply.github.com> Co-authored-by: Chih-Chieh Yang <7364402+cyang49@users.noreply.github.com> Co-authored-by: RishiAstra <40644327+RishiAstra@users.noreply.github.com>
551 lines
24 KiB
Docker
551 lines
24 KiB
Docker
# The vLLM Dockerfile is used to construct vLLM image that can be directly used
|
|
# to run the OpenAI compatible server.
|
|
|
|
# Please update any changes made here to
|
|
# docs/contributing/dockerfile/dockerfile.md and
|
|
# docs/assets/contributing/dockerfile-stages-dependency.png
|
|
|
|
ARG CUDA_VERSION=12.8.1
|
|
ARG PYTHON_VERSION=3.12
|
|
|
|
# By parameterizing the base images, we allow third-party to use their own
|
|
# base images. One use case is hermetic builds with base images stored in
|
|
# private registries that use a different repository naming conventions.
|
|
#
|
|
# Example:
|
|
# docker build --build-arg BUILD_BASE_IMAGE=registry.acme.org/mirror/nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04
|
|
ARG BUILD_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04
|
|
# TODO: Restore to base image after FlashInfer AOT wheel fixed
|
|
ARG FINAL_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu22.04
|
|
|
|
# By parameterizing the Deadsnakes repository URL, we allow third-party to use
|
|
# their own mirror. When doing so, we don't benefit from the transparent
|
|
# installation of the GPG key of the PPA, as done by add-apt-repository, so we
|
|
# also need a URL for the GPG key.
|
|
ARG DEADSNAKES_MIRROR_URL
|
|
ARG DEADSNAKES_GPGKEY_URL
|
|
|
|
# The PyPA get-pip.py script is a self contained script+zip file, that provides
|
|
# both the installer script and the pip base85-encoded zip archive. This allows
|
|
# bootstrapping pip in environment where a dsitribution package does not exist.
|
|
#
|
|
# By parameterizing the URL for get-pip.py installation script, we allow
|
|
# third-party to use their own copy of the script stored in a private mirror.
|
|
# We set the default value to the PyPA owned get-pip.py script.
|
|
#
|
|
# Reference: https://pip.pypa.io/en/stable/installation/#get-pip-py
|
|
ARG GET_PIP_URL="https://bootstrap.pypa.io/get-pip.py"
|
|
|
|
# PIP supports fetching the packages from custom indexes, allowing third-party
|
|
# to host the packages in private mirrors. The PIP_INDEX_URL and
|
|
# PIP_EXTRA_INDEX_URL are standard PIP environment variables to override the
|
|
# default indexes. By letting them empty by default, PIP will use its default
|
|
# indexes if the build process doesn't override the indexes.
|
|
#
|
|
# Uv uses different variables. We set them by default to the same values as
|
|
# PIP, but they can be overridden.
|
|
ARG PIP_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL
|
|
ARG UV_INDEX_URL=${PIP_INDEX_URL}
|
|
ARG UV_EXTRA_INDEX_URL=${PIP_EXTRA_INDEX_URL}
|
|
|
|
# PyTorch provides its own indexes for standard and nightly builds
|
|
ARG PYTORCH_CUDA_INDEX_BASE_URL=https://download.pytorch.org/whl
|
|
ARG PYTORCH_CUDA_NIGHTLY_INDEX_BASE_URL=https://download.pytorch.org/whl/nightly
|
|
|
|
# PIP supports multiple authentication schemes, including keyring
|
|
# By parameterizing the PIP_KEYRING_PROVIDER variable and setting it to
|
|
# disabled by default, we allow third-party to use keyring authentication for
|
|
# their private Python indexes, while not changing the default behavior which
|
|
# is no authentication.
|
|
#
|
|
# Reference: https://pip.pypa.io/en/stable/topics/authentication/#keyring-support
|
|
ARG PIP_KEYRING_PROVIDER=disabled
|
|
ARG UV_KEYRING_PROVIDER=${PIP_KEYRING_PROVIDER}
|
|
|
|
# Flag enables built-in KV-connector dependency libs into docker images
|
|
ARG INSTALL_KV_CONNECTORS=false
|
|
|
|
#################### BASE BUILD IMAGE ####################
|
|
# prepare basic build environment
|
|
FROM ${BUILD_BASE_IMAGE} AS base
|
|
ARG CUDA_VERSION
|
|
ARG PYTHON_VERSION
|
|
ARG TARGETPLATFORM
|
|
ARG INSTALL_KV_CONNECTORS=false
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
ARG DEADSNAKES_MIRROR_URL
|
|
ARG DEADSNAKES_GPGKEY_URL
|
|
ARG GET_PIP_URL
|
|
|
|
# Install Python and other dependencies
|
|
RUN echo 'tzdata tzdata/Areas select America' | debconf-set-selections \
|
|
&& echo 'tzdata tzdata/Zones/America select Los_Angeles' | debconf-set-selections \
|
|
&& apt-get update -y \
|
|
&& apt-get install -y ccache software-properties-common git curl sudo \
|
|
&& if [ ! -z ${DEADSNAKES_MIRROR_URL} ] ; then \
|
|
if [ ! -z "${DEADSNAKES_GPGKEY_URL}" ] ; then \
|
|
mkdir -p -m 0755 /etc/apt/keyrings ; \
|
|
curl -L ${DEADSNAKES_GPGKEY_URL} | gpg --dearmor > /etc/apt/keyrings/deadsnakes.gpg ; \
|
|
sudo chmod 644 /etc/apt/keyrings/deadsnakes.gpg ; \
|
|
echo "deb [signed-by=/etc/apt/keyrings/deadsnakes.gpg] ${DEADSNAKES_MIRROR_URL} $(lsb_release -cs) main" > /etc/apt/sources.list.d/deadsnakes.list ; \
|
|
fi ; \
|
|
else \
|
|
for i in 1 2 3; do \
|
|
add-apt-repository -y ppa:deadsnakes/ppa && break || \
|
|
{ echo "Attempt $i failed, retrying in 5s..."; sleep 5; }; \
|
|
done ; \
|
|
fi \
|
|
&& apt-get update -y \
|
|
&& apt-get install -y python${PYTHON_VERSION} python${PYTHON_VERSION}-dev python${PYTHON_VERSION}-venv \
|
|
&& update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \
|
|
&& update-alternatives --set python3 /usr/bin/python${PYTHON_VERSION} \
|
|
&& ln -sf /usr/bin/python${PYTHON_VERSION}-config /usr/bin/python3-config \
|
|
&& curl -sS ${GET_PIP_URL} | python${PYTHON_VERSION} \
|
|
&& python3 --version && python3 -m pip --version
|
|
|
|
ARG PIP_INDEX_URL UV_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
|
|
ARG PYTORCH_CUDA_INDEX_BASE_URL
|
|
ARG PYTORCH_CUDA_NIGHTLY_INDEX_BASE_URL
|
|
ARG PIP_KEYRING_PROVIDER UV_KEYRING_PROVIDER
|
|
|
|
# Install uv for faster pip installs
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
python3 -m pip install uv
|
|
|
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
|
# Reference: https://github.com/astral-sh/uv/pull/1694
|
|
ENV UV_HTTP_TIMEOUT=500
|
|
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
|
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# Upgrade to GCC 10 to avoid https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92519
|
|
# as it was causing spam when compiling the CUTLASS kernels
|
|
RUN apt-get install -y gcc-10 g++-10
|
|
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 110 --slave /usr/bin/g++ g++ /usr/bin/g++-10
|
|
RUN <<EOF
|
|
gcc --version
|
|
EOF
|
|
|
|
# Workaround for https://github.com/openai/triton/issues/2507 and
|
|
# https://github.com/pytorch/pytorch/issues/107960 -- hopefully
|
|
# this won't be needed for future versions of this docker image
|
|
# or future versions of triton.
|
|
RUN ldconfig /usr/local/cuda-$(echo $CUDA_VERSION | cut -d. -f1,2)/compat/
|
|
|
|
WORKDIR /workspace
|
|
|
|
# install build and runtime dependencies
|
|
COPY requirements/common.txt requirements/common.txt
|
|
COPY requirements/cuda.txt requirements/cuda.txt
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system -r requirements/cuda.txt \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
|
|
# cuda arch list used by torch
|
|
# can be useful for both `dev` and `test`
|
|
# explicitly set the list to avoid issues with torch 2.2
|
|
# see https://github.com/pytorch/pytorch/pull/123243
|
|
ARG torch_cuda_arch_list='7.0 7.5 8.0 8.9 9.0 10.0 12.0'
|
|
ENV TORCH_CUDA_ARCH_LIST=${torch_cuda_arch_list}
|
|
#################### BASE BUILD IMAGE ####################
|
|
|
|
#################### WHEEL BUILD IMAGE ####################
|
|
FROM base AS build
|
|
ARG TARGETPLATFORM
|
|
|
|
ARG PIP_INDEX_URL UV_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
|
|
ARG PYTORCH_CUDA_INDEX_BASE_URL
|
|
|
|
# install build dependencies
|
|
COPY requirements/build.txt requirements/build.txt
|
|
|
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
|
# Reference: https://github.com/astral-sh/uv/pull/1694
|
|
ENV UV_HTTP_TIMEOUT=500
|
|
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
|
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system -r requirements/build.txt \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
|
|
COPY . .
|
|
ARG GIT_REPO_CHECK=0
|
|
RUN --mount=type=bind,source=.git,target=.git \
|
|
if [ "$GIT_REPO_CHECK" != "0" ]; then bash tools/check_repo.sh ; fi
|
|
|
|
# max jobs used by Ninja to build extensions
|
|
ARG max_jobs=2
|
|
ENV MAX_JOBS=${max_jobs}
|
|
# number of threads used by nvcc
|
|
ARG nvcc_threads=8
|
|
ENV NVCC_THREADS=$nvcc_threads
|
|
|
|
ARG USE_SCCACHE
|
|
ARG SCCACHE_DOWNLOAD_URL=https://github.com/mozilla/sccache/releases/download/v0.8.1/sccache-v0.8.1-x86_64-unknown-linux-musl.tar.gz
|
|
ARG SCCACHE_ENDPOINT
|
|
ARG SCCACHE_BUCKET_NAME=vllm-build-sccache
|
|
ARG SCCACHE_REGION_NAME=us-west-2
|
|
ARG SCCACHE_S3_NO_CREDENTIALS=0
|
|
|
|
# Flag to control whether to use pre-built vLLM wheels
|
|
ARG VLLM_USE_PRECOMPILED=""
|
|
ARG VLLM_MAIN_CUDA_VERSION=""
|
|
|
|
# if USE_SCCACHE is set, use sccache to speed up compilation
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
--mount=type=bind,source=.git,target=.git \
|
|
if [ "$USE_SCCACHE" = "1" ]; then \
|
|
echo "Installing sccache..." \
|
|
&& curl -L -o sccache.tar.gz ${SCCACHE_DOWNLOAD_URL} \
|
|
&& tar -xzf sccache.tar.gz \
|
|
&& sudo mv sccache-v0.8.1-x86_64-unknown-linux-musl/sccache /usr/bin/sccache \
|
|
&& rm -rf sccache.tar.gz sccache-v0.8.1-x86_64-unknown-linux-musl \
|
|
&& if [ ! -z ${SCCACHE_ENDPOINT} ] ; then export SCCACHE_ENDPOINT=${SCCACHE_ENDPOINT} ; fi \
|
|
&& export SCCACHE_BUCKET=${SCCACHE_BUCKET_NAME} \
|
|
&& export SCCACHE_REGION=${SCCACHE_REGION_NAME} \
|
|
&& export SCCACHE_S3_NO_CREDENTIALS=${SCCACHE_S3_NO_CREDENTIALS} \
|
|
&& export SCCACHE_IDLE_TIMEOUT=0 \
|
|
&& export CMAKE_BUILD_TYPE=Release \
|
|
&& export VLLM_USE_PRECOMPILED="${VLLM_USE_PRECOMPILED}" \
|
|
&& export VLLM_MAIN_CUDA_VERSION="${VLLM_MAIN_CUDA_VERSION}" \
|
|
&& export VLLM_DOCKER_BUILD_CONTEXT=1 \
|
|
&& sccache --show-stats \
|
|
&& python3 setup.py bdist_wheel --dist-dir=dist --py-limited-api=cp38 \
|
|
&& sccache --show-stats; \
|
|
fi
|
|
|
|
ARG vllm_target_device="cuda"
|
|
ENV VLLM_TARGET_DEVICE=${vllm_target_device}
|
|
ENV CCACHE_DIR=/root/.cache/ccache
|
|
RUN --mount=type=cache,target=/root/.cache/ccache \
|
|
--mount=type=cache,target=/root/.cache/uv \
|
|
--mount=type=bind,source=.git,target=.git \
|
|
if [ "$USE_SCCACHE" != "1" ]; then \
|
|
# Clean any existing CMake artifacts
|
|
rm -rf .deps && \
|
|
mkdir -p .deps && \
|
|
export VLLM_USE_PRECOMPILED="${VLLM_USE_PRECOMPILED}" && \
|
|
export VLLM_DOCKER_BUILD_CONTEXT=1 && \
|
|
python3 setup.py bdist_wheel --dist-dir=dist --py-limited-api=cp38; \
|
|
fi
|
|
|
|
# Check the size of the wheel if RUN_WHEEL_CHECK is true
|
|
COPY .buildkite/check-wheel-size.py check-wheel-size.py
|
|
# sync the default value with .buildkite/check-wheel-size.py
|
|
ARG VLLM_MAX_SIZE_MB=450
|
|
ENV VLLM_MAX_SIZE_MB=$VLLM_MAX_SIZE_MB
|
|
ARG RUN_WHEEL_CHECK=true
|
|
RUN if [ "$RUN_WHEEL_CHECK" = "true" ]; then \
|
|
python3 check-wheel-size.py dist; \
|
|
else \
|
|
echo "Skipping wheel size check."; \
|
|
fi
|
|
#################### EXTENSION Build IMAGE ####################
|
|
|
|
#################### DEV IMAGE ####################
|
|
FROM base AS dev
|
|
|
|
ARG PIP_INDEX_URL UV_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
|
|
ARG PYTORCH_CUDA_INDEX_BASE_URL
|
|
|
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
|
# Reference: https://github.com/astral-sh/uv/pull/1694
|
|
ENV UV_HTTP_TIMEOUT=500
|
|
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
|
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# Install libnuma-dev, required by fastsafetensors (fixes #20384)
|
|
RUN apt-get update && apt-get install -y libnuma-dev && rm -rf /var/lib/apt/lists/*
|
|
COPY requirements/lint.txt requirements/lint.txt
|
|
COPY requirements/test.txt requirements/test.txt
|
|
COPY requirements/dev.txt requirements/dev.txt
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system -r requirements/dev.txt \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
#################### DEV IMAGE ####################
|
|
|
|
#################### vLLM installation IMAGE ####################
|
|
# image with vLLM installed
|
|
FROM ${FINAL_BASE_IMAGE} AS vllm-base
|
|
ARG CUDA_VERSION
|
|
ARG PYTHON_VERSION
|
|
ARG INSTALL_KV_CONNECTORS=false
|
|
WORKDIR /vllm-workspace
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ARG TARGETPLATFORM
|
|
|
|
ARG GDRCOPY_CUDA_VERSION=12.8
|
|
# Keep in line with FINAL_BASE_IMAGE
|
|
ARG GDRCOPY_OS_VERSION=Ubuntu22_04
|
|
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
ARG DEADSNAKES_MIRROR_URL
|
|
ARG DEADSNAKES_GPGKEY_URL
|
|
ARG GET_PIP_URL
|
|
|
|
RUN PYTHON_VERSION_STR=$(echo ${PYTHON_VERSION} | sed 's/\.//g') && \
|
|
echo "export PYTHON_VERSION_STR=${PYTHON_VERSION_STR}" >> /etc/environment
|
|
|
|
# Install Python and other dependencies
|
|
RUN echo 'tzdata tzdata/Areas select America' | debconf-set-selections \
|
|
&& echo 'tzdata tzdata/Zones/America select Los_Angeles' | debconf-set-selections \
|
|
&& apt-get update -y \
|
|
&& apt-get install -y ccache software-properties-common git curl wget sudo vim python3-pip \
|
|
&& apt-get install -y ffmpeg libsm6 libxext6 libgl1 \
|
|
&& if [ ! -z ${DEADSNAKES_MIRROR_URL} ] ; then \
|
|
if [ ! -z "${DEADSNAKES_GPGKEY_URL}" ] ; then \
|
|
mkdir -p -m 0755 /etc/apt/keyrings ; \
|
|
curl -L ${DEADSNAKES_GPGKEY_URL} | gpg --dearmor > /etc/apt/keyrings/deadsnakes.gpg ; \
|
|
sudo chmod 644 /etc/apt/keyrings/deadsnakes.gpg ; \
|
|
echo "deb [signed-by=/etc/apt/keyrings/deadsnakes.gpg] ${DEADSNAKES_MIRROR_URL} $(lsb_release -cs) main" > /etc/apt/sources.list.d/deadsnakes.list ; \
|
|
fi ; \
|
|
else \
|
|
for i in 1 2 3; do \
|
|
add-apt-repository -y ppa:deadsnakes/ppa && break || \
|
|
{ echo "Attempt $i failed, retrying in 5s..."; sleep 5; }; \
|
|
done ; \
|
|
fi \
|
|
&& apt-get update -y \
|
|
&& apt-get install -y python${PYTHON_VERSION} python${PYTHON_VERSION}-dev python${PYTHON_VERSION}-venv libibverbs-dev \
|
|
&& update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \
|
|
&& update-alternatives --set python3 /usr/bin/python${PYTHON_VERSION} \
|
|
&& ln -sf /usr/bin/python${PYTHON_VERSION}-config /usr/bin/python3-config \
|
|
&& curl -sS ${GET_PIP_URL} | python${PYTHON_VERSION} \
|
|
&& python3 --version && python3 -m pip --version
|
|
|
|
ARG PIP_INDEX_URL UV_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
|
|
ARG PYTORCH_CUDA_INDEX_BASE_URL
|
|
ARG PYTORCH_CUDA_NIGHTLY_INDEX_BASE_URL
|
|
ARG PIP_KEYRING_PROVIDER UV_KEYRING_PROVIDER
|
|
|
|
# Install uv for faster pip installs
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
python3 -m pip install uv
|
|
|
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
|
# Reference: https://github.com/astral-sh/uv/pull/1694
|
|
ENV UV_HTTP_TIMEOUT=500
|
|
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
|
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# Workaround for https://github.com/openai/triton/issues/2507 and
|
|
# https://github.com/pytorch/pytorch/issues/107960 -- hopefully
|
|
# this won't be needed for future versions of this docker image
|
|
# or future versions of triton.
|
|
RUN ldconfig /usr/local/cuda-$(echo $CUDA_VERSION | cut -d. -f1,2)/compat/
|
|
|
|
# arm64 (GH200) build follows the practice of "use existing pytorch" build,
|
|
# we need to install torch and torchvision from the nightly builds first,
|
|
# pytorch will not appear as a vLLM dependency in all of the following steps
|
|
# after this step
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
|
uv pip install --system \
|
|
--index-url ${PYTORCH_CUDA_NIGHTLY_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.') \
|
|
"torch==2.8.0.dev20250318+cu128" "torchvision==0.22.0.dev20250319" ; \
|
|
uv pip install --system \
|
|
--index-url ${PYTORCH_CUDA_NIGHTLY_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.') \
|
|
--pre pytorch_triton==3.3.0+gitab727c40 ; \
|
|
fi
|
|
|
|
# Install vllm wheel first, so that torch etc will be installed.
|
|
RUN --mount=type=bind,from=build,src=/workspace/dist,target=/vllm-workspace/dist \
|
|
--mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system dist/*.whl --verbose \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
|
|
# If we need to build FlashInfer wheel before its release:
|
|
# $ # Note we remove 7.0 from the arch list compared to the list below, since FlashInfer only supports sm75+
|
|
# $ export TORCH_CUDA_ARCH_LIST='7.5 8.0 8.9 9.0a 10.0a 12.0'
|
|
# $ git clone https://github.com/flashinfer-ai/flashinfer.git --recursive
|
|
# $ cd flashinfer
|
|
# $ git checkout v0.2.6.post1
|
|
# $ python -m flashinfer.aot
|
|
# $ python -m build --no-isolation --wheel
|
|
# $ ls -la dist
|
|
# -rw-rw-r-- 1 mgoin mgoin 205M Jun 9 18:03 flashinfer_python-0.2.6.post1-cp39-abi3-linux_x86_64.whl
|
|
# $ # upload the wheel to a public location, e.g. https://wheels.vllm.ai/flashinfer/v0.2.6.post1/flashinfer_python-0.2.6.post1-cp39-abi3-linux_x86_64.whl
|
|
|
|
# Install FlashInfer from source
|
|
ARG FLASHINFER_GIT_REPO="https://github.com/flashinfer-ai/flashinfer.git"
|
|
# Keep this in sync with "flashinfer" extra in setup.py
|
|
ARG FLASHINFER_GIT_REF="v0.3.1"
|
|
# Flag to control whether to compile FlashInfer AOT kernels
|
|
# Set to "true" to enable AOT compilation:
|
|
# docker build --build-arg FLASHINFER_AOT_COMPILE=true ...
|
|
ARG FLASHINFER_AOT_COMPILE=false
|
|
RUN --mount=type=cache,target=/root/.cache/uv bash - <<'BASH'
|
|
. /etc/environment
|
|
git clone --depth 1 --recursive --shallow-submodules \
|
|
--branch ${FLASHINFER_GIT_REF} \
|
|
${FLASHINFER_GIT_REPO} flashinfer
|
|
pushd flashinfer
|
|
if [ "${FLASHINFER_AOT_COMPILE}" = "true" ]; then
|
|
# Exclude CUDA arches for older versions (11.x and 12.0-12.7)
|
|
# TODO: Update this to allow setting TORCH_CUDA_ARCH_LIST as a build arg.
|
|
if [[ "${CUDA_VERSION}" == 11.* ]]; then
|
|
FI_TORCH_CUDA_ARCH_LIST="7.5 8.0 8.9"
|
|
elif [[ "${CUDA_VERSION}" == 12.[0-7]* ]]; then
|
|
FI_TORCH_CUDA_ARCH_LIST="7.5 8.0 8.9 9.0a"
|
|
else
|
|
# CUDA 12.8+ supports 10.0a and 12.0
|
|
FI_TORCH_CUDA_ARCH_LIST="7.5 8.0 8.9 9.0a 10.0a 12.0"
|
|
fi
|
|
echo "🏗️ Installing FlashInfer with AOT compilation for arches: ${FI_TORCH_CUDA_ARCH_LIST}"
|
|
# Build AOT kernels
|
|
TORCH_CUDA_ARCH_LIST="${FI_TORCH_CUDA_ARCH_LIST}" \
|
|
python3 -m flashinfer.aot
|
|
# Install with no-build-isolation since we already built AOT kernels
|
|
TORCH_CUDA_ARCH_LIST="${FI_TORCH_CUDA_ARCH_LIST}" \
|
|
uv pip install --system --no-build-isolation . \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
# Download pre-compiled cubins
|
|
TORCH_CUDA_ARCH_LIST="${FI_TORCH_CUDA_ARCH_LIST}" \
|
|
python3 -m flashinfer --download-cubin || echo "WARNING: Failed to download flashinfer cubins."
|
|
else
|
|
echo "🏗️ Installing FlashInfer without AOT compilation in JIT mode"
|
|
uv pip install --system . \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
fi
|
|
popd
|
|
rm -rf flashinfer
|
|
BASH
|
|
COPY examples examples
|
|
COPY benchmarks benchmarks
|
|
COPY ./vllm/collect_env.py .
|
|
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
. /etc/environment && \
|
|
uv pip list
|
|
|
|
# Even when we build Flashinfer with AOT mode, there's still
|
|
# some issues w.r.t. JIT compilation. Therefore we need to
|
|
# install build dependencies for JIT compilation.
|
|
# TODO: Remove this once FlashInfer AOT wheel is fixed
|
|
COPY requirements/build.txt requirements/build.txt
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system -r requirements/build.txt \
|
|
--extra-index-url ${PYTORCH_CUDA_INDEX_BASE_URL}/cu$(echo $CUDA_VERSION | cut -d. -f1,2 | tr -d '.')
|
|
|
|
# Install DeepGEMM from source
|
|
ARG DEEPGEMM_GIT_REF
|
|
COPY tools/install_deepgemm.sh /tmp/install_deepgemm.sh
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
VLLM_DOCKER_BUILD_CONTEXT=1 /tmp/install_deepgemm.sh --cuda-version "${CUDA_VERSION}" ${DEEPGEMM_GIT_REF:+--ref "$DEEPGEMM_GIT_REF"}
|
|
|
|
COPY tools/install_gdrcopy.sh install_gdrcopy.sh
|
|
RUN set -eux; \
|
|
case "${TARGETPLATFORM}" in \
|
|
linux/arm64) UUARCH="aarch64" ;; \
|
|
linux/amd64) UUARCH="x64" ;; \
|
|
*) echo "Unsupported TARGETPLATFORM: ${TARGETPLATFORM}" >&2; exit 1 ;; \
|
|
esac; \
|
|
./install_gdrcopy.sh "${GDRCOPY_OS_VERSION}" "${GDRCOPY_CUDA_VERSION}" "${UUARCH}"; \
|
|
rm ./install_gdrcopy.sh
|
|
|
|
# Install EP kernels(pplx-kernels and DeepEP)
|
|
COPY tools/ep_kernels/install_python_libraries.sh install_python_libraries.sh
|
|
ENV CUDA_HOME=/usr/local/cuda
|
|
RUN export TORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST:-9.0a+PTX}" \
|
|
&& bash install_python_libraries.sh
|
|
|
|
#################### vLLM installation IMAGE ####################
|
|
|
|
#################### TEST IMAGE ####################
|
|
# image to run unit testing suite
|
|
# note that this uses vllm installed by `pip`
|
|
FROM vllm-base AS test
|
|
|
|
ADD . /vllm-workspace/
|
|
|
|
ARG PYTHON_VERSION
|
|
|
|
ARG PIP_INDEX_URL UV_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
|
|
|
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
|
# Reference: https://github.com/astral-sh/uv/pull/1694
|
|
ENV UV_HTTP_TIMEOUT=500
|
|
ENV UV_INDEX_STRATEGY="unsafe-best-match"
|
|
# Use copy mode to avoid hardlink failures with Docker cache mounts
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# install development dependencies (for testing)
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
CUDA_MAJOR="${CUDA_VERSION%%.*}"; \
|
|
if [ "$CUDA_MAJOR" -ge 12 ]; then \
|
|
uv pip install --system -r requirements/dev.txt; \
|
|
fi
|
|
|
|
# install development dependencies (for testing)
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system -e tests/vllm_test_utils
|
|
|
|
# enable fast downloads from hf (for testing)
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv pip install --system hf_transfer
|
|
ENV HF_HUB_ENABLE_HF_TRANSFER 1
|
|
|
|
# Copy in the v1 package for testing (it isn't distributed yet)
|
|
COPY vllm/v1 /usr/local/lib/python${PYTHON_VERSION}/dist-packages/vllm/v1
|
|
|
|
# Source code is used in the `python_only_compile.sh` test
|
|
# We hide it inside `src/` so that this source code
|
|
# will not be imported by other tests
|
|
RUN mkdir src
|
|
RUN mv vllm src/vllm
|
|
#################### TEST IMAGE ####################
|
|
|
|
#################### OPENAI API SERVER ####################
|
|
# base openai image with additional requirements, for any subsequent openai-style images
|
|
FROM vllm-base AS vllm-openai-base
|
|
ARG TARGETPLATFORM
|
|
ARG INSTALL_KV_CONNECTORS=false
|
|
|
|
ARG PIP_INDEX_URL UV_INDEX_URL
|
|
ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
|
|
|
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
|
# Reference: https://github.com/astral-sh/uv/pull/1694
|
|
ENV UV_HTTP_TIMEOUT=500
|
|
|
|
COPY requirements/kv_connectors.txt requirements/kv_connectors.txt
|
|
|
|
# install additional dependencies for openai api server
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
if [ "$INSTALL_KV_CONNECTORS" = "true" ]; then \
|
|
uv pip install --system -r requirements/kv_connectors.txt; \
|
|
fi; \
|
|
if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
|
|
BITSANDBYTES_VERSION="0.42.0"; \
|
|
else \
|
|
BITSANDBYTES_VERSION="0.46.1"; \
|
|
fi; \
|
|
uv pip install --system accelerate hf_transfer modelscope "bitsandbytes>=${BITSANDBYTES_VERSION}" 'timm>=1.0.17' boto3 runai-model-streamer runai-model-streamer[s3]
|
|
|
|
ENV VLLM_USAGE_SOURCE production-docker-image
|
|
|
|
# define sagemaker first, so it is not default from `docker build`
|
|
FROM vllm-openai-base AS vllm-sagemaker
|
|
|
|
COPY examples/online_serving/sagemaker-entrypoint.sh .
|
|
RUN chmod +x sagemaker-entrypoint.sh
|
|
ENTRYPOINT ["./sagemaker-entrypoint.sh"]
|
|
|
|
FROM vllm-openai-base AS vllm-openai
|
|
|
|
ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"]
|
|
#################### OPENAI API SERVER ####################
|