mirror of
https://github.com/huggingface/kernels.git
synced 2025-10-21 05:30:30 +08:00
63 lines
1.8 KiB
Markdown
63 lines
1.8 KiB
Markdown
# 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:
|
|
|
|
```toml
|
|
[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`:
|
|
|
|
```python
|
|
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:
|
|
|
|
```python
|
|
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:
|
|
|
|
```python
|
|
from kernels import load_kernel
|
|
|
|
activation = load_kernel("kernels-community/activation")
|
|
```
|