From f89061fea8d2a843da5f2b46b0032c8022d0da02 Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 11:35:28 +0300 Subject: [PATCH 1/8] Drop non-local (GPU/CUDA and +local) pins from generated artifacts *Why* The artifacts are meant to install cleanly on a developer machine, but the ML environments carried pins that cannot: packages with a PEP 440 local version segment (torch==2.9.0+cu129, torch==2.7.0+cpu, flask==1.1.2+db1, horovod+db1) that are published only on an out-of-band index or rebuilt inside the cluster image, and GPU-only distributions (nvidia-* CUDA components, triton, flash-attn, deepspeed) that need an NVIDIA GPU and have no wheel at all on macOS. As a local constraint these never help and can only make uv sync unsatisfiable. *What* - envgen.py: _filtered now also drops any pin whose version carries a local segment ("+" in the version), and DROP/DROP_PREFIX gain the GPU-only names (triton, flash-attn, deepspeed) and the nvidia- prefix. Because _filtered feeds both build_pyproject and build_constraints, this cleans pyproject.toml and constraints.txt alike. - Remove the now-dead "+" branch in req() (such versions no longer reach it) and document the new rule in the module docstring and req(). - Add .github/scripts/test_envgen.py (stdlib unittest) covering the drops, the keeps (plain torch, numpy, ray, databricks-sdk), and that both build_* omit the dropped pins. - Regenerate the committed artifacts under the new rule: a delta strip that removes only the now-dropped lines (no re-fetch, so no unrelated version drift), leaving every surviving line byte-for-byte unchanged. Touches the ML and GPU-ML environments only; standard serverless/DBR envs had no such pins. *Verification* - python -m unittest test_envgen: 7 passing. - After regeneration: no nvidia-/triton/flash-attn/deepspeed/+local pins remain in python/; a plain torch pin and ordinary pins (numpy, pyarrow) are retained. - All 33 pyproject.toml re-parse as valid TOML. Co-authored-by: Isaac --- .github/scripts/envgen.py | 33 ++++++-- .github/scripts/test_envgen.py | 80 +++++++++++++++++++ .../13.3.x-cpu-ml-scala2.12/constraints.txt | 3 - .../13.3.x-cpu-ml-scala2.12/pyproject.toml | 3 - .../13.3.x-gpu-ml-scala2.12/constraints.txt | 4 - .../13.3.x-gpu-ml-scala2.12/pyproject.toml | 4 - .../14.3.x-cpu-ml-scala2.12/constraints.txt | 3 - .../14.3.x-cpu-ml-scala2.12/pyproject.toml | 3 - .../14.3.x-gpu-ml-scala2.12/constraints.txt | 5 -- .../14.3.x-gpu-ml-scala2.12/pyproject.toml | 5 -- .../15.4.x-cpu-ml-scala2.12/constraints.txt | 5 -- .../15.4.x-cpu-ml-scala2.12/pyproject.toml | 5 -- .../15.4.x-gpu-ml-scala2.12/constraints.txt | 19 ----- .../15.4.x-gpu-ml-scala2.12/pyproject.toml | 19 ----- .../16.4.x-cpu-ml-scala2.12/constraints.txt | 3 - .../16.4.x-cpu-ml-scala2.12/pyproject.toml | 3 - .../16.4.x-gpu-ml-scala2.12/constraints.txt | 18 ----- .../16.4.x-gpu-ml-scala2.12/pyproject.toml | 18 ----- .../17.3.x-cpu-ml-scala2.13/constraints.txt | 4 - .../17.3.x-cpu-ml-scala2.13/pyproject.toml | 4 - .../17.3.x-gpu-ml-scala2.13/constraints.txt | 17 ---- .../17.3.x-gpu-ml-scala2.13/pyproject.toml | 17 ---- .../18.0.x-cpu-ml-scala2.13/constraints.txt | 4 - .../18.0.x-cpu-ml-scala2.13/pyproject.toml | 4 - .../18.0.x-gpu-ml-scala2.13/constraints.txt | 21 ----- .../18.0.x-gpu-ml-scala2.13/pyproject.toml | 21 ----- .../18.1.x-cpu-ml-scala2.13/constraints.txt | 4 - .../18.1.x-cpu-ml-scala2.13/pyproject.toml | 4 - .../18.1.x-gpu-ml-scala2.13/constraints.txt | 21 ----- .../18.1.x-gpu-ml-scala2.13/pyproject.toml | 21 ----- .../18.2.x-cpu-ml-scala2.13/constraints.txt | 6 -- .../18.2.x-cpu-ml-scala2.13/pyproject.toml | 6 -- .../18.2.x-gpu-ml-scala2.13/constraints.txt | 23 ------ .../18.2.x-gpu-ml-scala2.13/pyproject.toml | 23 ------ .../dbr/19.x-cpu-ml-scala2.13/constraints.txt | 4 - .../dbr/19.x-cpu-ml-scala2.13/pyproject.toml | 4 - .../dbr/19.x-gpu-ml-scala2.13/constraints.txt | 20 ----- .../dbr/19.x-gpu-ml-scala2.13/pyproject.toml | 20 ----- .../serverless-v5-ml/constraints.txt | 4 - .../serverless-v5-ml/pyproject.toml | 4 - 40 files changed, 105 insertions(+), 384 deletions(-) create mode 100644 .github/scripts/test_envgen.py diff --git a/.github/scripts/envgen.py b/.github/scripts/envgen.py index 352802b..f9c984a 100644 --- a/.github/scripts/envgen.py +++ b/.github/scripts/envgen.py @@ -20,6 +20,11 @@ packages dropped be pip-installed locally or that ship vendored inside setuptools (see DROP / DROP_PREFIX). py4j is kept; pyspark is dropped so DB Connect supplies its own bundled build. + * Non-local builds - packages carrying a PEP 440 local version segment + dropped (``+cu129`` / ``+cpu`` / ``+db1``) resolve nowhere off the + cluster image, and GPU-only distributions (``nvidia-*`` CUDA + components, triton, flash-attn, deepspeed) need a GPU a dev + machine lacks. Both are dropped (see ``_filtered`` / DROP). * requires-python - taken from the runtime's Python version (major.minor). This module is imported by ``sync.py`` (the weekly discovery + reconciliation Action). @@ -33,8 +38,15 @@ # setuptools-vendored "autocommand", "inflect", "typeguard", "backports-tarfile", "importlib-resources", "more-itertools", + # GPU-only: need an NVIDIA GPU + CUDA toolchain a dev machine does not have, and + # have no wheel at all on macOS (the nvidia-* CUDA runtime libs are dropped by + # prefix below). Kept off local constraints — see _filtered. + "triton", "flash-attn", "deepspeed", } -DROP_PREFIX = ("jaraco-",) # jaraco.collections / jaraco.context / ... +DROP_PREFIX = ( + "jaraco-", # jaraco.collections / jaraco.context / ... (setuptools-vendored) + "nvidia-", # nvidia-*-cu12 and friends: CUDA runtime components, GPU-only +) def norm(name): @@ -44,10 +56,12 @@ def norm(name): def req(name, version): - """Render one requirement. Compatible-release ``~=`` allows patch bumps, but it - is invalid with a local version segment (PEP 440), and a local build like - ``+cpu`` / ``+cu118`` / ``+db1`` is exactly what distinguishes CPU vs GPU ML - images and Databricks-patched packages — so those are pinned exactly with ``==``. + """Render one requirement. Compatible-release ``~=`` allows patch bumps. + + Local version segments (``+cpu`` / ``+cu118`` / ``+db1``) never reach here: + ``~=`` is invalid with a local segment (PEP 440), and such builds resolve + nowhere off the cluster image, so ``_filtered`` drops them before an artifact is + built (see its comment). Every version passed in is therefore a plain release. ``databricks-sdk`` is a special case. It moves in lockstep with ``databricks-connect``, which is installed from PyPI in the dev group and declares @@ -60,8 +74,6 @@ def req(name, version): floor while letting databricks-connect's own metadata govern the exact version within that window. See issue #16. """ - if "+" in version: - return f"{name}=={version}" if name == "databricks-sdk": version = ".".join(version.split(".")[:2]) return f"{name}~={version}" @@ -81,8 +93,13 @@ def parse_requirements(text): def _filtered(pkgs): + # A PEP 440 local version segment (the part after "+", e.g. "+cu129", "+cpu", + # "+db1") marks a build published only on an out-of-band index + # (download.pytorch.org) or rebuilt inside the Databricks image. It resolves + # nowhere off the cluster and is impossible on macOS/CPU, so it is dropped + # alongside the name-based DROP set — never emitted as a local constraint. return {n: v for n, v in pkgs.items() - if n not in DROP and not n.startswith(DROP_PREFIX)} + if n not in DROP and not n.startswith(DROP_PREFIX) and "+" not in v} def dbconnect_pin(pkgs): diff --git a/.github/scripts/test_envgen.py b/.github/scripts/test_envgen.py new file mode 100644 index 0000000..3cbc70b --- /dev/null +++ b/.github/scripts/test_envgen.py @@ -0,0 +1,80 @@ +"""Unit tests for envgen.py (run: python -m unittest test_envgen).""" +import unittest + +from envgen import _filtered, build_constraints, build_pyproject, req + + +class FilterNonLocalTest(unittest.TestCase): + def test_drops_local_version_segment(self): + # A PEP 440 local version segment (+cuNNN / +cpu / +db1) names a build + # published only on an out-of-band index or rebuilt inside the image, so it + # cannot resolve on a developer machine and must not be emitted. + pkgs = { + "torch": "2.9.0+cu129", + "torchvision": "0.24.0+cu129", + "flask": "1.1.2+db1", + "horovod": "0.28.1+db1", + "numpy": "2.1.3", + } + self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) + + def test_drops_gpu_only_by_name(self): + # Every nvidia-* distribution is a CUDA runtime component; triton / + # flash-attn / deepspeed are GPU-only as well. + pkgs = { + "nvidia-cublas-cu12": "12.6.4.1", + "nvidia-cudnn-cu12": "9.5.1.17", + "triton": "3.3.0", + "flash-attn": "2.7.4.post1", + "deepspeed": "0.16.5", + "numpy": "2.1.3", + } + self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) + + def test_keeps_installable_pins(self): + # A plain torch pin resolves to a CPU/macOS wheel; ray is on PyPI and usable + # locally. Only the +local torch build is dropped, not torch itself. + pkgs = { + "torch": "2.7.0", + "ray": "2.37.0", + "databricks-sdk": "0.67.0", + "numpy": "2.1.3", + "pyarrow": "21.0.0", + } + self.assertEqual(_filtered(pkgs), pkgs) + + +class BuildArtifactsTest(unittest.TestCase): + pkgs = { + "numpy": "2.1.3", + "torch": "2.9.0+cu129", + "nvidia-cublas-cu12": "12.6.4.1", + "triton": "3.3.0", + "pyarrow": "21.0.0", + } + + def test_pyproject_omits_dropped(self): + out = build_pyproject(self.pkgs, "serverless-v4", "3.12.3") + self.assertIn("numpy~=2.1.3", out) + self.assertIn("pyarrow~=21.0.0", out) + for gone in ("torch", "nvidia-cublas-cu12", "triton", "+cu129"): + self.assertNotIn(gone, out) + + def test_constraints_omits_dropped(self): + out = build_constraints(self.pkgs, "serverless-v4") + self.assertIn("numpy~=2.1.3", out) + self.assertIn("pyarrow~=21.0.0", out) + for gone in ("torch", "nvidia-cublas-cu12", "triton", "+cu129"): + self.assertNotIn(gone, out) + + +class ReqTest(unittest.TestCase): + def test_compatible_release_default(self): + self.assertEqual(req("numpy", "2.1.3"), "numpy~=2.1.3") + + def test_databricks_sdk_widened_to_major_minor(self): + self.assertEqual(req("databricks-sdk", "0.67.0"), "databricks-sdk~=0.67") + + +if __name__ == "__main__": + unittest.main() diff --git a/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt index 756d6b9..808b17f 100644 --- a/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt @@ -68,7 +68,6 @@ fastapi~=0.98.0 fastjsonschema~=2.18.0 fasttext~=0.9.2 filelock~=3.6.0 -flask==1.1.2+db1 flatbuffers~=23.5.26 fonttools~=4.25.0 frozenlist~=1.4.0 @@ -276,8 +275,6 @@ tiktoken~=0.4.0 tokenize-rt~=4.2.1 tokenizers~=0.13.3 tomli~=2.0.1 -torch==1.13.1+cpu -torchvision==0.14.1+cpu tornado~=6.1 tqdm~=4.64.1 traitlets~=5.1.1 diff --git a/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml index 1fb4a1a..89c9451 100644 --- a/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml @@ -80,7 +80,6 @@ constraint-dependencies = [ "fastjsonschema~=2.18.0", "fasttext~=0.9.2", "filelock~=3.6.0", - "flask==1.1.2+db1", "flatbuffers~=23.5.26", "fonttools~=4.25.0", "frozenlist~=1.4.0", @@ -288,8 +287,6 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.13.3", "tomli~=2.0.1", - "torch==1.13.1+cpu", - "torchvision==0.14.1+cpu", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.1.1", diff --git a/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt index 3b8ec36..27f0af0 100644 --- a/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt @@ -69,8 +69,6 @@ fastapi~=0.98.0 fastjsonschema~=2.18.0 fasttext~=0.9.2 filelock~=3.6.0 -flash-attn~=1.0.7 -flask==1.1.2+db1 flatbuffers~=23.5.26 fonttools~=4.25.0 frozenlist~=1.4.0 @@ -277,8 +275,6 @@ tiktoken~=0.4.0 tokenize-rt~=4.2.1 tokenizers~=0.13.3 tomli~=2.0.1 -torch==1.13.1+cu117 -torchvision==0.14.1+cu117 tornado~=6.1 tqdm~=4.64.1 traitlets~=5.1.1 diff --git a/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml index d359c2b..5b5a264 100644 --- a/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml @@ -81,8 +81,6 @@ constraint-dependencies = [ "fastjsonschema~=2.18.0", "fasttext~=0.9.2", "filelock~=3.6.0", - "flash-attn~=1.0.7", - "flask==1.1.2+db1", "flatbuffers~=23.5.26", "fonttools~=4.25.0", "frozenlist~=1.4.0", @@ -289,8 +287,6 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.13.3", "tomli~=2.0.1", - "torch==1.13.1+cu117", - "torchvision==0.14.1+cu117", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.1.1", diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt index 95e1ec7..9429a54 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt @@ -56,7 +56,6 @@ datasets~=2.15.0 dbl-tempo~=0.1.26 debugpy~=1.6.7 decorator~=5.1.1 -deepspeed~=0.12.4 defusedxml~=0.7.1 dill~=0.3.6 diskcache~=5.6.3 @@ -281,8 +280,6 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.15.0 tomli~=2.0.1 -torch==2.0.1+cpu -torchvision==0.15.2+cpu tornado~=6.1 tqdm~=4.64.1 traitlets~=5.7.1 diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml index 239aeb1..16a72ab 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml @@ -68,7 +68,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.6.7", "decorator~=5.1.1", - "deepspeed~=0.12.4", "defusedxml~=0.7.1", "dill~=0.3.6", "diskcache~=5.6.3", @@ -293,8 +292,6 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.15.0", "tomli~=2.0.1", - "torch==2.0.1+cpu", - "torchvision==0.15.2+cpu", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.7.1", diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt index 1010196..52a9ba7 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt @@ -57,7 +57,6 @@ datasets~=2.15.0 dbl-tempo~=0.1.26 debugpy~=1.6.7 decorator~=5.1.1 -deepspeed~=0.12.4 defusedxml~=0.7.1 dill~=0.3.6 diskcache~=5.6.3 @@ -71,7 +70,6 @@ facets-overview~=1.1.1 fastjsonschema~=2.19.1 fasttext~=0.9.2 filelock~=3.9.0 -flash-attn~=2.3.6 flask~=2.2.5 flatbuffers~=23.5.26 fonttools~=4.25.0 @@ -284,13 +282,10 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.15.0 tomli~=2.0.1 -torch==2.0.1+cu118 -torchvision==0.15.2+cu118 tornado~=6.1 tqdm~=4.64.1 traitlets~=5.7.1 transformers~=4.36.1 -triton~=2.0.0 typer~=0.9.0 typing-extensions~=4.4.0 typing-inspect~=0.9.0 diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml index 33292db..f34a19d 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml @@ -69,7 +69,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.6.7", "decorator~=5.1.1", - "deepspeed~=0.12.4", "defusedxml~=0.7.1", "dill~=0.3.6", "diskcache~=5.6.3", @@ -83,7 +82,6 @@ constraint-dependencies = [ "fastjsonschema~=2.19.1", "fasttext~=0.9.2", "filelock~=3.9.0", - "flash-attn~=2.3.6", "flask~=2.2.5", "flatbuffers~=23.5.26", "fonttools~=4.25.0", @@ -296,13 +294,10 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.15.0", "tomli~=2.0.1", - "torch==2.0.1+cu118", - "torchvision==0.15.2+cu118", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.7.1", "transformers~=4.36.1", - "triton~=2.0.0", "typer~=0.9.0", "typing-extensions~=4.4.0", "typing-inspect~=0.9.0", diff --git a/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt index 06328a5..497b234 100644 --- a/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt @@ -59,7 +59,6 @@ datasets~=2.19.1 dbl-tempo~=0.1.26 debugpy~=1.6.7 decorator~=5.1.1 -deepspeed~=0.14.4 defusedxml~=0.7.1 deprecated~=1.2.14 dill~=0.3.6 @@ -102,7 +101,6 @@ h11~=0.14.0 h5py~=3.10.0 hjson~=3.1.0 holidays~=0.45 -horovod==0.28.1+db1 htmlmin~=0.1.12 httpcore~=1.0.5 httplib2~=0.20.2 @@ -192,7 +190,6 @@ notebook~=6.5.4 notebook-shim~=0.2.2 numba~=0.57.1 numpy~=1.23.5 -nvidia-ml-py~=12.555.43 oauthlib~=3.2.0 oci~=2.126.4 openai~=1.35.3 @@ -316,9 +313,7 @@ tiktoken~=0.5.2 tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.19.0 -torch==2.3.1+cpu torcheval~=0.0.7 -torchvision==0.18.1+cpu tornado~=6.3.2 tqdm~=4.65.0 traitlets~=5.7.1 diff --git a/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml index 5ad236b..c3eecd2 100644 --- a/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml @@ -71,7 +71,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.6.7", "decorator~=5.1.1", - "deepspeed~=0.14.4", "defusedxml~=0.7.1", "deprecated~=1.2.14", "dill~=0.3.6", @@ -114,7 +113,6 @@ constraint-dependencies = [ "h5py~=3.10.0", "hjson~=3.1.0", "holidays~=0.45", - "horovod==0.28.1+db1", "htmlmin~=0.1.12", "httpcore~=1.0.5", "httplib2~=0.20.2", @@ -204,7 +202,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.2", "numba~=0.57.1", "numpy~=1.23.5", - "nvidia-ml-py~=12.555.43", "oauthlib~=3.2.0", "oci~=2.126.4", "openai~=1.35.3", @@ -328,9 +325,7 @@ constraint-dependencies = [ "tinycss2~=1.2.1", "tokenize-rt~=4.2.1", "tokenizers~=0.19.0", - "torch==2.3.1+cpu", "torcheval~=0.0.7", - "torchvision==0.18.1+cpu", "tornado~=6.3.2", "tqdm~=4.65.0", "traitlets~=5.7.1", diff --git a/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt index 633fc25..da54784 100644 --- a/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt @@ -59,7 +59,6 @@ datasets~=2.19.1 dbl-tempo~=0.1.26 debugpy~=1.6.7 decorator~=5.1.1 -deepspeed~=0.14.4 defusedxml~=0.7.1 deprecated~=1.2.14 dill~=0.3.6 @@ -75,7 +74,6 @@ farama-notifications~=0.0.4 fastjsonschema~=2.20.0 fasttext~=0.9.2 filelock~=3.13.4 -flash-attn~=2.5.9.post1 flask~=2.2.5 flatbuffers~=24.3.25 fonttools~=4.25.0 @@ -104,7 +102,6 @@ h11~=0.14.0 h5py~=3.10.0 hjson~=3.1.0 holidays~=0.45 -horovod==0.28.1+db1 htmlmin~=0.1.12 httpcore~=1.0.5 httplib2~=0.20.2 @@ -194,19 +191,6 @@ notebook~=6.5.4 notebook-shim~=0.2.2 numba~=0.57.1 numpy~=1.23.5 -nvidia-cublas-cu12~=12.1.3.1 -nvidia-cuda-cupti-cu12~=12.1.105 -nvidia-cuda-nvrtc-cu12~=12.1.105 -nvidia-cuda-runtime-cu12~=12.1.105 -nvidia-cudnn-cu12~=8.9.2.26 -nvidia-cufft-cu12~=11.0.2.54 -nvidia-curand-cu12~=10.3.2.106 -nvidia-cusolver-cu12~=11.4.5.107 -nvidia-cusparse-cu12~=12.1.0.106 -nvidia-ml-py~=12.555.43 -nvidia-nccl-cu12~=2.20.5 -nvidia-nvjitlink-cu12~=12.5.82 -nvidia-nvtx-cu12~=12.1.105 oauthlib~=3.2.0 oci~=2.126.4 openai~=1.35.3 @@ -330,14 +314,11 @@ tiktoken~=0.5.2 tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.19.0 -torch==2.3.1+cu121 torcheval~=0.0.7 -torchvision==0.18.1+cu121 tornado~=6.3.2 tqdm~=4.65.0 traitlets~=5.7.1 transformers~=4.41.2 -triton~=2.3.1 typer~=0.9.4 typing-extensions~=4.10.0 typing-inspect~=0.9.0 diff --git a/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml index 1673bdb..0cf175b 100644 --- a/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml @@ -71,7 +71,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.6.7", "decorator~=5.1.1", - "deepspeed~=0.14.4", "defusedxml~=0.7.1", "deprecated~=1.2.14", "dill~=0.3.6", @@ -87,7 +86,6 @@ constraint-dependencies = [ "fastjsonschema~=2.20.0", "fasttext~=0.9.2", "filelock~=3.13.4", - "flash-attn~=2.5.9.post1", "flask~=2.2.5", "flatbuffers~=24.3.25", "fonttools~=4.25.0", @@ -116,7 +114,6 @@ constraint-dependencies = [ "h5py~=3.10.0", "hjson~=3.1.0", "holidays~=0.45", - "horovod==0.28.1+db1", "htmlmin~=0.1.12", "httpcore~=1.0.5", "httplib2~=0.20.2", @@ -206,19 +203,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.2", "numba~=0.57.1", "numpy~=1.23.5", - "nvidia-cublas-cu12~=12.1.3.1", - "nvidia-cuda-cupti-cu12~=12.1.105", - "nvidia-cuda-nvrtc-cu12~=12.1.105", - "nvidia-cuda-runtime-cu12~=12.1.105", - "nvidia-cudnn-cu12~=8.9.2.26", - "nvidia-cufft-cu12~=11.0.2.54", - "nvidia-curand-cu12~=10.3.2.106", - "nvidia-cusolver-cu12~=11.4.5.107", - "nvidia-cusparse-cu12~=12.1.0.106", - "nvidia-ml-py~=12.555.43", - "nvidia-nccl-cu12~=2.20.5", - "nvidia-nvjitlink-cu12~=12.5.82", - "nvidia-nvtx-cu12~=12.1.105", "oauthlib~=3.2.0", "oci~=2.126.4", "openai~=1.35.3", @@ -342,14 +326,11 @@ constraint-dependencies = [ "tinycss2~=1.2.1", "tokenize-rt~=4.2.1", "tokenizers~=0.19.0", - "torch==2.3.1+cu121", "torcheval~=0.0.7", - "torchvision==0.18.1+cu121", "tornado~=6.3.2", "tqdm~=4.65.0", "traitlets~=5.7.1", "transformers~=4.41.2", - "triton~=2.3.1", "typer~=0.9.4", "typing-extensions~=4.10.0", "typing-inspect~=0.9.0", diff --git a/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt index 93158e1..d2f9998 100644 --- a/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt @@ -66,7 +66,6 @@ datasets~=3.5.0 dbl-tempo~=0.1.26 debugpy~=1.6.7 decorator~=5.1.1 -deepspeed~=0.16.5 defusedxml~=0.7.1 deprecated~=1.2.18 dill~=0.3.8 @@ -350,11 +349,9 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.21.0 tomli~=2.0.1 -torch==2.6.0+cpu torch-optimizer~=0.3.0 torcheval~=0.0.7 torchmetrics~=1.6.0 -torchvision==0.21.0+cpu tornado~=6.4.1 tqdm~=4.66.4 traitlets~=5.14.3 diff --git a/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml index 71640e3..71d11cc 100644 --- a/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml @@ -78,7 +78,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.6.7", "decorator~=5.1.1", - "deepspeed~=0.16.5", "defusedxml~=0.7.1", "deprecated~=1.2.18", "dill~=0.3.8", @@ -362,11 +361,9 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.21.0", "tomli~=2.0.1", - "torch==2.6.0+cpu", "torch-optimizer~=0.3.0", "torcheval~=0.0.7", "torchmetrics~=1.6.0", - "torchvision==0.21.0+cpu", "tornado~=6.4.1", "tqdm~=4.66.4", "traitlets~=5.14.3", diff --git a/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt index b134562..e0b7d96 100644 --- a/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt @@ -65,7 +65,6 @@ datasets~=3.5.0 dbl-tempo~=0.1.26 debugpy~=1.6.7 decorator~=5.1.1 -deepspeed~=0.16.5 defusedxml~=0.7.1 deprecated~=1.2.18 dill~=0.3.8 @@ -82,7 +81,6 @@ fastapi~=0.115.12 fastjsonschema~=2.21.1 fasttext-wheel~=0.9.2 filelock~=3.13.1 -flash-attn~=2.7.4.post1 flask~=2.2.5 flatbuffers~=25.2.10 fonttools~=4.51.0 @@ -211,19 +209,6 @@ notebook~=7.0.8 notebook-shim~=0.2.3 numba~=0.59.1 numpy~=1.26.4 -nvidia-cublas-cu12~=12.4.5.8 -nvidia-cuda-cupti-cu12~=12.4.127 -nvidia-cuda-nvrtc-cu12~=12.4.127 -nvidia-cuda-runtime-cu12~=12.4.127 -nvidia-cudnn-cu12~=9.1.0.70 -nvidia-cufft-cu12~=11.2.1.3 -nvidia-curand-cu12~=10.3.5.147 -nvidia-cusolver-cu12~=11.6.1.9 -nvidia-cusparse-cu12~=12.3.1.170 -nvidia-cusparselt-cu12~=0.6.2 -nvidia-nccl-cu12~=2.21.5 -nvidia-nvjitlink-cu12~=12.4.127 -nvidia-nvtx-cu12~=12.4.127 oauthlib~=3.2.0 oci~=2.150.0 openai~=1.69.0 @@ -363,16 +348,13 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.21.0 tomli~=2.0.1 -torch==2.6.0+cu124 torch-optimizer~=0.3.0 torcheval~=0.0.7 torchmetrics~=1.6.0 -torchvision==0.21.0+cu124 tornado~=6.4.1 tqdm~=4.66.4 traitlets~=5.14.3 transformers~=4.50.2 -triton~=3.2.0 typer~=0.15.2 types-protobuf~=3.20.3 types-psutil~=5.9.0 diff --git a/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml index a1e2b33..fb095b5 100644 --- a/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml @@ -77,7 +77,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.6.7", "decorator~=5.1.1", - "deepspeed~=0.16.5", "defusedxml~=0.7.1", "deprecated~=1.2.18", "dill~=0.3.8", @@ -94,7 +93,6 @@ constraint-dependencies = [ "fastjsonschema~=2.21.1", "fasttext-wheel~=0.9.2", "filelock~=3.13.1", - "flash-attn~=2.7.4.post1", "flask~=2.2.5", "flatbuffers~=25.2.10", "fonttools~=4.51.0", @@ -223,19 +221,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.3", "numba~=0.59.1", "numpy~=1.26.4", - "nvidia-cublas-cu12~=12.4.5.8", - "nvidia-cuda-cupti-cu12~=12.4.127", - "nvidia-cuda-nvrtc-cu12~=12.4.127", - "nvidia-cuda-runtime-cu12~=12.4.127", - "nvidia-cudnn-cu12~=9.1.0.70", - "nvidia-cufft-cu12~=11.2.1.3", - "nvidia-curand-cu12~=10.3.5.147", - "nvidia-cusolver-cu12~=11.6.1.9", - "nvidia-cusparse-cu12~=12.3.1.170", - "nvidia-cusparselt-cu12~=0.6.2", - "nvidia-nccl-cu12~=2.21.5", - "nvidia-nvjitlink-cu12~=12.4.127", - "nvidia-nvtx-cu12~=12.4.127", "oauthlib~=3.2.0", "oci~=2.150.0", "openai~=1.69.0", @@ -375,16 +360,13 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.21.0", "tomli~=2.0.1", - "torch==2.6.0+cu124", "torch-optimizer~=0.3.0", "torcheval~=0.0.7", "torchmetrics~=1.6.0", - "torchvision==0.21.0+cu124", "tornado~=6.4.1", "tqdm~=4.66.4", "traitlets~=5.14.3", "transformers~=4.50.2", - "triton~=3.2.0", "typer~=0.15.2", "types-protobuf~=3.20.3", "types-psutil~=5.9.0", diff --git a/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt index ef6d4de..3563ada 100644 --- a/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt @@ -70,7 +70,6 @@ datasets~=3.5.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.16.5 defusedxml~=0.7.1 dill~=0.3.8 distlib~=0.3.9 @@ -214,7 +213,6 @@ notebook~=7.3.2 notebook-shim~=0.2.3 numba~=0.61.0 numpy~=2.1.3 -nvidia-nccl-cu12~=2.28.3 oauthlib~=3.2.0 oci~=2.160.2 openai~=1.69.0 @@ -359,11 +357,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.21.0 tomli~=2.0.1 -torch==2.7.0+cpu torch-optimizer~=0.3.0 torcheval~=0.0.7 torchmetrics~=1.6.0 -torchvision==0.22.0+cpu tornado~=6.4.2 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml index 9d75d2a..85d18d7 100644 --- a/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml @@ -82,7 +82,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.16.5", "defusedxml~=0.7.1", "dill~=0.3.8", "distlib~=0.3.9", @@ -226,7 +225,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.3", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-nccl-cu12~=2.28.3", "oauthlib~=3.2.0", "oci~=2.160.2", "openai~=1.69.0", @@ -371,11 +369,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.21.0", "tomli~=2.0.1", - "torch==2.7.0+cpu", "torch-optimizer~=0.3.0", "torcheval~=0.0.7", "torchmetrics~=1.6.0", - "torchvision==0.22.0+cpu", "tornado~=6.4.2", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/17.3.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/17.3.x-gpu-ml-scala2.13/constraints.txt index e1c88a5..c051b59 100644 --- a/python/dbr/17.3.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/17.3.x-gpu-ml-scala2.13/constraints.txt @@ -69,7 +69,6 @@ datasets~=3.5.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.16.5 defusedxml~=0.7.1 dill~=0.3.8 distlib~=0.3.9 @@ -85,7 +84,6 @@ fastapi~=0.117.1 fastjsonschema~=2.21.2 fasttext-wheel~=0.9.2 filelock~=3.13.1 -flash-attn~=2.7.4.post1 flask~=2.2.5 flatbuffers~=25.2.10 fonttools~=4.55.3 @@ -214,20 +212,6 @@ notebook~=7.3.2 notebook-shim~=0.2.3 numba~=0.61.0 numpy~=2.1.3 -nvidia-cublas-cu12~=12.6.4.1 -nvidia-cuda-cupti-cu12~=12.6.80 -nvidia-cuda-nvrtc-cu12~=12.6.77 -nvidia-cuda-runtime-cu12~=12.6.77 -nvidia-cudnn-cu12~=9.5.1.17 -nvidia-cufft-cu12~=11.3.0.4 -nvidia-cufile-cu12~=1.11.1.6 -nvidia-curand-cu12~=10.3.7.77 -nvidia-cusolver-cu12~=11.7.1.2 -nvidia-cusparse-cu12~=12.5.4.2 -nvidia-cusparselt-cu12~=0.6.3 -nvidia-nccl-cu12~=2.26.2 -nvidia-nvjitlink-cu12~=12.6.85 -nvidia-nvtx-cu12~=12.6.77 oauthlib~=3.2.0 oci~=2.160.2 openai~=1.69.0 @@ -381,7 +365,6 @@ tornado~=6.4.2 tqdm~=4.67.1 traitlets~=5.14.3 transformers~=4.51.3 -triton~=3.3.0 typer~=0.19.2 types-python-dateutil~=2.9.0.20250822 typing-extensions~=4.12.2 diff --git a/python/dbr/17.3.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/17.3.x-gpu-ml-scala2.13/pyproject.toml index 761f8a0..87aa7cb 100644 --- a/python/dbr/17.3.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/17.3.x-gpu-ml-scala2.13/pyproject.toml @@ -81,7 +81,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.16.5", "defusedxml~=0.7.1", "dill~=0.3.8", "distlib~=0.3.9", @@ -97,7 +96,6 @@ constraint-dependencies = [ "fastjsonschema~=2.21.2", "fasttext-wheel~=0.9.2", "filelock~=3.13.1", - "flash-attn~=2.7.4.post1", "flask~=2.2.5", "flatbuffers~=25.2.10", "fonttools~=4.55.3", @@ -226,20 +224,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.3", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-cublas-cu12~=12.6.4.1", - "nvidia-cuda-cupti-cu12~=12.6.80", - "nvidia-cuda-nvrtc-cu12~=12.6.77", - "nvidia-cuda-runtime-cu12~=12.6.77", - "nvidia-cudnn-cu12~=9.5.1.17", - "nvidia-cufft-cu12~=11.3.0.4", - "nvidia-cufile-cu12~=1.11.1.6", - "nvidia-curand-cu12~=10.3.7.77", - "nvidia-cusolver-cu12~=11.7.1.2", - "nvidia-cusparse-cu12~=12.5.4.2", - "nvidia-cusparselt-cu12~=0.6.3", - "nvidia-nccl-cu12~=2.26.2", - "nvidia-nvjitlink-cu12~=12.6.85", - "nvidia-nvtx-cu12~=12.6.77", "oauthlib~=3.2.0", "oci~=2.160.2", "openai~=1.69.0", @@ -393,7 +377,6 @@ constraint-dependencies = [ "tqdm~=4.67.1", "traitlets~=5.14.3", "transformers~=4.51.3", - "triton~=3.3.0", "typer~=0.19.2", "types-python-dateutil~=2.9.0.20250822", "typing-extensions~=4.12.2", diff --git a/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt index 26126ef..9aa6a9f 100644 --- a/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt @@ -67,7 +67,6 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 @@ -216,7 +215,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-nccl-cu12~=2.28.7 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -355,9 +353,7 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cpu torcheval~=0.0.7 -torchvision==0.24.0+cpu tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml index 866df78..74a91e8 100644 --- a/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml @@ -79,7 +79,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", @@ -228,7 +227,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-nccl-cu12~=2.28.7", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -367,9 +365,7 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cpu", "torcheval~=0.0.7", - "torchvision==0.24.0+cpu", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt index e867ce5..eb89ad3 100644 --- a/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt @@ -66,7 +66,6 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 @@ -83,7 +82,6 @@ fastapi~=0.121.2 fastjsonschema~=2.21.1 filelock~=3.17.0 filetype~=1.2.0 -flash-attn~=2.8.3 flask~=2.2.5 flatbuffers~=25.9.23 fonttools~=4.55.3 @@ -216,22 +214,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-cublas-cu12~=12.9.1.4 -nvidia-cuda-cupti-cu12~=12.9.79 -nvidia-cuda-nvrtc-cu12~=12.9.86 -nvidia-cuda-runtime-cu12~=12.9.79 -nvidia-cudnn-cu12~=9.10.2.21 -nvidia-cufft-cu12~=11.4.1.4 -nvidia-cufile-cu12~=1.14.1.1 -nvidia-curand-cu12~=10.3.10.19 -nvidia-cusolver-cu12~=11.7.5.82 -nvidia-cusparse-cu12~=12.5.10.65 -nvidia-cusparselt-cu12~=0.7.1 -nvidia-ml-py~=13.580.82 -nvidia-nccl-cu12~=2.27.5 -nvidia-nvjitlink-cu12~=12.9.86 -nvidia-nvshmem-cu12~=3.3.20 -nvidia-nvtx-cu12~=12.9.79 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -370,14 +352,11 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cu129 torcheval~=0.0.7 -torchvision==0.24.0+cu129 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 transformers~=4.57.1 -triton~=3.5.0 typer~=0.20.0 typer-slim~=0.20.0 types-python-dateutil~=2.9.0.20251108 diff --git a/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml index cf3cd37..edf4733 100644 --- a/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml @@ -78,7 +78,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", @@ -95,7 +94,6 @@ constraint-dependencies = [ "fastjsonschema~=2.21.1", "filelock~=3.17.0", "filetype~=1.2.0", - "flash-attn~=2.8.3", "flask~=2.2.5", "flatbuffers~=25.9.23", "fonttools~=4.55.3", @@ -228,22 +226,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-cublas-cu12~=12.9.1.4", - "nvidia-cuda-cupti-cu12~=12.9.79", - "nvidia-cuda-nvrtc-cu12~=12.9.86", - "nvidia-cuda-runtime-cu12~=12.9.79", - "nvidia-cudnn-cu12~=9.10.2.21", - "nvidia-cufft-cu12~=11.4.1.4", - "nvidia-cufile-cu12~=1.14.1.1", - "nvidia-curand-cu12~=10.3.10.19", - "nvidia-cusolver-cu12~=11.7.5.82", - "nvidia-cusparse-cu12~=12.5.10.65", - "nvidia-cusparselt-cu12~=0.7.1", - "nvidia-ml-py~=13.580.82", - "nvidia-nccl-cu12~=2.27.5", - "nvidia-nvjitlink-cu12~=12.9.86", - "nvidia-nvshmem-cu12~=3.3.20", - "nvidia-nvtx-cu12~=12.9.79", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -382,14 +364,11 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cu129", "torcheval~=0.0.7", - "torchvision==0.24.0+cu129", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", "transformers~=4.57.1", - "triton~=3.5.0", "typer~=0.20.0", "typer-slim~=0.20.0", "types-python-dateutil~=2.9.0.20251108", diff --git a/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt index fb7d7e9..533c05f 100644 --- a/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt @@ -67,7 +67,6 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 @@ -216,7 +215,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-nccl-cu12~=2.28.7 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -355,9 +353,7 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cpu torcheval~=0.0.7 -torchvision==0.24.0+cpu tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml index 7b32c62..a84c9ac 100644 --- a/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml @@ -79,7 +79,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", @@ -228,7 +227,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-nccl-cu12~=2.28.7", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -367,9 +365,7 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cpu", "torcheval~=0.0.7", - "torchvision==0.24.0+cpu", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt index e0751ce..869f1ba 100644 --- a/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt @@ -66,7 +66,6 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 @@ -83,7 +82,6 @@ fastapi~=0.121.2 fastjsonschema~=2.21.1 filelock~=3.17.0 filetype~=1.2.0 -flash-attn~=2.8.3 flask~=2.2.5 flatbuffers~=25.9.23 fonttools~=4.55.3 @@ -216,22 +214,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-cublas-cu12~=12.9.1.4 -nvidia-cuda-cupti-cu12~=12.9.79 -nvidia-cuda-nvrtc-cu12~=12.9.86 -nvidia-cuda-runtime-cu12~=12.9.79 -nvidia-cudnn-cu12~=9.10.2.21 -nvidia-cufft-cu12~=11.4.1.4 -nvidia-cufile-cu12~=1.14.1.1 -nvidia-curand-cu12~=10.3.10.19 -nvidia-cusolver-cu12~=11.7.5.82 -nvidia-cusparse-cu12~=12.5.10.65 -nvidia-cusparselt-cu12~=0.7.1 -nvidia-ml-py~=13.580.82 -nvidia-nccl-cu12~=2.27.5 -nvidia-nvjitlink-cu12~=12.9.86 -nvidia-nvshmem-cu12~=3.3.20 -nvidia-nvtx-cu12~=12.9.79 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -370,14 +352,11 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cu129 torcheval~=0.0.7 -torchvision==0.24.0+cu129 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 transformers~=4.57.1 -triton~=3.5.0 typer~=0.20.0 typer-slim~=0.20.0 types-python-dateutil~=2.9.0.20251108 diff --git a/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml index a693e10..3635ec6 100644 --- a/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml @@ -78,7 +78,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", @@ -95,7 +94,6 @@ constraint-dependencies = [ "fastjsonschema~=2.21.1", "filelock~=3.17.0", "filetype~=1.2.0", - "flash-attn~=2.8.3", "flask~=2.2.5", "flatbuffers~=25.9.23", "fonttools~=4.55.3", @@ -228,22 +226,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-cublas-cu12~=12.9.1.4", - "nvidia-cuda-cupti-cu12~=12.9.79", - "nvidia-cuda-nvrtc-cu12~=12.9.86", - "nvidia-cuda-runtime-cu12~=12.9.79", - "nvidia-cudnn-cu12~=9.10.2.21", - "nvidia-cufft-cu12~=11.4.1.4", - "nvidia-cufile-cu12~=1.14.1.1", - "nvidia-curand-cu12~=10.3.10.19", - "nvidia-cusolver-cu12~=11.7.5.82", - "nvidia-cusparse-cu12~=12.5.10.65", - "nvidia-cusparselt-cu12~=0.7.1", - "nvidia-ml-py~=13.580.82", - "nvidia-nccl-cu12~=2.27.5", - "nvidia-nvjitlink-cu12~=12.9.86", - "nvidia-nvshmem-cu12~=3.3.20", - "nvidia-nvtx-cu12~=12.9.79", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -382,14 +364,11 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cu129", "torcheval~=0.0.7", - "torchvision==0.24.0+cu129", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", "transformers~=4.57.1", - "triton~=3.5.0", "typer~=0.20.0", "typer-slim~=0.20.0", "types-python-dateutil~=2.9.0.20251108", diff --git a/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt index 2fd7b33..2e82b1a 100644 --- a/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt @@ -67,14 +67,12 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 dill~=0.3.8 distlib~=0.3.9 distro~=1.9.0 -distro-info==1.7+build1 dm-tree~=0.1.9 docstring-to-markdown~=0.11 einops~=0.8.1 @@ -218,7 +216,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-nccl-cu12~=2.28.7 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -282,7 +279,6 @@ pyright~=1.1.394 pyroaring~=1.0.3 pytesseract~=0.3.10 pytest~=8.3.5 -python-apt==2.7.7+ubuntu5.2 python-dateutil~=2.9.0.post0 python-dotenv~=1.2.1 python-editor~=1.0.4 @@ -358,9 +354,7 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cpu torcheval~=0.0.7 -torchvision==0.24.0+cpu tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml index 71fc715..9afb149 100644 --- a/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml @@ -79,14 +79,12 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", "dill~=0.3.8", "distlib~=0.3.9", "distro~=1.9.0", - "distro-info==1.7+build1", "dm-tree~=0.1.9", "docstring-to-markdown~=0.11", "einops~=0.8.1", @@ -230,7 +228,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-nccl-cu12~=2.28.7", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -294,7 +291,6 @@ constraint-dependencies = [ "pyroaring~=1.0.3", "pytesseract~=0.3.10", "pytest~=8.3.5", - "python-apt==2.7.7+ubuntu5.2", "python-dateutil~=2.9.0.post0", "python-dotenv~=1.2.1", "python-editor~=1.0.4", @@ -370,9 +366,7 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cpu", "torcheval~=0.0.7", - "torchvision==0.24.0+cpu", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt index 1a4295e..9ee96d0 100644 --- a/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt @@ -66,14 +66,12 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 dill~=0.3.8 distlib~=0.3.9 distro~=1.9.0 -distro-info==1.7+build1 dm-tree~=0.1.9 docstring-to-markdown~=0.11 einops~=0.8.1 @@ -85,7 +83,6 @@ fastapi~=0.121.2 fastjsonschema~=2.21.1 filelock~=3.17.0 filetype~=1.2.0 -flash-attn~=2.8.3 flask~=2.2.5 flatbuffers~=25.9.23 fonttools~=4.55.3 @@ -218,22 +215,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-cublas-cu12~=12.9.1.4 -nvidia-cuda-cupti-cu12~=12.9.79 -nvidia-cuda-nvrtc-cu12~=12.9.86 -nvidia-cuda-runtime-cu12~=12.9.79 -nvidia-cudnn-cu12~=9.10.2.21 -nvidia-cufft-cu12~=11.4.1.4 -nvidia-cufile-cu12~=1.14.1.1 -nvidia-curand-cu12~=10.3.10.19 -nvidia-cusolver-cu12~=11.7.5.82 -nvidia-cusparse-cu12~=12.5.10.65 -nvidia-cusparselt-cu12~=0.7.1 -nvidia-ml-py~=13.580.82 -nvidia-nccl-cu12~=2.27.5 -nvidia-nvjitlink-cu12~=12.9.86 -nvidia-nvshmem-cu12~=3.3.20 -nvidia-nvtx-cu12~=12.9.79 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -297,7 +278,6 @@ pyright~=1.1.394 pyroaring~=1.0.3 pytesseract~=0.3.10 pytest~=8.3.5 -python-apt==2.7.7+ubuntu5.2 python-dateutil~=2.9.0.post0 python-dotenv~=1.2.1 python-editor~=1.0.4 @@ -373,14 +353,11 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cu129 torcheval~=0.0.7 -torchvision==0.24.0+cu129 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 transformers~=4.57.1 -triton~=3.5.0 typer~=0.20.0 typer-slim~=0.20.0 types-python-dateutil~=2.9.0.20251108 diff --git a/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml index dd67227..7d8759b 100644 --- a/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml @@ -78,14 +78,12 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", "dill~=0.3.8", "distlib~=0.3.9", "distro~=1.9.0", - "distro-info==1.7+build1", "dm-tree~=0.1.9", "docstring-to-markdown~=0.11", "einops~=0.8.1", @@ -97,7 +95,6 @@ constraint-dependencies = [ "fastjsonschema~=2.21.1", "filelock~=3.17.0", "filetype~=1.2.0", - "flash-attn~=2.8.3", "flask~=2.2.5", "flatbuffers~=25.9.23", "fonttools~=4.55.3", @@ -230,22 +227,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-cublas-cu12~=12.9.1.4", - "nvidia-cuda-cupti-cu12~=12.9.79", - "nvidia-cuda-nvrtc-cu12~=12.9.86", - "nvidia-cuda-runtime-cu12~=12.9.79", - "nvidia-cudnn-cu12~=9.10.2.21", - "nvidia-cufft-cu12~=11.4.1.4", - "nvidia-cufile-cu12~=1.14.1.1", - "nvidia-curand-cu12~=10.3.10.19", - "nvidia-cusolver-cu12~=11.7.5.82", - "nvidia-cusparse-cu12~=12.5.10.65", - "nvidia-cusparselt-cu12~=0.7.1", - "nvidia-ml-py~=13.580.82", - "nvidia-nccl-cu12~=2.27.5", - "nvidia-nvjitlink-cu12~=12.9.86", - "nvidia-nvshmem-cu12~=3.3.20", - "nvidia-nvtx-cu12~=12.9.79", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -309,7 +290,6 @@ constraint-dependencies = [ "pyroaring~=1.0.3", "pytesseract~=0.3.10", "pytest~=8.3.5", - "python-apt==2.7.7+ubuntu5.2", "python-dateutil~=2.9.0.post0", "python-dotenv~=1.2.1", "python-editor~=1.0.4", @@ -385,14 +365,11 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cu129", "torcheval~=0.0.7", - "torchvision==0.24.0+cu129", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", "transformers~=4.57.1", - "triton~=3.5.0", "typer~=0.20.0", "typer-slim~=0.20.0", "types-python-dateutil~=2.9.0.20251108", diff --git a/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt index 87f8cb7..2d68fac 100644 --- a/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt @@ -52,7 +52,6 @@ datasets~=4.8.5 dbl-tempo~=0.1.26 debugpy~=1.8.16 decorator~=5.2.1 -deepspeed~=0.19.0 deltalake~=1.5.1 deprecated~=1.3.1 dill~=0.4.0 @@ -164,7 +163,6 @@ nltk~=3.9.2 nodeenv~=1.10.0 numba~=0.62.1 numpy~=2.3.4 -nvidia-nccl-cu12~=2.30.4 oauthlib~=3.2.0 openai~=2.37.0 opencensus~=0.11.4 @@ -272,9 +270,7 @@ tiktoken~=0.13.0 tokenize-rt~=6.2.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.12.0+cpu torcheval~=0.0.7 -torchvision==0.27.0+cpu tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml index 9e74580..f8001fe 100644 --- a/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml @@ -64,7 +64,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.16", "decorator~=5.2.1", - "deepspeed~=0.19.0", "deltalake~=1.5.1", "deprecated~=1.3.1", "dill~=0.4.0", @@ -176,7 +175,6 @@ constraint-dependencies = [ "nodeenv~=1.10.0", "numba~=0.62.1", "numpy~=2.3.4", - "nvidia-nccl-cu12~=2.30.4", "oauthlib~=3.2.0", "openai~=2.37.0", "opencensus~=0.11.4", @@ -284,9 +282,7 @@ constraint-dependencies = [ "tokenize-rt~=6.2.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.12.0+cpu", "torcheval~=0.0.7", - "torchvision==0.27.0+cpu", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt index b613334..d21a603 100644 --- a/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt @@ -54,7 +54,6 @@ datasets~=4.8.5 dbl-tempo~=0.1.26 debugpy~=1.8.16 decorator~=5.2.1 -deepspeed~=0.19.0 deltalake~=1.5.1 deprecated~=1.3.1 dill~=0.4.0 @@ -66,7 +65,6 @@ executing~=2.2.1 farama-notifications~=0.0.6 fastapi~=0.136.3 filelock~=3.20.0 -flash-attn~=2.8.3 flask~=2.2.5 fonttools~=4.60.1 frozenlist~=1.8.0 @@ -167,23 +165,6 @@ nltk~=3.9.2 nodeenv~=1.10.0 numba~=0.62.1 numpy~=2.3.4 -nvidia-cublas~=13.1.1.3 -nvidia-cuda-cupti~=13.0.85 -nvidia-cuda-nvrtc~=13.0.88 -nvidia-cuda-runtime~=13.0.96 -nvidia-cudnn-cu13~=9.20.0.48 -nvidia-cufft~=12.0.0.61 -nvidia-cufile~=1.15.1.6 -nvidia-curand~=10.4.0.35 -nvidia-cusolver~=12.0.4.66 -nvidia-cusparse~=12.6.3.3 -nvidia-cusparselt-cu13~=0.8.1 -nvidia-ml-py~=13.580.82 -nvidia-nccl-cu12~=2.30.4 -nvidia-nccl-cu13~=2.29.7 -nvidia-nvjitlink~=13.0.88 -nvidia-nvshmem-cu13~=3.4.5 -nvidia-nvtx~=13.0.85 oauthlib~=3.2.0 openai~=2.37.0 opencensus~=0.11.4 @@ -298,7 +279,6 @@ tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 transformers~=4.57.6 -triton~=3.7.0 typer~=0.25.1 typing-extensions~=4.15.0 typing-inspect~=0.9.0 diff --git a/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml index d396144..0a97eaf 100644 --- a/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml @@ -66,7 +66,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.16", "decorator~=5.2.1", - "deepspeed~=0.19.0", "deltalake~=1.5.1", "deprecated~=1.3.1", "dill~=0.4.0", @@ -78,7 +77,6 @@ constraint-dependencies = [ "farama-notifications~=0.0.6", "fastapi~=0.136.3", "filelock~=3.20.0", - "flash-attn~=2.8.3", "flask~=2.2.5", "fonttools~=4.60.1", "frozenlist~=1.8.0", @@ -179,23 +177,6 @@ constraint-dependencies = [ "nodeenv~=1.10.0", "numba~=0.62.1", "numpy~=2.3.4", - "nvidia-cublas~=13.1.1.3", - "nvidia-cuda-cupti~=13.0.85", - "nvidia-cuda-nvrtc~=13.0.88", - "nvidia-cuda-runtime~=13.0.96", - "nvidia-cudnn-cu13~=9.20.0.48", - "nvidia-cufft~=12.0.0.61", - "nvidia-cufile~=1.15.1.6", - "nvidia-curand~=10.4.0.35", - "nvidia-cusolver~=12.0.4.66", - "nvidia-cusparse~=12.6.3.3", - "nvidia-cusparselt-cu13~=0.8.1", - "nvidia-ml-py~=13.580.82", - "nvidia-nccl-cu12~=2.30.4", - "nvidia-nccl-cu13~=2.29.7", - "nvidia-nvjitlink~=13.0.88", - "nvidia-nvshmem-cu13~=3.4.5", - "nvidia-nvtx~=13.0.85", "oauthlib~=3.2.0", "openai~=2.37.0", "opencensus~=0.11.4", @@ -310,7 +291,6 @@ constraint-dependencies = [ "tqdm~=4.67.1", "traitlets~=5.14.3", "transformers~=4.57.6", - "triton~=3.7.0", "typer~=0.25.1", "typing-extensions~=4.15.0", "typing-inspect~=0.9.0", diff --git a/python/serverless/serverless-v5-ml/constraints.txt b/python/serverless/serverless-v5-ml/constraints.txt index fbe29bd..6d8cdee 100644 --- a/python/serverless/serverless-v5-ml/constraints.txt +++ b/python/serverless/serverless-v5-ml/constraints.txt @@ -66,7 +66,6 @@ datasets~=4.3.0 dbl-tempo~=0.1.26 debugpy~=1.8.11 decorator~=5.1.1 -deepspeed~=0.18.1 defusedxml~=0.7.1 deltalake~=1.1.4 deprecated~=1.2.18 @@ -210,7 +209,6 @@ notebook~=7.3.2 notebook-shim~=0.2.4 numba~=0.61.0 numpy~=2.1.3 -nvidia-nccl-cu12~=2.28.7 oauthlib~=3.2.0 oci~=2.163.1 openai~=2.7.0 @@ -347,9 +345,7 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 -torch==2.9.0+cpu torcheval~=0.0.7 -torchvision==0.24.0+cpu tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/serverless/serverless-v5-ml/pyproject.toml b/python/serverless/serverless-v5-ml/pyproject.toml index 7d76472..2730c8e 100644 --- a/python/serverless/serverless-v5-ml/pyproject.toml +++ b/python/serverless/serverless-v5-ml/pyproject.toml @@ -78,7 +78,6 @@ constraint-dependencies = [ "dbl-tempo~=0.1.26", "debugpy~=1.8.11", "decorator~=5.1.1", - "deepspeed~=0.18.1", "defusedxml~=0.7.1", "deltalake~=1.1.4", "deprecated~=1.2.18", @@ -222,7 +221,6 @@ constraint-dependencies = [ "notebook-shim~=0.2.4", "numba~=0.61.0", "numpy~=2.1.3", - "nvidia-nccl-cu12~=2.28.7", "oauthlib~=3.2.0", "oci~=2.163.1", "openai~=2.7.0", @@ -359,9 +357,7 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", - "torch==2.9.0+cpu", "torcheval~=0.0.7", - "torchvision==0.24.0+cpu", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", From 1b0f7c1fb33e672038ba77f495c28a0e4c2d316b Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 11:45:49 +0300 Subject: [PATCH 2/8] Document the drop rules in README; guard dbconnect pin normalization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *Why* Review feedback: the README's DBR-ML section still said local (+local) builds are "pinned with ==", which the envgen change made false — they are now dropped. The repo also had no single place documenting what gets dropped and why. *What* - README: fix the stale DBR-ML sentence and add a "What's dropped" section enumerating the four drop categories (system/OS, setuptools-vendored, +local builds, GPU-only distributions), noting torch/torchvision are left unpinned in ML envs, and cross-linking it from the Artifacts section. - test_envgen.py: add DbconnectPinTest covering that dbconnect_pin normalizes to ~=MAJOR.0 (so a +local release-notes version is stripped, never reaching an artifact) and returns None when databricks-connect is absent. *Verification* - python -m unittest test_envgen: 9 passing. - README renders the new section; both in-page links resolve to #whats-dropped. Co-authored-by: Isaac --- .github/scripts/test_envgen.py | 17 ++++++++++++++++- README.md | 33 +++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/.github/scripts/test_envgen.py b/.github/scripts/test_envgen.py index 3cbc70b..aef914e 100644 --- a/.github/scripts/test_envgen.py +++ b/.github/scripts/test_envgen.py @@ -1,7 +1,7 @@ """Unit tests for envgen.py (run: python -m unittest test_envgen).""" import unittest -from envgen import _filtered, build_constraints, build_pyproject, req +from envgen import _filtered, build_constraints, build_pyproject, dbconnect_pin, req class FilterNonLocalTest(unittest.TestCase): @@ -76,5 +76,20 @@ def test_databricks_sdk_widened_to_major_minor(self): self.assertEqual(req("databricks-sdk", "0.67.0"), "databricks-sdk~=0.67") +class DbconnectPinTest(unittest.TestCase): + def test_strips_local_version_segment(self): + # databricks-connect is installed from the dev group as a plain PyPI release; + # the pin is normalized to ~=MAJOR.0, so a local segment in the release-notes + # version is discarded and never lands in an artifact. dbconnect_pin reads raw + # pkgs (not _filtered), so this guards that the normalization does the stripping. + self.assertEqual( + dbconnect_pin({"databricks-connect": "17.3.1+db1"}), + "databricks-connect~=17.0", + ) + + def test_none_when_absent(self): + self.assertIsNone(dbconnect_pin({"numpy": "2.1.3"})) + + if __name__ == "__main__": unittest.main() diff --git a/README.md b/README.md index 44d01d7..fdc6ef3 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,31 @@ serverless), so resolving a target to its artifact is a deterministic lookup. so the pip path is constraints-only unless DB Connect is installed explicitly. Both are a mechanical transform of the official package list published in the -Databricks release notes — see `.github/scripts/envgen.py` for the rules. +Databricks release notes — see [What's dropped](#whats-dropped) and +`.github/scripts/envgen.py` for the rules. + +## What's dropped + +Not every package in the release-notes list becomes a local constraint. `envgen.py` +drops the ones that can't — or shouldn't — install on a developer machine, so that +`uv sync` / `pip install -c` stay resolvable. These are removed from **both** +`pyproject.toml` and `constraints.txt`: + +- **System / OS packages** — `pip`, `pyspark` (DB Connect supplies its own bundled + build; `py4j` is kept), `dbus-python`, `pygobject`, `unattended-upgrades`. +- **setuptools-vendored** — `more-itertools`, `jaraco-*`, `inflect`, `typeguard`, … + — shipped inside setuptools, not installed standalone. +- **Local-version builds** (`+cpu` / `+cuXXX` / `+db1`) — published only on an + out-of-band index (`download.pytorch.org`) or rebuilt inside the Databricks image, + so they resolve nowhere off the cluster, and `~=` is invalid with a `+local` + segment. This drops the ML `torch` / `torchvision` builds, leaving those packages + unpinned locally (a plain, non-`+local` pin is kept when the tables list one). +- **GPU-only distributions** — the `nvidia-*` CUDA runtime components, plus `triton`, + `flash-attn`, `deepspeed`: they need an NVIDIA GPU and CUDA toolchain a dev machine + lacks, and have no macOS wheel at all. + +The exact lists live in `DROP` / `DROP_PREFIX` and `_filtered()` in +`.github/scripts/envgen.py`. ## How it stays in sync @@ -77,9 +101,10 @@ is best-effort. Nobody hand-edits the `python/` artifacts. - **DBR ML (CPU + GPU)** — for each `*-ml` runtime, a separate environment is produced per cluster type: `.x-cpu-ml-…` and `.x-gpu-ml-…`. Newer ML pages link downloadable `requirements-{cpu,gpu}-*.txt`; older ones render inline tables under - `python-libraries-on-{cpu,gpu}-clusters`. The GPU set carries the CUDA builds - (e.g. `torch==…+cu118`); the CPU set carries `…+cpu`. Local builds are pinned with - `==` (compatible-release `~=` is invalid with a `+local` segment). + `python-libraries-on-{cpu,gpu}-clusters`. The GPU set lists the CUDA builds + (e.g. `torch …+cu118`) and the CPU set lists `…+cpu`, but these `+local` builds are + dropped from the generated artifacts (see [What's dropped](#whats-dropped)) — they + resolve nowhere off the cluster image. The Action runs it; you only need to run it locally to debug: From 6b312d4a41b0ee81f016c58f717c6fb0badfcb56 Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 11:51:49 +0300 Subject: [PATCH 3/8] Reconcile README PyTorch-index note with the drop policy; doc tweaks *Why* Review nits: the README's PyTorch-index roadmap item read as if the +cpu/+cuXXX torch builds are pinned, contradicting the new drop policy (a maintainer could reintroduce the dropped pins). Minor terminology/comment accuracy points were raised alongside it. *What* - README: rewrite the PyTorch-index Status item to state that the +cpu/+cuXXX torch/torchvision builds are dropped today (cross-linking "What's dropped"), and that adding PyTorch's index is the future path to pin-and-resolve them instead. - envgen.py: relabel the module-docstring bullet to "Local-version and GPU builds dropped" (matches the README's clearer terminology) and narrow the nvidia- prefix comment to be accurate (it also catches the pure-Python nvidia-ml-py). *Verification* - python -m unittest test_envgen: 9 passing (no logic change). - README's three "What's dropped" links resolve to the section anchor. Co-authored-by: Isaac --- .github/scripts/envgen.py | 8 ++++---- README.md | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/scripts/envgen.py b/.github/scripts/envgen.py index f9c984a..fd00a4f 100644 --- a/.github/scripts/envgen.py +++ b/.github/scripts/envgen.py @@ -20,10 +20,10 @@ packages dropped be pip-installed locally or that ship vendored inside setuptools (see DROP / DROP_PREFIX). py4j is kept; pyspark is dropped so DB Connect supplies its own bundled build. - * Non-local builds - packages carrying a PEP 440 local version segment - dropped (``+cu129`` / ``+cpu`` / ``+db1``) resolve nowhere off the + * Local-version and - packages carrying a PEP 440 local version segment + GPU builds dropped (``+cu129`` / ``+cpu`` / ``+db1``) resolve nowhere off the cluster image, and GPU-only distributions (``nvidia-*`` CUDA - components, triton, flash-attn, deepspeed) need a GPU a dev + wheels, triton, flash-attn, deepspeed) need a GPU a dev machine lacks. Both are dropped (see ``_filtered`` / DROP). * requires-python - taken from the runtime's Python version (major.minor). @@ -45,7 +45,7 @@ } DROP_PREFIX = ( "jaraco-", # jaraco.collections / jaraco.context / ... (setuptools-vendored) - "nvidia-", # nvidia-*-cu12 and friends: CUDA runtime components, GPU-only + "nvidia-", # nvidia-* CUDA wheels (and nvidia-ml-py): GPU tooling, no local use ) diff --git a/README.md b/README.md index fdc6ef3..ff38790 100644 --- a/README.md +++ b/README.md @@ -129,5 +129,7 @@ doc for the full rationale. - [x] Serverless (v1–vN) — auto-discovered + synced; ML base environment (`-ml`) when published (v5+) - [x] DBR standard runtimes — auto-discovered from the index + HTML-table parsing - [x] DBR ML runtimes (CPU + GPU) — downloadable requirements or inline tables -- [ ] PyTorch index config in ML `pyproject.toml` (so `uv` fetches the matching - `+cpu` / `+cuXXX` torch build, not just pins it) +- [ ] PyTorch index config in ML `pyproject.toml`. Today the `+cpu` / `+cuXXX` + torch/torchvision builds are dropped (see [What's dropped](#whats-dropped)); + adding PyTorch's index would let `uv` resolve the matching build, so they could + be pinned instead of dropped. From 5c4d6a700b2704af5b4d3ae8c29b7c7ef923a88c Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 11:56:43 +0300 Subject: [PATCH 4/8] Rename README drop section to "What is intentionally not included" *Why* Clearer, less blunt heading for the section that lists the packages the generator leaves out. *What* - README: rename "What's dropped" to "What is intentionally not included" and repoint the three in-page links to the new anchor. *Verification* - All three links resolve to #what-is-intentionally-not-included; no stale #whats-dropped anchors remain. Co-authored-by: Isaac --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ff38790..6d584d3 100644 --- a/README.md +++ b/README.md @@ -51,10 +51,10 @@ serverless), so resolving a target to its artifact is a deterministic lookup. so the pip path is constraints-only unless DB Connect is installed explicitly. Both are a mechanical transform of the official package list published in the -Databricks release notes — see [What's dropped](#whats-dropped) and +Databricks release notes — see [what is intentionally not included](#what-is-intentionally-not-included) and `.github/scripts/envgen.py` for the rules. -## What's dropped +## What is intentionally not included Not every package in the release-notes list becomes a local constraint. `envgen.py` drops the ones that can't — or shouldn't — install on a developer machine, so that @@ -103,7 +103,7 @@ is best-effort. Nobody hand-edits the `python/` artifacts. downloadable `requirements-{cpu,gpu}-*.txt`; older ones render inline tables under `python-libraries-on-{cpu,gpu}-clusters`. The GPU set lists the CUDA builds (e.g. `torch …+cu118`) and the CPU set lists `…+cpu`, but these `+local` builds are - dropped from the generated artifacts (see [What's dropped](#whats-dropped)) — they + dropped from the generated artifacts (see [what is intentionally not included](#what-is-intentionally-not-included)) — they resolve nowhere off the cluster image. The Action runs it; you only need to run it locally to debug: @@ -130,6 +130,6 @@ doc for the full rationale. - [x] DBR standard runtimes — auto-discovered from the index + HTML-table parsing - [x] DBR ML runtimes (CPU + GPU) — downloadable requirements or inline tables - [ ] PyTorch index config in ML `pyproject.toml`. Today the `+cpu` / `+cuXXX` - torch/torchvision builds are dropped (see [What's dropped](#whats-dropped)); + torch/torchvision builds are dropped (see [what is intentionally not included](#what-is-intentionally-not-included)); adding PyTorch's index would let `uv` resolve the matching build, so they could be pinned instead of dropped. From 04534b5673ecfbd0676d3ee3e0ccd0e841607313 Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 14:56:25 +0300 Subject: [PATCH 5/8] Strip +local segments instead of dropping; address review *Why* Review feedback (Anton): the blanket "drop any pin with a +local segment" rule was too broad. It dropped Databricks rebuilds of ordinary PyPI releases (flask==1.1.2+db1, horovod==0.28.1+db1) and unpinned torch in 17 of 19 ML envs, with the CPU/GPU survivors inverted from the stated reasoning. For a repo whose purpose is local reproduction, stripping the segment preserves fidelity and stays resolvable. *What* - envgen.py: req() now strips a PEP 440 local segment and pins the base release (torch 2.9.0+cu129 -> torch~=2.9.0, flask 1.1.2+db1 -> flask~=1.1.2); _filtered no longer drops +local pins. Genuine Ubuntu system packages whose base is not on PyPI (python-apt, distro-info) are added to DROP by name so stripping can't resurrect them. GPU-only name/prefix drops (nvidia-*, triton, flash-attn, deepspeed) unchanged. - Regenerated all artifacts from origin/main under the new rules: +local pins are stripped to base (== -> ~=), GPU-only and system packages dropped. torch/torchvision are now consistently pinned across CPU and GPU ML envs; flask/horovod no longer differ by incidental docs formatting. - test_envgen.py: cover strip behavior and system-package drops; assert on rendered pins (torch~=2.9.0, and torchmetrics kept) rather than bare substrings, which previously could misfire on torch*/triton* neighbors. Renamed FilterNonLocalTest -> FilterTest for scope accuracy. - README: "What is intentionally not included" now documents strip-vs-drop, adds the system packages, corrects the nvidia-ml-py rationale, and the DBR-ML + PyTorch-index notes reflect base-pinning. *Verification* - python -m unittest test_envgen: 11 passing. - No +local segments remain under python/; no nvidia-*/triton/flash-attn/deepspeed/ python-apt/distro-info pins remain; torch/flask/horovod re-pinned as ~=base. - All 33 pyproject.toml re-parse as valid TOML. Co-authored-by: Isaac --- .github/scripts/envgen.py | 43 +++++---- .github/scripts/test_envgen.py | 88 ++++++++++--------- README.md | 54 ++++++------ .../13.3.x-cpu-ml-scala2.12/constraints.txt | 3 + .../13.3.x-cpu-ml-scala2.12/pyproject.toml | 3 + .../13.3.x-gpu-ml-scala2.12/constraints.txt | 3 + .../13.3.x-gpu-ml-scala2.12/pyproject.toml | 3 + .../14.3.x-cpu-ml-scala2.12/constraints.txt | 2 + .../14.3.x-cpu-ml-scala2.12/pyproject.toml | 2 + .../14.3.x-gpu-ml-scala2.12/constraints.txt | 2 + .../14.3.x-gpu-ml-scala2.12/pyproject.toml | 2 + .../15.4.x-cpu-ml-scala2.12/constraints.txt | 3 + .../15.4.x-cpu-ml-scala2.12/pyproject.toml | 3 + .../15.4.x-gpu-ml-scala2.12/constraints.txt | 3 + .../15.4.x-gpu-ml-scala2.12/pyproject.toml | 3 + .../16.4.x-cpu-ml-scala2.12/constraints.txt | 2 + .../16.4.x-cpu-ml-scala2.12/pyproject.toml | 2 + .../16.4.x-gpu-ml-scala2.12/constraints.txt | 2 + .../16.4.x-gpu-ml-scala2.12/pyproject.toml | 2 + .../17.3.x-cpu-ml-scala2.13/constraints.txt | 2 + .../17.3.x-cpu-ml-scala2.13/pyproject.toml | 2 + .../18.0.x-cpu-ml-scala2.13/constraints.txt | 2 + .../18.0.x-cpu-ml-scala2.13/pyproject.toml | 2 + .../18.0.x-gpu-ml-scala2.13/constraints.txt | 2 + .../18.0.x-gpu-ml-scala2.13/pyproject.toml | 2 + .../18.1.x-cpu-ml-scala2.13/constraints.txt | 2 + .../18.1.x-cpu-ml-scala2.13/pyproject.toml | 2 + .../18.1.x-gpu-ml-scala2.13/constraints.txt | 2 + .../18.1.x-gpu-ml-scala2.13/pyproject.toml | 2 + .../18.2.x-cpu-ml-scala2.13/constraints.txt | 2 + .../18.2.x-cpu-ml-scala2.13/pyproject.toml | 2 + .../18.2.x-gpu-ml-scala2.13/constraints.txt | 2 + .../18.2.x-gpu-ml-scala2.13/pyproject.toml | 2 + .../dbr/19.x-cpu-ml-scala2.13/constraints.txt | 2 + .../dbr/19.x-cpu-ml-scala2.13/pyproject.toml | 2 + .../serverless-v5-ml/constraints.txt | 2 + .../serverless-v5-ml/pyproject.toml | 2 + 37 files changed, 178 insertions(+), 83 deletions(-) diff --git a/.github/scripts/envgen.py b/.github/scripts/envgen.py index fd00a4f..3bab2b6 100644 --- a/.github/scripts/envgen.py +++ b/.github/scripts/envgen.py @@ -20,11 +20,13 @@ packages dropped be pip-installed locally or that ship vendored inside setuptools (see DROP / DROP_PREFIX). py4j is kept; pyspark is dropped so DB Connect supplies its own bundled build. - * Local-version and - packages carrying a PEP 440 local version segment - GPU builds dropped (``+cu129`` / ``+cpu`` / ``+db1``) resolve nowhere off the - cluster image, and GPU-only distributions (``nvidia-*`` CUDA - wheels, triton, flash-attn, deepspeed) need a GPU a dev - machine lacks. Both are dropped (see ``_filtered`` / DROP). + * Local segments - a PEP 440 local version segment (``+cu129`` / ``+cpu`` / + stripped ``+db1``) is stripped and the base release pinned + (``torch 2.9.0+cu129`` -> ``torch~=2.9.0``); ``~=`` is + invalid with a local segment and the build exists only + off-index, while its base is an ordinary PyPI release. See ``req``. + * GPU-only dropped - ``nvidia-*`` CUDA wheels, triton, flash-attn and deepspeed + need a GPU a dev machine lacks (see DROP / DROP_PREFIX). * requires-python - taken from the runtime's Python version (major.minor). This module is imported by ``sync.py`` (the weekly discovery + reconciliation Action). @@ -35,12 +37,15 @@ # libs, the spark client, pip itself, and deps vendored inside setuptools. DROP = { "pyspark", "dbus-python", "pygobject", "pip", "unattended-upgrades", + # Ubuntu system packages carried in the image but not pip-installable. Named + # explicitly so they stay dropped even though req() now strips local segments + # (their +ubuntu / +build local builds would otherwise resurrect as a base pin). + "python-apt", "distro-info", # setuptools-vendored "autocommand", "inflect", "typeguard", "backports-tarfile", "importlib-resources", "more-itertools", - # GPU-only: need an NVIDIA GPU + CUDA toolchain a dev machine does not have, and - # have no wheel at all on macOS (the nvidia-* CUDA runtime libs are dropped by - # prefix below). Kept off local constraints — see _filtered. + # GPU-only: need an NVIDIA GPU + CUDA toolchain a dev machine does not have. + # (The nvidia-* CUDA runtime libs are dropped by prefix below.) "triton", "flash-attn", "deepspeed", } DROP_PREFIX = ( @@ -58,10 +63,13 @@ def norm(name): def req(name, version): """Render one requirement. Compatible-release ``~=`` allows patch bumps. - Local version segments (``+cpu`` / ``+cu118`` / ``+db1``) never reach here: - ``~=`` is invalid with a local segment (PEP 440), and such builds resolve - nowhere off the cluster image, so ``_filtered`` drops them before an artifact is - built (see its comment). Every version passed in is therefore a plain release. + A PEP 440 local version segment (``+cpu`` / ``+cu118`` / ``+db1``) is stripped: + ``~=`` is invalid with a local segment, and the segment names a build published + only off-index (``download.pytorch.org``) or rebuilt inside the image, while its + base release is an ordinary PyPI version. So the base is pinned instead + (``torch 2.9.0+cu129`` -> ``torch~=2.9.0``, ``flask 1.1.2+db1`` -> ``flask~=1.1.2``). + Ubuntu system builds like ``python-apt 2.7.7+ubuntu5.2`` would strip to a bogus + PyPI pin, so those are dropped by name in ``DROP`` before reaching here. ``databricks-sdk`` is a special case. It moves in lockstep with ``databricks-connect``, which is installed from PyPI in the dev group and declares @@ -74,6 +82,7 @@ def req(name, version): floor while letting databricks-connect's own metadata govern the exact version within that window. See issue #16. """ + version = version.split("+", 1)[0] if name == "databricks-sdk": version = ".".join(version.split(".")[:2]) return f"{name}~={version}" @@ -93,13 +102,11 @@ def parse_requirements(text): def _filtered(pkgs): - # A PEP 440 local version segment (the part after "+", e.g. "+cu129", "+cpu", - # "+db1") marks a build published only on an out-of-band index - # (download.pytorch.org) or rebuilt inside the Databricks image. It resolves - # nowhere off the cluster and is impossible on macOS/CPU, so it is dropped - # alongside the name-based DROP set — never emitted as a local constraint. + # Inclusion only: drop the name-based DROP set and DROP_PREFIX. A PEP 440 local + # version segment is NOT a reason to drop — its base release is on PyPI — so + # those pins are kept here and req() strips the segment when rendering. return {n: v for n, v in pkgs.items() - if n not in DROP and not n.startswith(DROP_PREFIX) and "+" not in v} + if n not in DROP and not n.startswith(DROP_PREFIX)} def dbconnect_pin(pkgs): diff --git a/.github/scripts/test_envgen.py b/.github/scripts/test_envgen.py index aef914e..9620eb6 100644 --- a/.github/scripts/test_envgen.py +++ b/.github/scripts/test_envgen.py @@ -4,23 +4,18 @@ from envgen import _filtered, build_constraints, build_pyproject, dbconnect_pin, req -class FilterNonLocalTest(unittest.TestCase): - def test_drops_local_version_segment(self): - # A PEP 440 local version segment (+cuNNN / +cpu / +db1) names a build - # published only on an out-of-band index or rebuilt inside the image, so it - # cannot resolve on a developer machine and must not be emitted. - pkgs = { - "torch": "2.9.0+cu129", - "torchvision": "0.24.0+cu129", - "flask": "1.1.2+db1", - "horovod": "0.28.1+db1", - "numpy": "2.1.3", - } - self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) +class FilterTest(unittest.TestCase): + def test_keeps_local_version_packages(self): + # A PEP 440 local version segment (+cu129 / +cpu / +db1) is NOT a reason to + # drop: the base release is on PyPI, so the pin is kept and the segment is + # stripped later by req(). Only GPU-only and system packages are dropped. + pkgs = {"torch": "2.9.0+cu129", "flask": "1.1.2+db1", "numpy": "2.1.3"} + self.assertEqual(_filtered(pkgs), pkgs) def test_drops_gpu_only_by_name(self): # Every nvidia-* distribution is a CUDA runtime component; triton / - # flash-attn / deepspeed are GPU-only as well. + # flash-attn / deepspeed are GPU-only as well. _filtered receives keys already + # PEP 503-normalized by parse_requirements/norm, so it compares lowercased. pkgs = { "nvidia-cublas-cu12": "12.6.4.1", "nvidia-cudnn-cu12": "9.5.1.17", @@ -31,49 +26,62 @@ def test_drops_gpu_only_by_name(self): } self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) + def test_drops_system_packages(self): + # Ubuntu system packages carried in the image but not pip-installable. They + # must be dropped by name so stripping local segments does not resurrect them. + pkgs = {"python-apt": "2.7.7+ubuntu5.2", "distro-info": "1.7+build1", "numpy": "2.1.3"} + self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) + def test_keeps_installable_pins(self): - # A plain torch pin resolves to a CPU/macOS wheel; ray is on PyPI and usable - # locally. Only the +local torch build is dropped, not torch itself. - pkgs = { - "torch": "2.7.0", - "ray": "2.37.0", - "databricks-sdk": "0.67.0", - "numpy": "2.1.3", - "pyarrow": "21.0.0", - } + pkgs = {"ray": "2.37.0", "databricks-sdk": "0.67.0", "numpy": "2.1.3", "pyarrow": "21.0.0"} self.assertEqual(_filtered(pkgs), pkgs) +class ReqTest(unittest.TestCase): + def test_strips_local_version_segment(self): + # ~= is invalid with a local segment (PEP 440), and the segment names a build + # that only exists off-index; strip it so the base release is pinned instead. + self.assertEqual(req("torch", "2.9.0+cu129"), "torch~=2.9.0") + self.assertEqual(req("torch", "2.7.0+cpu"), "torch~=2.7.0") + self.assertEqual(req("flask", "1.1.2+db1"), "flask~=1.1.2") + + def test_compatible_release_default(self): + self.assertEqual(req("numpy", "2.1.3"), "numpy~=2.1.3") + + def test_databricks_sdk_widened_to_major_minor(self): + self.assertEqual(req("databricks-sdk", "0.67.0"), "databricks-sdk~=0.67") + + class BuildArtifactsTest(unittest.TestCase): + # torchmetrics is a real ML package that must survive; it also guards against a + # bare-substring assertion mistaking "torch~=..." for "torchmetrics". pkgs = { "numpy": "2.1.3", "torch": "2.9.0+cu129", + "torchmetrics": "1.6.0", "nvidia-cublas-cu12": "12.6.4.1", "triton": "3.3.0", + "python-apt": "2.7.7+ubuntu5.2", "pyarrow": "21.0.0", } - def test_pyproject_omits_dropped(self): - out = build_pyproject(self.pkgs, "serverless-v4", "3.12.3") - self.assertIn("numpy~=2.1.3", out) - self.assertIn("pyarrow~=21.0.0", out) - for gone in ("torch", "nvidia-cublas-cu12", "triton", "+cu129"): - self.assertNotIn(gone, out) - - def test_constraints_omits_dropped(self): - out = build_constraints(self.pkgs, "serverless-v4") + def _check(self, out): + # +local stripped and pinned; ordinary pins kept. + self.assertIn("torch~=2.9.0", out) + self.assertIn("torchmetrics~=1.6.0", out) self.assertIn("numpy~=2.1.3", out) self.assertIn("pyarrow~=21.0.0", out) - for gone in ("torch", "nvidia-cublas-cu12", "triton", "+cu129"): - self.assertNotIn(gone, out) + self.assertNotIn("+cu129", out) + # Dropped by name — assert on the rendered pin, not a bare substring. + self.assertNotIn("nvidia-cublas-cu12~=", out) + self.assertNotIn("triton~=", out) + self.assertNotIn("python-apt~=", out) + def test_pyproject(self): + self._check(build_pyproject(self.pkgs, "serverless-v4", "3.12.3")) -class ReqTest(unittest.TestCase): - def test_compatible_release_default(self): - self.assertEqual(req("numpy", "2.1.3"), "numpy~=2.1.3") - - def test_databricks_sdk_widened_to_major_minor(self): - self.assertEqual(req("databricks-sdk", "0.67.0"), "databricks-sdk~=0.67") + def test_constraints(self): + self._check(build_constraints(self.pkgs, "serverless-v4")) class DbconnectPinTest(unittest.TestCase): diff --git a/README.md b/README.md index 6d584d3..4bd613f 100644 --- a/README.md +++ b/README.md @@ -56,25 +56,29 @@ Databricks release notes — see [what is intentionally not included](#what-is-i ## What is intentionally not included -Not every package in the release-notes list becomes a local constraint. `envgen.py` -drops the ones that can't — or shouldn't — install on a developer machine, so that -`uv sync` / `pip install -c` stay resolvable. These are removed from **both** -`pyproject.toml` and `constraints.txt`: - -- **System / OS packages** — `pip`, `pyspark` (DB Connect supplies its own bundled - build; `py4j` is kept), `dbus-python`, `pygobject`, `unattended-upgrades`. -- **setuptools-vendored** — `more-itertools`, `jaraco-*`, `inflect`, `typeguard`, … - — shipped inside setuptools, not installed standalone. -- **Local-version builds** (`+cpu` / `+cuXXX` / `+db1`) — published only on an - out-of-band index (`download.pytorch.org`) or rebuilt inside the Databricks image, - so they resolve nowhere off the cluster, and `~=` is invalid with a `+local` - segment. This drops the ML `torch` / `torchvision` builds, leaving those packages - unpinned locally (a plain, non-`+local` pin is kept when the tables list one). -- **GPU-only distributions** — the `nvidia-*` CUDA runtime components, plus `triton`, - `flash-attn`, `deepspeed`: they need an NVIDIA GPU and CUDA toolchain a dev machine - lacks, and have no macOS wheel at all. - -The exact lists live in `DROP` / `DROP_PREFIX` and `_filtered()` in +Not every package in the release-notes list is emitted verbatim. `envgen.py` drops +the ones that can't — or shouldn't — install on a developer machine, and strips +version markers that would make a pin unresolvable, so `uv sync` / `pip install -c` +stay resolvable. Applied to **both** `pyproject.toml` and `constraints.txt`: + +- **System / OS packages** (dropped) — `pip`, `pyspark` (DB Connect supplies its own + bundled build; `py4j` is kept), `dbus-python`, `pygobject`, `unattended-upgrades`, + `python-apt`, `distro-info`. +- **setuptools-vendored** (dropped) — `more-itertools`, `jaraco-*`, `inflect`, + `typeguard`, … — shipped inside setuptools, not installed standalone. +- **GPU-only distributions** (dropped) — the `nvidia-*` CUDA runtime components, plus + `triton`, `flash-attn`, `deepspeed`: they need an NVIDIA GPU (and CUDA toolchain) a + dev machine lacks. (`nvidia-ml-py` is pure Python but useless without a driver, and + is dropped by the same `nvidia-` prefix.) +- **Local version segments** (stripped, not dropped) — a `+cpu` / `+cuXXX` / `+db1` + segment names a build published only off-index (`download.pytorch.org`) or rebuilt + inside the image, and `~=` is invalid with a local segment. The segment is stripped + and the base release pinned (`torch 2.9.0+cu129` → `torch~=2.9.0`, `flask 1.1.2+db1` + → `flask~=1.1.2`), so `uv` resolves a platform-appropriate wheel. (Ubuntu system + builds like `python-apt 2.7.7+ubuntu5.2` are dropped by name above instead, since + their base version is not on PyPI.) + +The exact lists live in `DROP` / `DROP_PREFIX` and `_filtered()` / `req()` in `.github/scripts/envgen.py`. ## How it stays in sync @@ -102,9 +106,9 @@ is best-effort. Nobody hand-edits the `python/` artifacts. per cluster type: `.x-cpu-ml-…` and `.x-gpu-ml-…`. Newer ML pages link downloadable `requirements-{cpu,gpu}-*.txt`; older ones render inline tables under `python-libraries-on-{cpu,gpu}-clusters`. The GPU set lists the CUDA builds - (e.g. `torch …+cu118`) and the CPU set lists `…+cpu`, but these `+local` builds are - dropped from the generated artifacts (see [what is intentionally not included](#what-is-intentionally-not-included)) — they - resolve nowhere off the cluster image. + (e.g. `torch …+cu118`) and the CPU set lists `…+cpu`; the generated artifacts strip + the `+local` segment and pin the base release (see + [what is intentionally not included](#what-is-intentionally-not-included)). The Action runs it; you only need to run it locally to debug: @@ -130,6 +134,6 @@ doc for the full rationale. - [x] DBR standard runtimes — auto-discovered from the index + HTML-table parsing - [x] DBR ML runtimes (CPU + GPU) — downloadable requirements or inline tables - [ ] PyTorch index config in ML `pyproject.toml`. Today the `+cpu` / `+cuXXX` - torch/torchvision builds are dropped (see [what is intentionally not included](#what-is-intentionally-not-included)); - adding PyTorch's index would let `uv` resolve the matching build, so they could - be pinned instead of dropped. + torch/torchvision builds are stripped to a base pin (see [what is intentionally not included](#what-is-intentionally-not-included)); + adding PyTorch's index would let `uv` fetch the exact `+cpu` / `+cuXXX` build the + runtime ships, rather than a base-version wheel. diff --git a/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt index 808b17f..6c0d999 100644 --- a/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt @@ -68,6 +68,7 @@ fastapi~=0.98.0 fastjsonschema~=2.18.0 fasttext~=0.9.2 filelock~=3.6.0 +flask~=1.1.2 flatbuffers~=23.5.26 fonttools~=4.25.0 frozenlist~=1.4.0 @@ -275,6 +276,8 @@ tiktoken~=0.4.0 tokenize-rt~=4.2.1 tokenizers~=0.13.3 tomli~=2.0.1 +torch~=1.13.1 +torchvision~=0.14.1 tornado~=6.1 tqdm~=4.64.1 traitlets~=5.1.1 diff --git a/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml index 89c9451..e3543ab 100644 --- a/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml @@ -80,6 +80,7 @@ constraint-dependencies = [ "fastjsonschema~=2.18.0", "fasttext~=0.9.2", "filelock~=3.6.0", + "flask~=1.1.2", "flatbuffers~=23.5.26", "fonttools~=4.25.0", "frozenlist~=1.4.0", @@ -287,6 +288,8 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.13.3", "tomli~=2.0.1", + "torch~=1.13.1", + "torchvision~=0.14.1", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.1.1", diff --git a/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt index 27f0af0..d03c952 100644 --- a/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt @@ -69,6 +69,7 @@ fastapi~=0.98.0 fastjsonschema~=2.18.0 fasttext~=0.9.2 filelock~=3.6.0 +flask~=1.1.2 flatbuffers~=23.5.26 fonttools~=4.25.0 frozenlist~=1.4.0 @@ -275,6 +276,8 @@ tiktoken~=0.4.0 tokenize-rt~=4.2.1 tokenizers~=0.13.3 tomli~=2.0.1 +torch~=1.13.1 +torchvision~=0.14.1 tornado~=6.1 tqdm~=4.64.1 traitlets~=5.1.1 diff --git a/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml index 5b5a264..45fc7ef 100644 --- a/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml @@ -81,6 +81,7 @@ constraint-dependencies = [ "fastjsonschema~=2.18.0", "fasttext~=0.9.2", "filelock~=3.6.0", + "flask~=1.1.2", "flatbuffers~=23.5.26", "fonttools~=4.25.0", "frozenlist~=1.4.0", @@ -287,6 +288,8 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.13.3", "tomli~=2.0.1", + "torch~=1.13.1", + "torchvision~=0.14.1", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.1.1", diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt index 9429a54..cac3538 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt @@ -280,6 +280,8 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.15.0 tomli~=2.0.1 +torch~=2.0.1 +torchvision~=0.15.2 tornado~=6.1 tqdm~=4.64.1 traitlets~=5.7.1 diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml index 16a72ab..7fc5331 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml @@ -292,6 +292,8 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.15.0", "tomli~=2.0.1", + "torch~=2.0.1", + "torchvision~=0.15.2", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.7.1", diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt index 52a9ba7..4fb1d19 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt @@ -282,6 +282,8 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.15.0 tomli~=2.0.1 +torch~=2.0.1 +torchvision~=0.15.2 tornado~=6.1 tqdm~=4.64.1 traitlets~=5.7.1 diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml index f34a19d..688ef53 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml @@ -294,6 +294,8 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.15.0", "tomli~=2.0.1", + "torch~=2.0.1", + "torchvision~=0.15.2", "tornado~=6.1", "tqdm~=4.64.1", "traitlets~=5.7.1", diff --git a/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt index 497b234..b4a23e5 100644 --- a/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt @@ -101,6 +101,7 @@ h11~=0.14.0 h5py~=3.10.0 hjson~=3.1.0 holidays~=0.45 +horovod~=0.28.1 htmlmin~=0.1.12 httpcore~=1.0.5 httplib2~=0.20.2 @@ -313,7 +314,9 @@ tiktoken~=0.5.2 tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.19.0 +torch~=2.3.1 torcheval~=0.0.7 +torchvision~=0.18.1 tornado~=6.3.2 tqdm~=4.65.0 traitlets~=5.7.1 diff --git a/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml index c3eecd2..cfb33b4 100644 --- a/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml @@ -113,6 +113,7 @@ constraint-dependencies = [ "h5py~=3.10.0", "hjson~=3.1.0", "holidays~=0.45", + "horovod~=0.28.1", "htmlmin~=0.1.12", "httpcore~=1.0.5", "httplib2~=0.20.2", @@ -325,7 +326,9 @@ constraint-dependencies = [ "tinycss2~=1.2.1", "tokenize-rt~=4.2.1", "tokenizers~=0.19.0", + "torch~=2.3.1", "torcheval~=0.0.7", + "torchvision~=0.18.1", "tornado~=6.3.2", "tqdm~=4.65.0", "traitlets~=5.7.1", diff --git a/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt index da54784..ef2e2b8 100644 --- a/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt @@ -102,6 +102,7 @@ h11~=0.14.0 h5py~=3.10.0 hjson~=3.1.0 holidays~=0.45 +horovod~=0.28.1 htmlmin~=0.1.12 httpcore~=1.0.5 httplib2~=0.20.2 @@ -314,7 +315,9 @@ tiktoken~=0.5.2 tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.19.0 +torch~=2.3.1 torcheval~=0.0.7 +torchvision~=0.18.1 tornado~=6.3.2 tqdm~=4.65.0 traitlets~=5.7.1 diff --git a/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml index 0cf175b..36cd066 100644 --- a/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml @@ -114,6 +114,7 @@ constraint-dependencies = [ "h5py~=3.10.0", "hjson~=3.1.0", "holidays~=0.45", + "horovod~=0.28.1", "htmlmin~=0.1.12", "httpcore~=1.0.5", "httplib2~=0.20.2", @@ -326,7 +327,9 @@ constraint-dependencies = [ "tinycss2~=1.2.1", "tokenize-rt~=4.2.1", "tokenizers~=0.19.0", + "torch~=2.3.1", "torcheval~=0.0.7", + "torchvision~=0.18.1", "tornado~=6.3.2", "tqdm~=4.65.0", "traitlets~=5.7.1", diff --git a/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt index d2f9998..3fb1850 100644 --- a/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/16.4.x-cpu-ml-scala2.12/constraints.txt @@ -349,9 +349,11 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.21.0 tomli~=2.0.1 +torch~=2.6.0 torch-optimizer~=0.3.0 torcheval~=0.0.7 torchmetrics~=1.6.0 +torchvision~=0.21.0 tornado~=6.4.1 tqdm~=4.66.4 traitlets~=5.14.3 diff --git a/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml index 71d11cc..9bfae3e 100644 --- a/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/16.4.x-cpu-ml-scala2.12/pyproject.toml @@ -361,9 +361,11 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.21.0", "tomli~=2.0.1", + "torch~=2.6.0", "torch-optimizer~=0.3.0", "torcheval~=0.0.7", "torchmetrics~=1.6.0", + "torchvision~=0.21.0", "tornado~=6.4.1", "tqdm~=4.66.4", "traitlets~=5.14.3", diff --git a/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt index e0b7d96..531d11a 100644 --- a/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/16.4.x-gpu-ml-scala2.12/constraints.txt @@ -348,9 +348,11 @@ tinycss2~=1.2.1 tokenize-rt~=4.2.1 tokenizers~=0.21.0 tomli~=2.0.1 +torch~=2.6.0 torch-optimizer~=0.3.0 torcheval~=0.0.7 torchmetrics~=1.6.0 +torchvision~=0.21.0 tornado~=6.4.1 tqdm~=4.66.4 traitlets~=5.14.3 diff --git a/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml index fb095b5..903c296 100644 --- a/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/16.4.x-gpu-ml-scala2.12/pyproject.toml @@ -360,9 +360,11 @@ constraint-dependencies = [ "tokenize-rt~=4.2.1", "tokenizers~=0.21.0", "tomli~=2.0.1", + "torch~=2.6.0", "torch-optimizer~=0.3.0", "torcheval~=0.0.7", "torchmetrics~=1.6.0", + "torchvision~=0.21.0", "tornado~=6.4.1", "tqdm~=4.66.4", "traitlets~=5.14.3", diff --git a/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt index 3563ada..c3cdae0 100644 --- a/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/17.3.x-cpu-ml-scala2.13/constraints.txt @@ -357,9 +357,11 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.21.0 tomli~=2.0.1 +torch~=2.7.0 torch-optimizer~=0.3.0 torcheval~=0.0.7 torchmetrics~=1.6.0 +torchvision~=0.22.0 tornado~=6.4.2 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml index 85d18d7..fefb81c 100644 --- a/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/17.3.x-cpu-ml-scala2.13/pyproject.toml @@ -369,9 +369,11 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.21.0", "tomli~=2.0.1", + "torch~=2.7.0", "torch-optimizer~=0.3.0", "torcheval~=0.0.7", "torchmetrics~=1.6.0", + "torchvision~=0.22.0", "tornado~=6.4.2", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt index 9aa6a9f..90df94a 100644 --- a/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.0.x-cpu-ml-scala2.13/constraints.txt @@ -353,7 +353,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml index 74a91e8..32160da 100644 --- a/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.0.x-cpu-ml-scala2.13/pyproject.toml @@ -365,7 +365,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt index eb89ad3..2c90b66 100644 --- a/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.0.x-gpu-ml-scala2.13/constraints.txt @@ -352,7 +352,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml index edf4733..c3dec6c 100644 --- a/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.0.x-gpu-ml-scala2.13/pyproject.toml @@ -364,7 +364,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt index 533c05f..4ab2cda 100644 --- a/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.1.x-cpu-ml-scala2.13/constraints.txt @@ -353,7 +353,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml index a84c9ac..430b595 100644 --- a/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.1.x-cpu-ml-scala2.13/pyproject.toml @@ -365,7 +365,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt index 869f1ba..be9f2be 100644 --- a/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.1.x-gpu-ml-scala2.13/constraints.txt @@ -352,7 +352,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml index 3635ec6..52d57a4 100644 --- a/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.1.x-gpu-ml-scala2.13/pyproject.toml @@ -364,7 +364,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt index 2e82b1a..95e45aa 100644 --- a/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.2.x-cpu-ml-scala2.13/constraints.txt @@ -354,7 +354,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml index 9afb149..1a7cd30 100644 --- a/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.2.x-cpu-ml-scala2.13/pyproject.toml @@ -366,7 +366,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt index 9ee96d0..b1c3bc7 100644 --- a/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/18.2.x-gpu-ml-scala2.13/constraints.txt @@ -353,7 +353,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml index 7d8759b..14f3919 100644 --- a/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/18.2.x-gpu-ml-scala2.13/pyproject.toml @@ -365,7 +365,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt b/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt index 2d68fac..725fb83 100644 --- a/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt +++ b/python/dbr/19.x-cpu-ml-scala2.13/constraints.txt @@ -270,7 +270,9 @@ tiktoken~=0.13.0 tokenize-rt~=6.2.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.12.0 torcheval~=0.0.7 +torchvision~=0.27.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml b/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml index f8001fe..fcc351e 100644 --- a/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/19.x-cpu-ml-scala2.13/pyproject.toml @@ -282,7 +282,9 @@ constraint-dependencies = [ "tokenize-rt~=6.2.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.12.0", "torcheval~=0.0.7", + "torchvision~=0.27.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", diff --git a/python/serverless/serverless-v5-ml/constraints.txt b/python/serverless/serverless-v5-ml/constraints.txt index 6d8cdee..ba246e1 100644 --- a/python/serverless/serverless-v5-ml/constraints.txt +++ b/python/serverless/serverless-v5-ml/constraints.txt @@ -345,7 +345,9 @@ tinycss2~=1.4.0 tokenize-rt~=6.1.0 tokenizers~=0.22.1 tomli~=2.0.1 +torch~=2.9.0 torcheval~=0.0.7 +torchvision~=0.24.0 tornado~=6.5.1 tqdm~=4.67.1 traitlets~=5.14.3 diff --git a/python/serverless/serverless-v5-ml/pyproject.toml b/python/serverless/serverless-v5-ml/pyproject.toml index 2730c8e..a1f5f57 100644 --- a/python/serverless/serverless-v5-ml/pyproject.toml +++ b/python/serverless/serverless-v5-ml/pyproject.toml @@ -357,7 +357,9 @@ constraint-dependencies = [ "tokenize-rt~=6.1.0", "tokenizers~=0.22.1", "tomli~=2.0.1", + "torch~=2.9.0", "torcheval~=0.0.7", + "torchvision~=0.24.0", "tornado~=6.5.1", "tqdm~=4.67.1", "traitlets~=5.14.3", From e0957757ad8cc67956e1f9d7a24e14d86367170f Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 14:59:48 +0300 Subject: [PATCH 6/8] Add CI job running the envgen unit tests *Why* Review feedback (Anton, item 4): the new tests only ran when someone typed the command; nothing exercised them in CI, so they would rot. The repo had no test workflow (only the weekly sync). *What* - Add .github/workflows/test.yml: on push / pull_request touching .github/scripts/**, run `python -m unittest` over the scripts. Mirrors sync.yml's conventions (linux-ubuntu-latest runner for the org IP allow list, SHA-pinned checkout/setup-python, Python 3.12). No third-party deps. *Verification* - Workflow is valid YAML; the same command passes locally (11 tests). Co-authored-by: Isaac --- .github/workflows/test.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..d7d046e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,32 @@ +name: test-envgen + +# Run the envgen unit tests so the artifact-transformation rules (drops, +local +# stripping, databricks-sdk / databricks-connect pinning) can't silently regress. +# envgen.py has no third-party dependencies, so this is a plain stdlib unittest run. + +on: + push: + paths: + - ".github/scripts/**" + pull_request: + paths: + - ".github/scripts/**" + +permissions: + contents: read + +jobs: + unittest: + # See sync.yml: GitHub-hosted ubuntu-latest is outside the databricks org IP + # allow list; linux-ubuntu-latest is the databricks-protected-runner-group. + runs-on: linux-ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: "3.12" + + - name: Run envgen unit tests + run: python -m unittest discover -s .github/scripts -p "test_*.py" -v From 73ec1a0d6184782e12bf4e3ec0c32335476ad8e4 Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 15:11:06 +0300 Subject: [PATCH 7/8] Drop horovod; run test workflow on its own changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *Why* Second-pass review: horovod was kept as horovod~=0.28.1 while its same-class GPU siblings (deepspeed, flash-attn) are dropped — a source-only distribution needing MPI/NCCL + a compiler, which fails a plain local install (Claude/Anton). And the test workflow's path filter excluded itself, so a workflow-only change would merge untested (Codex). *What* - envgen.py: add horovod to DROP (GPU-only group); test_envgen covers it. - Regenerated artifacts: horovod removed from the ML envs that carried it. - README: add horovod to the GPU-only "not included" list. - .github/workflows/test.yml: add the workflow itself to both path filters so a change to its runner/pins/command re-runs the tests. *Verification* - python -m unittest test_envgen: 11 passing. - No horovod / nvidia-* / triton / flash-attn / deepspeed / python-apt / distro-info / +local pins remain under python/; all 33 pyproject.toml valid TOML. Co-authored-by: Isaac --- .github/scripts/envgen.py | 5 +++-- .github/scripts/test_envgen.py | 1 + .github/workflows/test.yml | 2 ++ README.md | 6 +++--- python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt | 1 - python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt | 1 - python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt | 1 - python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt | 1 - python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt | 1 - python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt | 1 - python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml | 1 - 16 files changed, 9 insertions(+), 17 deletions(-) diff --git a/.github/scripts/envgen.py b/.github/scripts/envgen.py index 3bab2b6..8c9bd64 100644 --- a/.github/scripts/envgen.py +++ b/.github/scripts/envgen.py @@ -45,8 +45,9 @@ "autocommand", "inflect", "typeguard", "backports-tarfile", "importlib-resources", "more-itertools", # GPU-only: need an NVIDIA GPU + CUDA toolchain a dev machine does not have. - # (The nvidia-* CUDA runtime libs are dropped by prefix below.) - "triton", "flash-attn", "deepspeed", + # (The nvidia-* CUDA runtime libs are dropped by prefix below.) horovod is the + # same class — a source-only distribution needing MPI/NCCL + a compiler to build. + "triton", "flash-attn", "deepspeed", "horovod", } DROP_PREFIX = ( "jaraco-", # jaraco.collections / jaraco.context / ... (setuptools-vendored) diff --git a/.github/scripts/test_envgen.py b/.github/scripts/test_envgen.py index 9620eb6..3c96377 100644 --- a/.github/scripts/test_envgen.py +++ b/.github/scripts/test_envgen.py @@ -22,6 +22,7 @@ def test_drops_gpu_only_by_name(self): "triton": "3.3.0", "flash-attn": "2.7.4.post1", "deepspeed": "0.16.5", + "horovod": "0.28.1", "numpy": "2.1.3", } self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d7d046e..22bd2c4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,9 +8,11 @@ on: push: paths: - ".github/scripts/**" + - ".github/workflows/test.yml" pull_request: paths: - ".github/scripts/**" + - ".github/workflows/test.yml" permissions: contents: read diff --git a/README.md b/README.md index 4bd613f..dd24271 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,9 @@ stay resolvable. Applied to **both** `pyproject.toml` and `constraints.txt`: - **setuptools-vendored** (dropped) — `more-itertools`, `jaraco-*`, `inflect`, `typeguard`, … — shipped inside setuptools, not installed standalone. - **GPU-only distributions** (dropped) — the `nvidia-*` CUDA runtime components, plus - `triton`, `flash-attn`, `deepspeed`: they need an NVIDIA GPU (and CUDA toolchain) a - dev machine lacks. (`nvidia-ml-py` is pure Python but useless without a driver, and - is dropped by the same `nvidia-` prefix.) + `triton`, `flash-attn`, `deepspeed`, `horovod`: they need an NVIDIA GPU (and a CUDA + toolchain / MPI to build) a dev machine lacks. (`nvidia-ml-py` is pure Python but + useless without a driver, and is dropped by the same `nvidia-` prefix.) - **Local version segments** (stripped, not dropped) — a `+cpu` / `+cuXXX` / `+db1` segment names a build published only off-index (`download.pytorch.org`) or rebuilt inside the image, and `~=` is invalid with a local segment. The segment is stripped diff --git a/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt index 6c0d999..631135c 100644 --- a/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/13.3.x-cpu-ml-scala2.12/constraints.txt @@ -94,7 +94,6 @@ gviz-api~=1.10.0 h11~=0.14.0 h5py~=3.7.0 holidays~=0.27.1 -horovod~=0.28.1 htmlmin~=0.1.12 httplib2~=0.20.2 httptools~=0.6.0 diff --git a/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml index e3543ab..bb380d7 100644 --- a/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/13.3.x-cpu-ml-scala2.12/pyproject.toml @@ -106,7 +106,6 @@ constraint-dependencies = [ "h11~=0.14.0", "h5py~=3.7.0", "holidays~=0.27.1", - "horovod~=0.28.1", "htmlmin~=0.1.12", "httplib2~=0.20.2", "httptools~=0.6.0", diff --git a/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt index d03c952..c81a910 100644 --- a/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/13.3.x-gpu-ml-scala2.12/constraints.txt @@ -95,7 +95,6 @@ gviz-api~=1.10.0 h11~=0.14.0 h5py~=3.7.0 holidays~=0.27.1 -horovod~=0.28.1 htmlmin~=0.1.12 httplib2~=0.20.2 httptools~=0.6.0 diff --git a/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml index 45fc7ef..b9ce233 100644 --- a/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/13.3.x-gpu-ml-scala2.12/pyproject.toml @@ -107,7 +107,6 @@ constraint-dependencies = [ "h11~=0.14.0", "h5py~=3.7.0", "holidays~=0.27.1", - "horovod~=0.28.1", "htmlmin~=0.1.12", "httplib2~=0.20.2", "httptools~=0.6.0", diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt index cac3538..f5945df 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt @@ -94,7 +94,6 @@ gviz-api~=1.10.0 h5py~=3.7.0 hjson~=3.1.0 holidays~=0.38 -horovod~=0.28.1 htmlmin~=0.1.12 httplib2~=0.20.2 huggingface-hub~=0.19.4 diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml index 7fc5331..6a982a7 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml @@ -106,7 +106,6 @@ constraint-dependencies = [ "h5py~=3.7.0", "hjson~=3.1.0", "holidays~=0.38", - "horovod~=0.28.1", "htmlmin~=0.1.12", "httplib2~=0.20.2", "huggingface-hub~=0.19.4", diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt index 4fb1d19..b757737 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt @@ -96,7 +96,6 @@ gviz-api~=1.10.0 h5py~=3.7.0 hjson~=3.1.0 holidays~=0.38 -horovod~=0.28.1 htmlmin~=0.1.12 httplib2~=0.20.2 huggingface-hub~=0.19.4 diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml index 688ef53..4e01635 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml @@ -108,7 +108,6 @@ constraint-dependencies = [ "h5py~=3.7.0", "hjson~=3.1.0", "holidays~=0.38", - "horovod~=0.28.1", "htmlmin~=0.1.12", "httplib2~=0.20.2", "huggingface-hub~=0.19.4", diff --git a/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt index b4a23e5..08a7030 100644 --- a/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/15.4.x-cpu-ml-scala2.12/constraints.txt @@ -101,7 +101,6 @@ h11~=0.14.0 h5py~=3.10.0 hjson~=3.1.0 holidays~=0.45 -horovod~=0.28.1 htmlmin~=0.1.12 httpcore~=1.0.5 httplib2~=0.20.2 diff --git a/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml index cfb33b4..e85e484 100644 --- a/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/15.4.x-cpu-ml-scala2.12/pyproject.toml @@ -113,7 +113,6 @@ constraint-dependencies = [ "h5py~=3.10.0", "hjson~=3.1.0", "holidays~=0.45", - "horovod~=0.28.1", "htmlmin~=0.1.12", "httpcore~=1.0.5", "httplib2~=0.20.2", diff --git a/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt index ef2e2b8..84c8388 100644 --- a/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/15.4.x-gpu-ml-scala2.12/constraints.txt @@ -102,7 +102,6 @@ h11~=0.14.0 h5py~=3.10.0 hjson~=3.1.0 holidays~=0.45 -horovod~=0.28.1 htmlmin~=0.1.12 httpcore~=1.0.5 httplib2~=0.20.2 diff --git a/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml index 36cd066..ad2679d 100644 --- a/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/15.4.x-gpu-ml-scala2.12/pyproject.toml @@ -114,7 +114,6 @@ constraint-dependencies = [ "h5py~=3.10.0", "hjson~=3.1.0", "holidays~=0.45", - "horovod~=0.28.1", "htmlmin~=0.1.12", "httpcore~=1.0.5", "httplib2~=0.20.2", From 314ad16c128f80bad3a18cbab253ca5be253990c Mon Sep 17 00:00:00 2001 From: Grigory Panov Date: Fri, 21 Aug 2026 19:30:23 +0300 Subject: [PATCH 8/8] Also drop pynvml + cuda-* (GPU-only), completing the taxonomy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *Why* Review nit (Anton): pynvml and the cuda-* packages escaped the GPU-only rule, so the README described a cleaner taxonomy than the code implemented. pynvml is the same NVML binding as nvidia-ml-py (dropped by the nvidia- prefix); cuda-toolkit / cuda-bindings / cuda-pathfinder are CUDA tooling — all GPU-only, useless on a dev machine. *What* - envgen.py: add pynvml to DROP and a cuda- entry to DROP_PREFIX; update the module docstring GPU-only bullet. README GPU-only bullet now lists cuda-*/pynvml and states nvidia-ml-py/pynvml are pure-Python NVML bindings (installable anywhere, useless without a driver) — so README and code agree. - test_envgen: extend the GPU-only drop test with pynvml + cuda-*. - Regenerated: pynvml removed from 14.3 cpu/gpu ML; cuda-bindings/pathfinder/toolkit removed from 19.x gpu ML. *Verification* - python -m unittest test_envgen: 11 passing. - No pynvml / cuda-* pins remain under python/; pandas untouched on this branch; all 33 pyproject.toml valid TOML. Co-authored-by: Isaac --- .github/scripts/envgen.py | 14 +++++++++----- .github/scripts/test_envgen.py | 3 +++ README.md | 9 +++++---- python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt | 1 - python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt | 1 - python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml | 1 - python/dbr/19.x-gpu-ml-scala2.13/constraints.txt | 3 --- python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml | 3 --- 9 files changed, 17 insertions(+), 19 deletions(-) diff --git a/.github/scripts/envgen.py b/.github/scripts/envgen.py index 8c9bd64..bf1ce7d 100644 --- a/.github/scripts/envgen.py +++ b/.github/scripts/envgen.py @@ -25,8 +25,10 @@ (``torch 2.9.0+cu129`` -> ``torch~=2.9.0``); ``~=`` is invalid with a local segment and the build exists only off-index, while its base is an ordinary PyPI release. See ``req``. - * GPU-only dropped - ``nvidia-*`` CUDA wheels, triton, flash-attn and deepspeed - need a GPU a dev machine lacks (see DROP / DROP_PREFIX). + * GPU-only dropped - ``nvidia-*`` / ``cuda-*`` CUDA wheels and tooling, plus + triton, flash-attn, deepspeed, horovod and pynvml — all need + a GPU (and CUDA/MPI toolchain) a dev machine lacks (see + DROP / DROP_PREFIX). * requires-python - taken from the runtime's Python version (major.minor). This module is imported by ``sync.py`` (the weekly discovery + reconciliation Action). @@ -45,13 +47,15 @@ "autocommand", "inflect", "typeguard", "backports-tarfile", "importlib-resources", "more-itertools", # GPU-only: need an NVIDIA GPU + CUDA toolchain a dev machine does not have. - # (The nvidia-* CUDA runtime libs are dropped by prefix below.) horovod is the - # same class — a source-only distribution needing MPI/NCCL + a compiler to build. - "triton", "flash-attn", "deepspeed", "horovod", + # (nvidia-* / cuda-* are dropped by prefix below.) horovod is the same class — a + # source-only distribution needing MPI/NCCL + a compiler to build. pynvml is the + # NVML binding (same as nvidia-ml-py); useless without a driver. + "triton", "flash-attn", "deepspeed", "horovod", "pynvml", } DROP_PREFIX = ( "jaraco-", # jaraco.collections / jaraco.context / ... (setuptools-vendored) "nvidia-", # nvidia-* CUDA wheels (and nvidia-ml-py): GPU tooling, no local use + "cuda-", # cuda-toolkit / cuda-bindings / cuda-pathfinder: CUDA tooling, GPU-only ) diff --git a/.github/scripts/test_envgen.py b/.github/scripts/test_envgen.py index 3c96377..e061b2d 100644 --- a/.github/scripts/test_envgen.py +++ b/.github/scripts/test_envgen.py @@ -23,6 +23,9 @@ def test_drops_gpu_only_by_name(self): "flash-attn": "2.7.4.post1", "deepspeed": "0.16.5", "horovod": "0.28.1", + "pynvml": "11.5.0", + "cuda-toolkit": "13.0.2", + "cuda-bindings": "13.2.0", "numpy": "2.1.3", } self.assertEqual(_filtered(pkgs), {"numpy": "2.1.3"}) diff --git a/README.md b/README.md index dd24271..ff8ce28 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,11 @@ stay resolvable. Applied to **both** `pyproject.toml` and `constraints.txt`: `python-apt`, `distro-info`. - **setuptools-vendored** (dropped) — `more-itertools`, `jaraco-*`, `inflect`, `typeguard`, … — shipped inside setuptools, not installed standalone. -- **GPU-only distributions** (dropped) — the `nvidia-*` CUDA runtime components, plus - `triton`, `flash-attn`, `deepspeed`, `horovod`: they need an NVIDIA GPU (and a CUDA - toolchain / MPI to build) a dev machine lacks. (`nvidia-ml-py` is pure Python but - useless without a driver, and is dropped by the same `nvidia-` prefix.) +- **GPU-only distributions** (dropped) — the `nvidia-*` and `cuda-*` CUDA runtime + components and tooling, plus `triton`, `flash-attn`, `deepspeed`, `horovod`, + `pynvml`: they need an NVIDIA GPU (and a CUDA toolchain / MPI to build) a dev machine + lacks. (`nvidia-ml-py` and `pynvml` are pure-Python NVML bindings — installable + anywhere but useless without a driver, so dropped by prefix/name.) - **Local version segments** (stripped, not dropped) — a `+cpu` / `+cuXXX` / `+db1` segment names a build published only off-index (`download.pytorch.org`) or rebuilt inside the image, and `~=` is invalid with a local segment. The segment is stripped diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt index f5945df..0ea3a70 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/constraints.txt @@ -208,7 +208,6 @@ pyflakes~=3.1.0 pygments~=2.11.2 pyjwt~=2.3.0 pynacl~=1.5.0 -pynvml~=11.5.0 pyodbc~=4.0.32 pyparsing~=3.0.9 pyright~=1.1.294 diff --git a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml index 6a982a7..9e0cb1d 100644 --- a/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-cpu-ml-scala2.12/pyproject.toml @@ -220,7 +220,6 @@ constraint-dependencies = [ "pygments~=2.11.2", "pyjwt~=2.3.0", "pynacl~=1.5.0", - "pynvml~=11.5.0", "pyodbc~=4.0.32", "pyparsing~=3.0.9", "pyright~=1.1.294", diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt index b757737..002b3fd 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/constraints.txt @@ -210,7 +210,6 @@ pyflakes~=3.1.0 pygments~=2.11.2 pyjwt~=2.3.0 pynacl~=1.5.0 -pynvml~=11.5.0 pyodbc~=4.0.32 pyparsing~=3.0.9 pyright~=1.1.294 diff --git a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml index 4e01635..f6e8c3a 100644 --- a/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml +++ b/python/dbr/14.3.x-gpu-ml-scala2.12/pyproject.toml @@ -222,7 +222,6 @@ constraint-dependencies = [ "pygments~=2.11.2", "pyjwt~=2.3.0", "pynacl~=1.5.0", - "pynvml~=11.5.0", "pyodbc~=4.0.32", "pyparsing~=3.0.9", "pyright~=1.1.294", diff --git a/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt b/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt index d21a603..e721ec7 100644 --- a/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt +++ b/python/dbr/19.x-gpu-ml-scala2.13/constraints.txt @@ -41,9 +41,6 @@ comm~=0.2.3 confection~=1.3.3 contourpy~=1.3.3 cryptography~=46.0.3 -cuda-bindings~=13.2.0 -cuda-pathfinder~=1.5.4 -cuda-toolkit~=13.0.2 cycler~=0.11.0 cymem~=2.0.13 databricks-agents~=1.10.2 diff --git a/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml b/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml index 0a97eaf..e001191 100644 --- a/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml +++ b/python/dbr/19.x-gpu-ml-scala2.13/pyproject.toml @@ -53,9 +53,6 @@ constraint-dependencies = [ "confection~=1.3.3", "contourpy~=1.3.3", "cryptography~=46.0.3", - "cuda-bindings~=13.2.0", - "cuda-pathfinder~=1.5.4", - "cuda-toolkit~=13.0.2", "cycler~=0.11.0", "cymem~=2.0.13", "databricks-agents~=1.10.2",