## النوى

توثّق هذه الصفحة أدوات تكوين النوى.

### kernelize[[transformers.kernelize]]

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

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/integrations/hub_kernels.py#L953)

سجّل غلافات النواة المخفية مؤقتًا حتى يتمكن `kernelize` من اكتشافها واستبدالها.

### KernelConfig[[transformers.KernelConfig]]

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

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/kernel_config.py#L92)

فئة تكوين النواة. تُستخدم هذه الفئة لتكوين إسقاط النواة لنموذج.

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

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/kernel_config.py#L250)

يحوّل kernel_mapping بسيطاً من الشكل: { "RMSNorm": ("kernels-community/layer_norm:LlamaRMSNorm", {"version": 1, "trust_remote_code": True}), ... }،

أو للمسار المحلي:

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

إلى ترميز متداخل:

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

أو للمسار المحلي:

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

التي تتوافق مع مكتبة kernels.

يُستنتج الجهاز من معاملات النموذج إذا لم يُقدَّم. ويُستنتج الوضع من حالة تدريب النموذج.

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

```python
sanitize_kernel_mapping(model)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/kernel_config.py#L131)

**المعاملات:**

model : نموذجٌ يُفحص فيه وجود سمات kernel_layer_name مسجّلة في وحداته.

**يرفع:** ``ValueError``

- ``ValueError`` -- إذا لم يكن layer_name مسجلاً في النموذج، أو إذا لم يكن الجهاز مدعوماً، أو إذا لم يكن repo_name نصاً صالحاً بصيغة 'org/repo:layer_name'.

يتحقق من kernel_mapping للتأكد من أن:
1. يُسجَّل كل layer_name في الترميز داخل النموذج (أي أن النموذج يحتوي على وحدة تحمل kernel_layer_name مطابقًا).
2. كل قيمة نواة
   - سلسلة نصية من الشكل 'org/repo:layer_name' أو مجموعة (tuple) تحتوي على نفس السلسلة النصية مع قاموس (dict) من الشكل {"revision"/"version/trust_remote_code": ...}،
   - أو قاموس (dict) يربط أنواع الأجهزة المدعومة بقيم مماثلة لما سبق.
3. كل مفتاح جهاز في القاموس هو أحد "cuda" أو "rocm" أو "xpu" أو "npu" أو "neuron" أو "tpu" أو "mps".
5. يجب أن يكون كل مفتاح trust remote code من نوع bool.
6. يجب أن يكون كل مفتاح للمراجعة أو الإصدار حاضراً بشكل متبادل حصري إذا تم تمريره صراحةً.
7. كل repo_name هو مستودع وطبقة صالحان بالصيغة 'org/repo:layer_name' (أي سلسلة نصية تحتوي على شرطة مائلة ونقطتين معاً).
8. إذا تم اكتشاف مسار محلي، فيجب أن يكون بصيغة '/abs/path:layer_name'، حيث يشير المسار المطلق إلى مستودع النواة، مثل "/home/user/layer_norm".

