Skip to content

Fix fetch build fallback - #848

Open
SunMarc wants to merge 3 commits into
huggingface:mainfrom
SunMarc:fix-fetch-build
Open

SunMarc wants to merge 3 commits into
huggingface:mainfrom
SunMarc:fix-fetch-build

Conversation

@SunMarc

@SunMarc SunMarc commented Sep 24, 2026

Copy link
Copy Markdown
Member

What does this PR do ?

Currently, when trying to kernelize a model or a layer but the kernel repo doesn't have a build that is compatible with our hardware, we will have a hard failure instead of fallback. Not sure if this is intended or not ?

This is an issue I had when testing kernels with transformers with use_kernels=True

>>> model = AutoModelForCausalLM.from_pretrained(
...       "trl-internal-testing/tiny-Qwen2ForCausalLM-2.5",
...       device_map="cuda:0",
...   )
Loading weights: 100%|███████████████████████████████████████████████████████████| 27/27 [00:00<00:00, 131.42it/s]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/admin/home/marc/transformers/.claude/worktrees/fsdp-meta/src/transformers/models/auto/auto_factory.py", line 409, in from_pretrained
    return model_class.from_pretrained(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/admin/home/marc/transformers/.claude/worktrees/fsdp-meta/src/transformers/modeling_utils.py", line 4390, in from_pretrained
    model.set_use_kernels(use_kernels, kernel_config, kernels_mode)
  File "/admin/home/marc/transformers/.claude/worktrees/fsdp-meta/src/transformers/modeling_utils.py", line 3828, in set_use_kernels
    kernelize(self)
  File "/admin/home/marc/transformers/.claude/worktrees/fsdp-meta/src/transformers/integrations/hub_kernels.py", line 947, in kernelize
    _kernels_kernelize(model, device=device, mode=used_mode)
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/layer/kernelize.py", line 267, in kernelize
    kernelize_layer(
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/layer/layer.py", line 526, in kernelize_layer
    layer = _get_layer_memoize(repo, module_class)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/layer/layer.py", line 659, in _get_layer_memoize
    layer = repo.load()
            ^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/layer/layer.py", line 116, in load
    kernel = get_kernel(
             ^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/load.py", line 168, in get_kernel
    return get_kernel_with_resolver(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/load.py", line 85, in get_kernel_with_resolver
    tree = resolve_kernel_tree(
           ^^^^^^^^^^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/deps.py", line 111, in resolve_kernel_tree
    location = resolver.resolve(api=api, backend=backend, kernel=kernel) if resolver else None
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/resolver.py", line 257, in resolve
    location = resolver.resolve(api=api, backend=backend, kernel=kernel)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/admin/home/marc/miniconda3/envs/test_bis/lib/python3.11/site-packages/kernels/resolver.py", line 284, in resolve
    return resolve_hub_kernel(kernel.repo_id, api=api, revision=revision, backend=backend)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

@github-actions

Copy link
Copy Markdown

Hi @SunMarc, thanks for your interest in contributing!

This project requires that pull request authors are vouched, and you are not in the list of vouched users.

This PR will be closed automatically. See https://github.com/huggingface/kernels/blob/main/CONTRIBUTING.md for more details.

@github-actions github-actions Bot closed this Sep 24, 2026
@SunMarc

SunMarc commented Sep 24, 2026

Copy link
Copy Markdown
Member Author

;)

@danieldk danieldk reopened this Sep 24, 2026
except FileNotFoundError:
if not use_fallback:
raise
_replace_forward(module, module_class)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case, since there is a layer/device/repo registered, it might be good to emit a logging.warning that there is no correct build variant.

@SunMarc SunMarc Sep 24, 2026 •

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay will do ! maybe logging.info instead ? I feel like it will be too verbose otherwise, especially in transformers

@HuggingFaceDocBuilderDev

Copy link
Copy Markdown

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Coverage report — kernels/

Measured on: Python 3.10 / Torch 2.13.0.
Other CI configurations are not included in this number.
Hardware-gated code paths (ROCm/XPU/NPU/Darwin/Windows) are excluded or unreachable on the Linux+CUDA runner.

Total coverage: 87.3% — threshold: 80% — ✅

Per-file breakdown
Name Stmts Miss Cover Missing
src/kernels/__init__.py 14 0 100%
src/kernels/_system.py 6 1 83% 10
src/kernels/_versions.py 130 14 89% 53, 59-60, 63-64, 102, 165-170, 199, 219
src/kernels/archs.py 56 1 98% 94
src/kernels/backends.py 213 62 71% 42, 46, 50-53, 70, 92, 110, 119, 123, 127-129, 150, 159, 163, 167-169, 190, 201, 203, 210-213, 226, 230, 234-254, 262, 285-305
src/kernels/compat.py 9 1 89% 5
src/kernels/deps.py 70 1 99% 56
src/kernels/hf_hub.py 63 2 97% 21, 23
src/kernels/importer.py 44 5 89% 80, 84, 87, 101-102
src/kernels/install.py 21 7 67% 76-100
src/kernels/layer/__init__.py 6 0 100%
src/kernels/layer/_interval_tree.py 103 4 96% 23, 52, 147, 150
src/kernels/layer/device.py 48 14 71% 42, 47-49, 91, 96-98, 101, 149, 152, 155-157
src/kernels/layer/func.py 85 6 93% 90, 115, 191, 311, 338, 368
src/kernels/layer/globals.py 5 0 100%
src/kernels/layer/kernelize.py 82 8 90% 259, 297, 305-306, 312, 316, 332-334
src/kernels/layer/layer.py 232 14 94% 207, 254, 281, 415, 495-496, 517, 525, 536, 576, 580, 593, 646, 676
src/kernels/layer/mode.py 14 0 100%
src/kernels/layer/repos.py 144 42 71% 27, 33, 36-43, 63-64, 70, 73-76, 90, 94, 103-104, 110, 113-116, 123-124, 130, 133-136, 143-144, 150, 153-156, 163-164, 170, 173-176, 257
src/kernels/load.py 71 2 97% 338, 378
src/kernels/locking.py 89 64 28% 35-83, 91-98, 102-125, 137, 152-159, 165-175, 179-186
src/kernels/python_deps.py 58 6 90% 59-60, 64-65, 101, 104
src/kernels/resolver.py 156 2 99% 220, 226
src/kernels/status.py 50 2 96% 25, 79
src/kernels/validate.py 88 5 94% 9, 100, 167, 190-191
src/kernels/variants.py 278 19 93% 65, 96, 117, 147, 256-257, 299-302, 304, 388-394, 400-406, 437-443, 455-461
src/kernels/verify.py 127 6 95% 46, 202-204, 318-319
TOTAL 2262 288 87%

Updated by the Test kernels workflow on commit df7d1574924f2103f0c60a2fe7cf4328680d8fec.

@SunMarc

SunMarc commented Sep 24, 2026

Copy link
Copy Markdown
Member Author

cc @danieldk

@SunMarc
SunMarc requested a review from danieldk September 24, 2026 16:18
__all__ = [
"CUDAProperties",
"Device",
"Fallback",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super nice!

Now that I see the top-level export, I think it might be better to call this KernelizeFallback to add a bit of scoping.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants