Skip to content

Untangle kernel loading, part 3 - #747

Merged
danieldk merged 7 commits into
mainfrom
untangle-loading3
Aug 5, 2026
Merged

danieldk merged 7 commits into
mainfrom
untangle-loading3

Conversation

@danieldk

@danieldk danieldk commented Aug 5, 2026

Copy link
Copy Markdown
Member
  • Remove unused KNOWN_BACKENDS variable.
  • Move get_kernel_variants to the variants module.
  • Move import-related functions to importer (note that we cannot have import because it is a keyboard).
  • Move validate_variant_dependencies to deps.
  • Move install functions to install.
  • Rename utils module to load.

@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 Aug 5, 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: 84.3% — threshold: 80% — ✅

Per-file breakdown
Name Stmts Miss Cover Missing
src/kernels/__init__.py 13 0 100%
src/kernels/_system.py 6 1 83% 10
src/kernels/_versions.py 63 7 89% 46, 49, 52-53, 56-57, 100
src/kernels/backends.py 212 62 71% 40, 44, 48-51, 68, 90, 108, 117, 121, 125-127, 148, 157, 161, 165-167, 188, 199, 201, 208-211, 224, 228, 232-252, 260, 283-303
src/kernels/compat.py 8 1 88% 5
src/kernels/deps.py 58 4 93% 59-60, 101, 104
src/kernels/hf_hub.py 62 5 92% 18, 20, 114, 136-137
src/kernels/importer.py 48 3 94% 106, 110, 113
src/kernels/install.py 50 5 90% 78, 116-117, 155, 173
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 82 7 91% 83, 113, 185, 303, 309, 322, 340
src/kernels/layer/globals.py 5 0 100%
src/kernels/layer/kernelize.py 74 8 89% 255, 281, 289-290, 296, 300, 316-318
src/kernels/layer/layer.py 211 16 92% 169, 212, 218, 231, 339, 419-420, 432, 441, 449, 460, 489, 493, 506, 559, 589
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 74 9 88% 218, 224, 230-231, 252-264
src/kernels/locking.py 108 70 35% 42-109, 113-136, 144, 148-155, 159-169, 173-180
src/kernels/status.py 49 2 96% 23, 81
src/kernels/variants.py 278 22 92% 64, 95, 116, 146, 255-256, 298-301, 303, 387-394, 400-406, 437-443, 455-461, 611-613
src/kernels/verify.py 88 1 99% 32
TOTAL 1804 283 84%

Updated by the Test kernels workflow on commit d58880204371c0479487828ccd4ab04bc2fc4b93.

@drbh drbh left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

lgtm!

@sayakpaul sayakpaul left a comment

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.

Looks really nice. Just some small questions.

Comment on lines +11 to +15
from kernels.install import (
install_kernel,
install_kernel_all_variants,
)
from kernels.locking import KernelLock, get_kernel_locks

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.

Love the separation!

from kernels.hf_hub import RepoInfo


@dataclass(frozen=True)

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.

What is the reasoning behind keeping something that is related to loading in "importer"?

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.

Because it's used by the import functionality. I think the lines between loading and importing is a bit blurry. But I think importing is the last part of loading, so this could have been called ImportedKernel as well.

_loaded_kernels: dict[Path, LoadedKernel] = {}


def get_loaded_kernels() -> list[LoadedKernel]:

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.

Same as above.

@danieldk
danieldk merged commit 81f55ea into main Aug 5, 2026
53 of 55 checks passed
@danieldk
danieldk deleted the untangle-loading3 branch August 5, 2026 15:03

This branch was previously deployed

1 inactive deployment
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.

4 participants