Skip to content

kernels: implement kernels cache ls - #932

Merged
sayakpaul merged 6 commits into
mainfrom
kernels-cache-ls
Oct 26, 2026
Merged

sayakpaul merged 6 commits into
mainfrom
kernels-cache-ls

Conversation

@sayakpaul

@sayakpaul sayakpaul commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Fixes #930

I have taken the approach of using huggingface_hub utilities as much as possible to make it like a hf cache ls + variants.

@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 Oct 23, 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: 88.5% — 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 215 63 71% 42, 46, 50-53, 70, 92, 110, 119, 123, 127-129, 150, 159, 163, 167-169, 190, 201, 203, 210-213, 222, 226, 230-255, 263, 286-306
src/kernels/compat.py 9 1 89% 5
src/kernels/deps.py 70 1 99% 56
src/kernels/digest.py 58 5 91% 71-73, 136-137
src/kernels/hf_hub.py 63 2 97% 21, 23
src/kernels/importer.py 74 5 93% 158, 162, 165, 179-180
src/kernels/install.py 21 7 67% 76-100
src/kernels/layer/__init__.py 7 0 100%
src/kernels/layer/_interval_tree.py 103 4 96% 23, 52, 147, 150
src/kernels/layer/device.py 48 12 75% 42, 47-49, 91, 96-98, 101, 149, 152, 156
src/kernels/layer/func.py 93 5 95% 94, 119, 195, 315, 390
src/kernels/layer/globals.py 5 0 100%
src/kernels/layer/inspect.py 27 0 100%
src/kernels/layer/kernelize.py 82 8 90% 259, 297, 305-306, 312, 316, 332-334
src/kernels/layer/layer.py 320 14 96% 212, 259, 435, 575-576, 597, 605, 616, 657, 661, 674, 729, 770, 845
src/kernels/layer/mode.py 14 0 100%
src/kernels/layer/repos.py 144 36 75% 33, 36-43, 74, 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 162 1 99% 248
src/kernels/status.py 50 2 96% 25, 79
src/kernels/validate.py 104 7 93% 9, 101, 172, 195-196, 232-233
src/kernels/variants.py 278 17 94% 65, 96, 117, 147, 256-257, 299-302, 304, 388-394, 400-406, 455-461
src/kernels/verify.py 102 6 94% 44, 170-172, 260-261
TOTAL 2473 284 89%

Updated by the Test kernels workflow on commit 697a666052cfdc51481642207a9dbdc4f177e834.

@sayakpaul
sayakpaul marked this pull request as ready for review October 23, 2026 12:37
get the latest kernel build from the `v1` branch.

You can check whether a kernel was downloaded with `hf cache ls`:
You can check which kernels and build variants are cached with

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.

We can remove this when we overhaul this page soon and have a dedicated caching page.

Comment thread docs/source/basic-usage.md Outdated
Comment on lines +43 to +45
Each row includes variants from all cached revisions of that repository.
Use `kernels cache ls --no-truncate` or `--json` to see full values when the
table is shortened to fit your terminal.

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.

Closely follows hf cache ls.

Comment thread kernels/pyproject.toml
requires-python = ">= 3.10"
dependencies = [
"huggingface-hub>=1.31.0",
"huggingface-hub>=1.32.0",

@sayakpaul sayakpaul Oct 23, 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.

So that we can rely on huggingface_hub utilities as much as possible.

drbh
drbh previously approved these changes Oct 23, 2026

@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.

nice feature, lgtm!

Comment thread docs/source/cli-cache.md Outdated
Comment on lines +34 to +35
`VARIANTS` contains a sorted, comma-separated list of all build variants present
in the repository's cached snapshots. Repeated variant names appear once.

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.

Hmmm. If they were duplicated, they were different versions. I think it'd be better to list different refs on different lines, so that one can see what variants are stored for a particular version.

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.

Agreed. Fixed.

Comment thread docs/source/cli-cache.md Outdated
```text
ID SIZE LAST_ACCESSED LAST_MODIFIED REFS VARIANTS
----------------------------------- ---- -------------- -------------- ---- --------------------------------
kernel/kernels-community/activation 2.5M 45 minutes ago 45 minutes ago v1 torch28-cxx11-cu128-x86_64-linux

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.

I am not sure about using refs. We use and promote versions everywhere, so I think the default column rendering should be versions. Maybe a --refs argument could be used to override it.

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.

I changed to VERSION. I didn't do any option for REFS, though. I don't think it's that useful in the context of kernels.

Comment thread docs/source/cli-cache.md
Comment on lines +43 to +45
Like `hf cache ls`, the table shortens long values to fit the terminal width.
Use `--no-truncate` or `--json` to see all values in full. Cache inconsistencies
produce a short summary by default; use `--show-warnings` to see their details.

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.

I think it would be nicer if the row got multiple lines in this case, so that all variants can always be listed. Truncation is not nice, but lines wider than the terminal is also not nice.

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.

Should be fixed now.

@sayakpaul
sayakpaul requested a review from danieldk October 26, 2026 04:52
@danieldk danieldk changed the title kernels: implement kernels cache ls. kernels: implement kernels cache ls Oct 26, 2026

@danieldk danieldk 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.

Really cool! Definitely going to use this frequently for my cache spelunking! 🚀

Comment on lines +60 to +70
rows.append(
[
f"kernel/{repo.repo_id}",
revision.size_on_disk_str,
format_timesince(last_accessed),
revision.last_modified_str,
version,
variants[0] if variants else "-",
]
)
rows.extend(["", "", "", "", "", variant] for variant in variants[1:])

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.

Nice!

@sayakpaul
sayakpaul merged commit 28a8e1d into main Oct 26, 2026
53 checks passed
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.

Add kernels cache ls to list cached kernels with their versions/refs and build variants

4 participants