diff --git a/CHANGES.md b/CHANGES.md index c16264b8ca4a..a0f2c04b1da0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -112,6 +112,7 @@ ### Package upgrades * [comment]: dependency upgrades (e.g. major version) and migrations that may introduce breaking change +* (Python) Upgraded the `vllm` extra to vLLM 0.32.0, which requires `openai>=2.25.0`, `transformers>=5.16.1`, and `torch==2.13.0`. The GPU image requirements no longer include vLLM. To install vLLM, use the `vllm` extra ([#41005](https://github.com/apache/beam/issues/41005)). ### API changes * [comment]: Public facing interface changes that may introduce breaking change or change of behaviors diff --git a/sdks/python/apache_beam/ml/inference/vllm_tests_requirements.txt b/sdks/python/apache_beam/ml/inference/vllm_tests_requirements.txt index ad5877edbec5..86981cabfcd7 100644 --- a/sdks/python/apache_beam/ml/inference/vllm_tests_requirements.txt +++ b/sdks/python/apache_beam/ml/inference/vllm_tests_requirements.txt @@ -17,7 +17,7 @@ torch>=1.7.1 torchvision>=0.8.2 pillow>=8.0.0 -transformers==4.57.1 +transformers>=5.16.1,<5.20.0 sentencepiece==0.2.1 google-cloud-monitoring>=2.27.0 -openai>=1.52.2 +openai>=2.25.0,<3.0.0 diff --git a/sdks/python/container/common.gradle b/sdks/python/container/common.gradle index da2871ab72bb..795997bb950c 100644 --- a/sdks/python/container/common.gradle +++ b/sdks/python/container/common.gradle @@ -66,7 +66,8 @@ def generatePythonRequirements = tasks.register("generatePythonRequirements") { if ("${project.ext.pythonVersion}" != "3.13" && "${project.ext.pythonVersion}" != "3.14") { // GPU requirements not used for any containers directly due to // licensing, but can be picked up by customers or other consumers for - // use. + // use. This list excludes the vllm extra because vLLM pins a torch version + // above the cap in the transformers extra. Install vLLM with that extra. exec { executable 'sh' args '-c', "cd ${rootDir} && ${runScriptsPath} " + @@ -74,7 +75,7 @@ def generatePythonRequirements = tasks.register("generatePythonRequirements") { "${files(configurations.sdkSourceTarball.files).singleFile} " + "gpu_image_requirements.txt " + "container/ml " + - "[gcp,dataframe,test,tensorflow,tfrecord,torch,transformers,vllm] " + + "[gcp,dataframe,test,tensorflow,tfrecord,torch,transformers] " + "${pipExtraOptions}" } } diff --git a/sdks/python/container/ml/py311/gpu_image_requirements.txt b/sdks/python/container/ml/py311/gpu_image_requirements.txt index 2074c6882e96..66b887e8765b 100644 --- a/sdks/python/container/ml/py311/gpu_image_requirements.txt +++ b/sdks/python/container/ml/py311/gpu_image_requirements.txt @@ -22,7 +22,6 @@ # Reach out to a committer if you need help. absl-py==2.5.1 -agent-detector==2.0.0 aiohappyeyeballs==2.7.1 aiohttp==3.14.5 aiosignal==1.4.0 @@ -31,49 +30,32 @@ annotated-types==0.8.0 anyio==4.16.0 arro3-core==0.9.1 asn1crypto==1.5.1 -astor==0.8.1 astunparse==1.6.3 attrs==26.1.0 backports.tarfile==1.2.0 beartype==0.22.9 beautifulsoup4==4.15.0 -blake3==1.0.11 bs4==0.0.2 build==1.6.1 cachetools==6.2.6 -cbor2==6.2.0.post2 certifi==2026.10.23 cffi==2.1.1 charset-normalizer==3.5.2 click==8.5.0 cloud-sql-python-connector==1.23.0 cloudpickle==3.1.2 -compressed-tensors==0.10.2 crcmod==1.7 cryptography==50.0.2 -cuda-bindings==13.4.4 -cuda-pathfinder==1.8.5 -cuda-toolkit==13.2.2 -cupy-cuda12x==14.2.0 Cython==3.3.1 defusedxml==0.7.1 deltalake==1.6.6 Deprecated==1.3.1 -depyf==0.19.0 -detect-installer==0.2.1 dill==0.3.1.1 -diskcache==5.6.3 distro==1.9.0 dnspython==2.9.1 docker==7.2.0 docstring_parser==0.18.0 -einops==0.8.2 -email-validator==2.3.0 execnet==2.1.2 -fastapi==0.162.0 -fastapi-cli==0.0.32 -fastapi-cloud-cli==0.26.0 -fastar==0.12.0 fastavro==1.13.1 fasteners==0.20 filelock==4.2.7 @@ -83,7 +65,6 @@ frozenlist==1.8.0 fsspec==2026.9.0 future==1.0.0 gast==0.7.0 -gguf==0.19.0 google-api-core==2.43.2 google-api-python-client==2.201.0 google-apitools==0.5.31 @@ -129,7 +110,6 @@ hpack==4.2.0 httpcore==1.0.9 httpcore2==2.16.0 httplib2==0.32.1 -httptools==0.9.0 httpx==0.28.1 httpx2==2.16.0 huggingface_hub==2.4.0 @@ -138,86 +118,50 @@ hypothesis==6.148.3 idna==3.20 importlib_metadata==10.1.0 iniconfig==2.3.1 -interegular==0.3.3 jaraco.classes==3.4.0 jaraco.context==6.1.2 jaraco.functools==4.6.0 jeepney==0.9.0 Jinja2==3.1.6 -jiter==0.18.0 joblib==1.6.0 jsonpickle==4.1.4 -jsonschema==4.26.0 -jsonschema-specifications==2025.9.1 keras==3.15.1 keyring==25.7.0 keyrings.google-artifactregistry-auth==1.1.2 -lark==1.2.2 libclang==18.1.1 linkify-it-py==2.2.0 -llguidance==0.7.30 -llvmlite==0.44.0 -lm-format-enforcer==0.10.12 markdown-it-py==4.2.0 MarkupSafe==3.0.4 mdit-py-plugins==0.6.1 mdurl==0.1.2 memray==1.19.3 -mistral_common==1.13.1 ml_dtypes==0.6.0 mmh3==5.3.1 mock==5.2.0 more-itertools==11.2.1 mpmath==1.3.0 -msgpack==1.2.4 -msgspec==0.22.0 multidict==7.2.1 namex==0.1.0 networkx==3.6.1 -ninja==1.13.2 nltk==3.10.4 -numba==0.61.2 numpy==2.2.6 -nvidia-cublas==13.4.1.3 nvidia-cublas-cu12==12.6.4.1 -nvidia-cuda-cccl==13.3.4.3.1 -nvidia-cuda-cupti==13.2.86 nvidia-cuda-cupti-cu12==12.6.80 -nvidia-cuda-nvrtc==13.2.86 nvidia-cuda-nvrtc-cu12==12.6.77 -nvidia-cuda-runtime==13.2.86 nvidia-cuda-runtime-cu12==12.6.77 nvidia-cudnn-cu12==9.5.1.17 -nvidia-cudnn-cu13==9.26.0.51 -nvidia-cufft==12.2.0.57 nvidia-cufft-cu12==11.3.0.4 -nvidia-cufile==1.17.1.22 nvidia-cufile-cu12==1.11.1.6 nvidia-curand-cu12==10.3.7.77 -nvidia-cusolver==12.2.0.11 nvidia-cusolver-cu12==11.7.1.2 -nvidia-cusparse==12.7.10.12 nvidia-cusparse-cu12==12.5.4.2 nvidia-cusparselt-cu12==0.6.3 -nvidia-cusparselt-cu13==0.8.1 nvidia-nccl-cu12==2.26.2 -nvidia-nccl-cu13==2.30.7 -nvidia-nvjitlink==13.4.92 nvidia-nvjitlink-cu12==12.6.85 -nvidia-nvshmem-cu13==3.7.2 -nvidia-nvtx==13.2.86 nvidia-nvtx-cu12==12.6.77 oauth2client==4.1.3 objsize==0.7.1 -openai==1.107.1 -openai-harmony==0.0.8 -opencv-python-headless==5.0.0.93 opentelemetry-api==1.45.2 -opentelemetry-exporter-http-transport==0.66b2 -opentelemetry-exporter-otlp-common==0.66b2 -opentelemetry-exporter-otlp-proto-common==1.45.2 -opentelemetry-exporter-otlp-proto-http==1.45.2 -opentelemetry-proto==1.45.2 opentelemetry-resourcedetector-gcp==1.14.0 opentelemetry-sdk==1.45.2 opentelemetry-semantic-conventions==0.66b2 @@ -225,34 +169,24 @@ opt_einsum==3.4.0 optree==0.20.0 oracledb==26.1.0 orjson==3.13.0 -outlines_core==0.2.10 packaging==26.3 pandas==2.3.3 parameterized==0.9.0 -partial-json-parser==0.2.1.1.post7 pg8000==1.31.6 pillow==13.0.0 pip==26.3 platformdirs==4.14.3 pluggy==1.7.0 portalocker==4.4.2 -prometheus-fastapi-instrumentator==8.1.0 -prometheus_client==0.26.0 propcache==0.5.4 proto-plus==1.29.0 protobuf==6.33.6 -psutil==7.2.2 psycopg2-binary==2.9.13 -py-cpuinfo==9.0.0 pyarrow==25.0.1 pyasn1==0.6.5 pyasn1_modules==0.4.2 -pybase64==1.5.1 -pycountry==26.2.16 pycparser==3.12 pydantic==2.14.2 -pydantic-extra-types==2.11.1 -pydantic-settings==2.16.2 pydantic_core==2.50.2 pydot==1.4.2 Pygments==2.21.0 @@ -267,43 +201,29 @@ pytest-timeout==2.4.0 pytest-xdist==3.8.0 python-dateutil==2.9.0.post0 python-dotenv==1.2.4 -python-json-logger==4.2.0 -python-multipart==0.0.33 python-tds==1.17.1 pytz==2026.6 PyYAML==6.0.3 -pyzmq==27.2.0 qdrant-client==1.20.0 -ray==2.59.0 -referencing==0.37.0 regex==2026.9.29 requests==2.34.2 requests-mock==1.12.1 rich==15.0.0 -rich-toolkit==0.20.6 -rignore==0.8.1 -rpds-py==2026.9.1 rsa==4.9.1 safetensors==0.8.0 scikit-learn==1.7.2 scipy==1.17.1 scramp==1.5.0 SecretStorage==3.5.0 -sentencepiece==0.2.2 -sentry-sdk==2.73.0 -setproctitle==1.3.8 setuptools==84.2.1 shellingham==1.5.4 six==1.17.0 sniffio==1.3.1 sortedcontainers==2.4.0 -soundfile==0.14.0 soupsieve==3.0.4 -soxr==1.1.0 SQLAlchemy==2.1.6 sqlalchemy_pytds==1.0.3 sqlparse==0.6.1 -starlette==1.10.0 sympy==1.14.0 tenacity==9.1.4 tensorflow==2.21.0 @@ -312,11 +232,8 @@ termcolor==3.3.0 testcontainers==4.15.0 textual==8.2.8 threadpoolctl==3.7.0 -tiktoken==0.14.0 tokenizers==0.23.3 torch==2.7.1 -torchaudio==2.7.1 -torchvision==0.22.1 tqdm==4.70.1 transformers==5.20.2 triton==3.3.1 @@ -327,16 +244,10 @@ typing_extensions==4.16.0 tzdata==2026.6 uritemplate==4.2.0 urllib3==2.8.0 -uvicorn==0.54.0 -uvloop==0.23.0 virtualenv-clone==0.5.7 -vllm==0.10.1.1 -watchfiles==1.3.0 websockets==17.4 wheel==0.48.0 wrapt==2.5.2 -xformers==0.0.31 -xgrammar==0.1.21 yarl==1.25.1 zipp==4.1.2 zstandard==0.25.0 diff --git a/sdks/python/container/ml/py312/gpu_image_requirements.txt b/sdks/python/container/ml/py312/gpu_image_requirements.txt index fee38bf598d2..12ef63ea17c9 100644 --- a/sdks/python/container/ml/py312/gpu_image_requirements.txt +++ b/sdks/python/container/ml/py312/gpu_image_requirements.txt @@ -22,7 +22,6 @@ # Reach out to a committer if you need help. absl-py==2.5.1 -agent-detector==2.0.0 aiohappyeyeballs==2.7.1 aiohttp==3.14.5 aiosignal==1.4.0 @@ -31,48 +30,31 @@ annotated-types==0.8.0 anyio==4.16.0 arro3-core==0.9.1 asn1crypto==1.5.1 -astor==0.8.1 astunparse==1.6.3 attrs==26.1.0 beartype==0.22.9 beautifulsoup4==4.15.0 -blake3==1.0.11 bs4==0.0.2 build==1.6.1 cachetools==6.2.6 -cbor2==6.2.0.post2 certifi==2026.10.23 cffi==2.1.1 charset-normalizer==3.5.2 click==8.5.0 cloud-sql-python-connector==1.23.0 cloudpickle==3.1.2 -compressed-tensors==0.10.2 crcmod==1.7 cryptography==50.0.2 -cuda-bindings==13.4.4 -cuda-pathfinder==1.8.5 -cuda-toolkit==13.2.2 -cupy-cuda12x==14.2.0 Cython==3.3.1 defusedxml==0.7.1 deltalake==1.6.6 Deprecated==3.0.1 -depyf==0.19.0 -detect-installer==0.2.1 dill==0.3.1.1 -diskcache==5.6.3 distro==1.9.0 dnspython==2.9.1 docker==7.2.0 docstring_parser==0.18.0 -einops==0.8.2 -email-validator==2.3.0 execnet==2.1.2 -fastapi==0.162.0 -fastapi-cli==0.0.32 -fastapi-cloud-cli==0.26.0 -fastar==0.12.0 fastavro==1.13.1 fasteners==0.20 filelock==4.2.7 @@ -82,7 +64,6 @@ frozenlist==1.8.0 fsspec==2026.9.0 future==1.0.0 gast==0.7.0 -gguf==0.19.0 google-api-core==2.43.2 google-api-python-client==2.201.0 google-apitools==0.5.31 @@ -128,7 +109,6 @@ hpack==4.2.0 httpcore==1.0.9 httpcore2==2.16.0 httplib2==0.32.1 -httptools==0.9.0 httpx==0.28.1 httpx2==2.16.0 huggingface_hub==2.4.0 @@ -136,86 +116,50 @@ hyperframe==6.1.0 hypothesis==6.148.3 idna==3.20 iniconfig==2.3.1 -interegular==0.3.3 jaraco.classes==3.4.0 jaraco.context==6.1.2 jaraco.functools==4.6.0 jeepney==0.9.0 Jinja2==3.1.6 -jiter==0.18.0 joblib==1.6.0 jsonpickle==4.1.4 -jsonschema==4.26.0 -jsonschema-specifications==2025.9.1 keras==3.15.1 keyring==25.7.0 keyrings.google-artifactregistry-auth==1.1.2 -lark==1.2.2 libclang==18.1.1 linkify-it-py==2.2.0 -llguidance==0.7.30 -llvmlite==0.44.0 -lm-format-enforcer==0.10.12 markdown-it-py==4.2.0 MarkupSafe==3.0.4 mdit-py-plugins==0.6.1 mdurl==0.1.2 memray==1.19.3 -mistral_common==1.13.1 ml_dtypes==0.6.0 mmh3==5.3.1 mock==5.2.0 more-itertools==11.2.1 mpmath==1.3.0 -msgpack==1.2.4 -msgspec==0.22.0 multidict==7.2.1 namex==0.1.0 networkx==3.7 -ninja==1.13.2 nltk==3.10.4 -numba==0.61.2 numpy==2.2.6 -nvidia-cublas==13.4.1.3 nvidia-cublas-cu12==12.6.4.1 -nvidia-cuda-cccl==13.3.4.3.1 -nvidia-cuda-cupti==13.2.86 nvidia-cuda-cupti-cu12==12.6.80 -nvidia-cuda-nvrtc==13.2.86 nvidia-cuda-nvrtc-cu12==12.6.77 -nvidia-cuda-runtime==13.2.86 nvidia-cuda-runtime-cu12==12.6.77 nvidia-cudnn-cu12==9.5.1.17 -nvidia-cudnn-cu13==9.26.0.51 -nvidia-cufft==12.2.0.57 nvidia-cufft-cu12==11.3.0.4 -nvidia-cufile==1.17.1.22 nvidia-cufile-cu12==1.11.1.6 nvidia-curand-cu12==10.3.7.77 -nvidia-cusolver==12.2.0.11 nvidia-cusolver-cu12==11.7.1.2 -nvidia-cusparse==12.7.10.12 nvidia-cusparse-cu12==12.5.4.2 nvidia-cusparselt-cu12==0.6.3 -nvidia-cusparselt-cu13==0.8.1 nvidia-nccl-cu12==2.26.2 -nvidia-nccl-cu13==2.30.7 -nvidia-nvjitlink==13.4.92 nvidia-nvjitlink-cu12==12.6.85 -nvidia-nvshmem-cu13==3.7.2 -nvidia-nvtx==13.2.86 nvidia-nvtx-cu12==12.6.77 oauth2client==4.1.3 objsize==0.7.1 -openai==1.107.1 -openai-harmony==0.0.8 -opencv-python-headless==5.0.0.93 opentelemetry-api==1.45.2 -opentelemetry-exporter-http-transport==0.66b2 -opentelemetry-exporter-otlp-common==0.66b2 -opentelemetry-exporter-otlp-proto-common==1.45.2 -opentelemetry-exporter-otlp-proto-http==1.45.2 -opentelemetry-proto==1.45.2 opentelemetry-resourcedetector-gcp==1.14.0 opentelemetry-sdk==1.45.2 opentelemetry-semantic-conventions==0.66b2 @@ -223,34 +167,24 @@ opt_einsum==3.4.0 optree==0.20.0 oracledb==26.1.0 orjson==3.13.0 -outlines_core==0.2.10 packaging==26.3 pandas==2.3.3 parameterized==0.9.0 -partial-json-parser==0.2.1.1.post7 pg8000==1.31.6 pillow==13.0.0 pip==26.3 platformdirs==4.14.3 pluggy==1.7.0 portalocker==4.4.2 -prometheus-fastapi-instrumentator==8.1.0 -prometheus_client==0.26.0 propcache==0.5.4 proto-plus==1.29.0 protobuf==6.33.6 -psutil==7.2.2 psycopg2-binary==2.9.13 -py-cpuinfo==9.0.0 pyarrow==25.0.1 pyasn1==0.6.5 pyasn1_modules==0.4.2 -pybase64==1.5.1 -pycountry==26.2.16 pycparser==3.12 pydantic==2.14.2 -pydantic-extra-types==2.11.1 -pydantic-settings==2.16.2 pydantic_core==2.50.2 pydot==1.4.2 Pygments==2.21.0 @@ -265,43 +199,29 @@ pytest-timeout==2.4.0 pytest-xdist==3.8.0 python-dateutil==2.9.0.post0 python-dotenv==1.2.4 -python-json-logger==4.2.0 -python-multipart==0.0.33 python-tds==1.17.1 pytz==2026.6 PyYAML==6.0.3 -pyzmq==27.2.0 qdrant-client==1.20.0 -ray==2.59.0 -referencing==0.37.0 regex==2026.9.29 requests==2.34.2 requests-mock==1.12.1 rich==15.0.0 -rich-toolkit==0.20.6 -rignore==0.8.1 -rpds-py==2026.9.1 rsa==4.9.1 safetensors==0.8.0 scikit-learn==1.7.2 scipy==1.18.1 scramp==1.5.0 SecretStorage==3.5.0 -sentencepiece==0.2.2 -sentry-sdk==2.73.0 -setproctitle==1.3.8 setuptools==79.0.1 shellingham==1.5.4 six==1.17.0 sniffio==1.3.1 sortedcontainers==2.4.0 -soundfile==0.14.0 soupsieve==3.0.4 -soxr==1.1.0 SQLAlchemy==2.1.6 sqlalchemy_pytds==1.0.3 sqlparse==0.6.1 -starlette==1.10.0 sympy==1.14.0 tenacity==9.1.4 tensorflow==2.21.0 @@ -310,11 +230,8 @@ termcolor==3.3.0 testcontainers==4.15.0 textual==8.2.8 threadpoolctl==3.7.0 -tiktoken==0.14.0 tokenizers==0.23.3 torch==2.7.1 -torchaudio==2.7.1 -torchvision==0.22.1 tqdm==4.70.1 transformers==5.20.2 triton==3.3.1 @@ -325,15 +242,9 @@ typing_extensions==4.16.0 tzdata==2026.6 uritemplate==4.2.0 urllib3==2.8.0 -uvicorn==0.54.0 -uvloop==0.23.0 virtualenv-clone==0.5.7 -vllm==0.10.1.1 -watchfiles==1.3.0 websockets==17.4 wheel==0.48.0 wrapt==2.5.2 -xformers==0.0.31 -xgrammar==0.1.21 yarl==1.25.1 zstandard==0.25.0 diff --git a/sdks/python/setup.py b/sdks/python/setup.py index 9f9618e30fbc..b289cd6b80f2 100644 --- a/sdks/python/setup.py +++ b/sdks/python/setup.py @@ -722,7 +722,7 @@ def get_portability_package_data(): ], 'milvus': milvus_dependency, 'qdrant': qdrant_dependency, - 'vllm': ['openai==1.107.1', 'vllm==0.10.1.1', 'triton==3.3.1'] + 'vllm': ['openai>=2.25.0,<3.0.0', 'vllm==0.32.0'] }, zip_safe=False, # PyPI package information.