From ae319b11b0ff2df20b2d4f8dd80461c9a413adfa Mon Sep 17 00:00:00 2001 From: Daniel Han Date: Wed, 8 Jul 2026 01:45:18 +0000 Subject: [PATCH] Add cu128/cu126/cu130 torch 2.11.0 extras (torch2110) with xformers 0.0.35 The cu*-ampere-torch2100 / cu*-torch2100 extras cap the CUDA training stack at torch 2.10.0 because their xformers 0.0.34 wheel hard-requires torch==2.10.0. There was no torch 2.11.0 counterpart for the CUDA indexes, so anything that wants torch 2.11.0 (the Docker image, torchao 0.17.0, the rocm7.2 studio path) could not select a matching unsloth extra: torch==2.11.0 plus unsloth[cu128-ampere-torch2100] is unsatisfiable (xformers 0.0.34 -> torch 2.10.0). Add the torch2110 family mirroring the torch2100 layout for cu126/cu128/cu130: - cu{126,128,130}onlytorch2110: xformers 0.0.35 (linux + win32) plus an explicit torch>=2.11.0,<2.12.0 trio. xformers 0.0.35 does not hard-pin torch the way 0.0.34 pinned 2.10.0, so without the trio a bare resolve floats torch to 2.12.x; the pin keeps the "torch2110" name faithful and matches studio's torch>=2.11.0,<2.12.0 convention and the existing xpu torch2110 extra. - cu{126,128,130}-torch2110 and cu{126,128,130}-ampere-torch2110: huggingface + bitsandbytes + the matching onlytorch2110, same shape as the torch2100 wrappers. Resolves cleanly: unsloth[cu128-ampere-torch2110] -> torch 2.11.0+cu128 / torchvision 0.26.0 / torchaudio 2.11.0 / xformers 0.0.35. --- pyproject.toml | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 80b3d757e3..c26176ddd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -337,6 +337,31 @@ cu130onlytorch2100 = [ "xformers @ https://download.pytorch.org/whl/cu130/xformers-0.0.34-cp39-abi3-manylinux_2_28_x86_64.whl ; ('linux' in sys_platform)", "xformers @ https://download.pytorch.org/whl/cu130/xformers-0.0.34-cp39-abi3-win_amd64.whl ; (sys_platform == 'win32')", ] +cu126onlytorch2110 = [ + # xformers 0.0.35 does not hard-pin torch the way 0.0.34 pinned torch==2.10.0, + # so pin the torch 2.11.x trio explicitly to keep this "torch2110" extra faithful + # (a bare resolve otherwise floats torch up to 2.12.x). Mirrors studio's + # torch>=2.11.0,<2.12.0 convention and the xpu torch2110 extra. + "torch>=2.11.0,<2.12.0", + "torchvision>=0.26.0,<0.27.0", + "torchaudio>=2.11.0,<2.12.0", + "xformers @ https://download.pytorch.org/whl/cu126/xformers-0.0.35-py39-none-manylinux_2_28_x86_64.whl ; ('linux' in sys_platform)", + "xformers @ https://download.pytorch.org/whl/cu126/xformers-0.0.35-py39-none-win_amd64.whl ; (sys_platform == 'win32')", +] +cu128onlytorch2110 = [ + "torch>=2.11.0,<2.12.0", + "torchvision>=0.26.0,<0.27.0", + "torchaudio>=2.11.0,<2.12.0", + "xformers @ https://download.pytorch.org/whl/cu128/xformers-0.0.35-py39-none-manylinux_2_28_x86_64.whl ; ('linux' in sys_platform)", + "xformers @ https://download.pytorch.org/whl/cu128/xformers-0.0.35-py39-none-win_amd64.whl ; (sys_platform == 'win32')", +] +cu130onlytorch2110 = [ + "torch>=2.11.0,<2.12.0", + "torchvision>=0.26.0,<0.27.0", + "torchaudio>=2.11.0,<2.12.0", + "xformers @ https://download.pytorch.org/whl/cu130/xformers-0.0.35-py39-none-manylinux_2_28_x86_64.whl ; ('linux' in sys_platform)", + "xformers @ https://download.pytorch.org/whl/cu130/xformers-0.0.35-py39-none-win_amd64.whl ; (sys_platform == 'win32')", +] cu118 = [ "unsloth[huggingface]", "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", @@ -542,6 +567,21 @@ cu130-torch2100 = [ "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", "unsloth[cu130onlytorch2100]", ] +cu126-torch2110 = [ + "unsloth[huggingface]", + "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", + "unsloth[cu126onlytorch2110]", +] +cu128-torch2110 = [ + "unsloth[huggingface]", + "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", + "unsloth[cu128onlytorch2110]", +] +cu130-torch2110 = [ + "unsloth[huggingface]", + "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", + "unsloth[cu130onlytorch2110]", +] kaggle = [ "unsloth[huggingface]", ] @@ -841,6 +881,21 @@ cu130-ampere-torch2100 = [ "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", "unsloth[cu130onlytorch2100]", ] +cu126-ampere-torch2110 = [ + "unsloth[huggingface]", + "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", + "unsloth[cu126onlytorch2110]", +] +cu128-ampere-torch2110 = [ + "unsloth[huggingface]", + "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", + "unsloth[cu128onlytorch2110]", +] +cu130-ampere-torch2110 = [ + "unsloth[huggingface]", + "bitsandbytes>=0.45.5,!=0.46.0,!=0.48.0", + "unsloth[cu130onlytorch2110]", +] flashattentiontorch260abiFALSEcu12x = [ "flash-attn @ https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.6cxx11abiFALSE-cp39-cp39-linux_x86_64.whl ; ('linux' in sys_platform) and python_version == '3.9'", "flash-attn @ https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.6cxx11abiFALSE-cp310-cp310-linux_x86_64.whl ; ('linux' in sys_platform) and python_version == '3.10'",