## Kernels

Trang này tài liệu hóa các tiện ích cấu hình kernel.

### kernelize[[transformers.kernelize]]

#### transformers.kernelize[[transformers.kernelize]]

```python
transformers.kernelize(model: PreTrainedModel, mode: Mode | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/hub_kernels.py#L953)

Đăng ký tạm thời các wrapper kernel ẩn để `kernelize` có thể phát hiện và thay thế chúng.

### KernelConfig[[transformers.KernelConfig]]

#### transformers.KernelConfig[[transformers.KernelConfig]]

```python
transformers.KernelConfig(kernel_mapping = None, use_local_kernel = False, inherit_mapping = True)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/kernel_config.py#L92)

Lớp cấu hình kernel. Lớp này được sử dụng để cấu hình ánh xạ kernel cho một mô hình.

#### create_compatible_mapping[[transformers.KernelConfig.create_compatible_mapping]]

```python
create_compatible_mapping(model, compile = False)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/kernel_config.py#L250)

Biến đổi một kernel_mapping đơn giản có dạng: { "RMSNorm": ("kernels-community/layer_norm:LlamaRMSNorm", {"version": 1, "trust_remote_code": True}), ... },

hoặc cho đường dẫn cục bộ:

{ "RMSNorm": "/home/user/liger_kernels:LigerRMSNorm", ... },

thành một ánh xạ lồng nhau:

{ "RMSNorm": { "cuda": { Mode.INFERENCE: LayerRepository( repo_id="kernels-community/layer_norm", layer_name="LlamaRMSNorm", version=1, trust_remote_code=True, ) } } }

hoặc cho đường dẫn cục bộ:

{ "RMSNorm": { "cuda": { Mode.INFERENCE: LocalLayerRepository( repo_path=Path("/home/user/liger_kernels"), layer_name="LigerRMSNorm", ) } } }

tương thích với thư viện kernels.

Thiết bị sẽ được suy ra từ các tham số của mô hình nếu không được cung cấp. Chế độ sẽ được suy ra từ trạng thái huấn luyện của mô hình.

#### sanitize_kernel_mapping[[transformers.KernelConfig.sanitize_kernel_mapping]]

```python
sanitize_kernel_mapping(model)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/kernel_config.py#L131)

**Tham số:**

model : Bản thể hiện mô hình mà các module của nó được kiểm tra xem có thuộc tính kernel_layer_name đã đăng ký hay không.

**Lỗi:** ``ValueError``

- ``ValueError`` -- Nếu layer_name không được đăng ký trong model, nếu device không được hỗ trợ, hoặc nếu repo_name không phải là chuỗi 'org/repo:layer_name' hợp lệ.

Kiểm tra tính hợp lệ của kernel_mapping để đảm bảo rằng:
1. Mỗi layer_name trong mapping được đăng ký trong model (tức là model chứa một module có kernel_layer_name khớp).
2. Mỗi giá trị kernel là
   - một chuỗi có dạng 'org/repo:layer_name' hoặc một tuple chứa cùng nội dung với chuỗi đó và một dict của {"revision"/"version/trust_remote_code": ...},
   - hoặc một dict ánh xạ các loại thiết bị được hỗ trợ đến các giá trị như trên.
3. Mỗi khóa thiết bị trong một dict là một trong "cuda", "rocm", "xpu", "npu", "neuron", "tpu", hoặc "mps".
5. Mỗi khóa trust remote code phải là một giá trị bool.
6. Mỗi khóa revision hoặc version phải tồn tại độc quyền với nhau nếu chúng được truyền vào một cách tường minh.
7. Mỗi repo_name là một tên kho và tên lớp hợp lệ ở định dạng 'org/repo:layer_name' (tức là một chuỗi chứa cả dấu gạch chéo và dấu hai chấm).
8. Nếu phát hiện đường dẫn cục bộ, nó phải ở định dạng '/abs/path:layer_name', trong đó đường dẫn tuyệt đối trỏ đến kho kernel, ví dụ "/home/user/layer_norm".

