Kernels documentation

Locking kernel/layer versions

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Locking kernel/layer versions

Projects that use setuptools can lock the kernel versions that should be used. First specify the accepted versions in pyproject.toml and make sure that kernels is a build dependency:

[build-system]
requires = ["kernels", "setuptools"]
build-backend = "setuptools.build_meta"

[tool.kernels.dependencies]
"kernels-community/activation" = ">=0.0.1"

Then run kernels lock . in the project directory. This generates a kernels.lock file with the locked revisions. The locked revision will be used when loading a kernel with get_locked_kernel:

from kernels import get_locked_kernel

activation = get_locked_kernel("kernels-community/activation")

Note: the lock file is included in the package metadata, so it will only be visible to kernels after doing an (editable or regular) installation of your project.

Locked kernel layers

Locking is also supported for kernel layers. To use locked layers, register them with the LockedLayerRepository class:

kernel_layer_mapping = {
    "SiluAndMul": {
        "cuda": LockedLayerRepository(
            repo_id="kernels-community/activation",
            layer_name="SiluAndMul",
        )
    }
}

register_kernel_mapping(kernel_layer_mapping)

Pre-downloading locked kernels

Locked kernels can be pre-downloaded by running kernels download . in your project directory. This will download the kernels to your local Hugging Face Hub cache.

The pre-downloaded kernels are used by the get_locked_kernel function. get_locked_kernel will download a kernel when it is not pre-downloaded. If you want kernel loading to error when a kernel is not pre-downloaded, you can use the load_kernel function instead:

from kernels import load_kernel

activation = load_kernel("kernels-community/activation")
< > Update on GitHub