Buckets:

hf-doc-build/doc / diffusers /main /ar /api /quantization.md
mishig's picture
|
download
raw
31.1 kB
# التكميم
تُقلّل تقنيات التكميم من تكاليف الذاكرة والحساب من خلال تمثيل الأوزان والتفعيلات بأنواع بيانات ذات دقة أقل، مثل الأعداد الصحيحة الثمانية البتات (int8). وهذا يتيح تحميل نماذج أكبر لا يمكن عادةً استيعابها في الذاكرة، وتسريع الاستدلال.
> [!TIP]
> تعلّم كيفية تكميم النماذج في دليل [Quantization](../quantization/overview).
## PipelineQuantizationConfig[[diffusers.PipelineQuantizationConfig]]
#### diffusers.PipelineQuantizationConfig[[diffusers.PipelineQuantizationConfig]]
```python
diffusers.PipelineQuantizationConfig(quant_backend: str = None, quant_kwargs: dict[str, str | float | int | dict] = None, components_to_quantize: list[str] | str | None = None, quant_mapping: dict[str, DiffQuantConfigMixin | 'TransformersQuantConfigMixin'] = None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/pipe_quant_config.py#L34)
**المعاملات:**
quant_backend (`str`) : واجهة الكمية (Quantization backend) التي سيتم استخدامها. عند استخدام هذا الخيار، نفترض أن الواجهة متاحة لكل من `diffusers` و`transformers`.
quant_kwargs (`dict`) : المعاملات اللازمة لتصفية فئة واجهة الخلفية (backend) للكمّية.
components_to_quantize (`list`) : مكونات خط الأنابيب الذي سيتم تكميمه.
quant_mapping (`dict`) : تعيين يحدد مواصفات التكميم (quantization) التي سيتم استخدامها لمكونات خط المعالجة. عند استخدام هذا الحُجج، لا يُتوقع من المستخدمين تقديم `quant_backend`، و`quant_kawargs`، و`components_to_quantize`.
فئة التكوين المستخدمة عند تطبيق التكميم أثناء التشغيل على [from_pretrained()](/docs/diffusers/main/ar/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained).
## BFLQuantizationConfig[[diffusers.BFLQuantizationConfig]]
#### diffusers.BFLQuantizationConfig[[diffusers.BFLQuantizationConfig]]
```python
diffusers.BFLQuantizationConfig(compute_dtype: 'torch.dtype' | None = None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L427)
**المعاملات:**
compute_dtype (`torch.dtype`، الافتراضي هو `torch.bfloat16`) : نوع البيانات (dtype) للتفعيلات وللطبقات غير المُكمّاة. الأجهزة التي لا تحتوي على نواة FP8 أو NVFP4 مدمجة تقوم بإلغاء تكميم الأوزان إلى هذا النوع من البيانات في كل تمريرة أمامية.
إعدادات لتحميل نقاط التفتيش المُكمّمة باستخدام مخططي `fp8r` و`nvfp4` من Black Forest Labs.
تُقرأ كلا المخططين من نقطة الحفظ عبر `~FromSingleFileMixin.from_single_file`؛ ولا يُدعم تكميم النموذج أثناء التشغيل. يتم تكميم طبقة خطية عندما يأتي وزنها مع مصفوفات مقياس:
- `fp8r`: `weight` هو `float8_e4m3fn` بالشكل `[N, K]` و`weight_scale` هو مقياس fp32 لكل صف `[N]`.
- `nvfp4`: `weight` هو `uint8` بشكل `[N, K/2]` (قيمتان E2M1 لكل بايت)، و`weight_scale` هو مقياس كتلة `float8_e4m3fn` بشكل `[N, K/16]`، بينما `weight_scale_2` و`input_scale` هما قيمتان قياسية fp32 تحملان مقياس الأوزان العام ومقياس التنشيط المُعايَر (تخطيط ModelOpt NVFP4).
## BitsAndBytesConfig[[diffusers.BitsAndBytesConfig]]
#### diffusers.BitsAndBytesConfig[[diffusers.BitsAndBytesConfig]]
```python
diffusers.BitsAndBytesConfig(load_in_8bit = False, load_in_4bit = False, llm_int8_threshold = 6.0, llm_int8_skip_modules = None, llm_int8_enable_fp32_cpu_offload = False, llm_int8_has_fp16_weight = False, bnb_4bit_compute_dtype = None, bnb_4bit_quant_type = 'fp4', bnb_4bit_use_double_quant = False, bnb_4bit_quant_storage = None, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L171)
**المعاملات:**
load_in_8bit (`bool`، *اختياري*، القيمة الافتراضية `False`) : يُستخدم هذا العلم لتفعيل التكميم 8-بت باستخدام LLM.int8().
load_in_4bit (`bool`، *اختياري*، القيمة الافتراضية `False`) : يُستخدم هذا العلم لتفعيل التكميم 4-بت عن طريق استبدال طبقات Linear بطبقات FP4/NF4 من `bitsandbytes`.
llm_int8_threshold (`float`، *اختياري*، القيمة الافتراضية 6.0) : يتوافق هذا مع عتبة القيم الشاذة لكشف القيم الشاذة كما هو موصوف في ورقة `LLM.int8() : 8-bit Matrix Multiplication for Transformers at Scale`: https://huggingface.co/papers/2208.07339 أي قيمة لحالة خفية تتجاوز هذه العتبة ستُعتبر قيمة شاذة، وسيتم تنفيذ العملية على تلك القيم باستخدام fp16. عادةً ما تكون القيم موزعة بشكل طبيعي، أي أن معظمها يقع في النطاق [-3.5، 3.5]، لكن هناك بعض القيم الشاذة المنهجية الاستثنائية التي تكون موزعة بشكل مختلف تمامًا في النماذج الكبيرة. غالبًا ما تقع هذه القيم الشاذة في الفترة [-60، -6] أو [6، 60]. يعمل تكميم Int8 بشكل جيد للقيم ذات المقدار ~5، لكن ما يتجاوز ذلك، هناك عقوبة أداء كبيرة. عتبة افتراضية جيدة هي 6، لكن قد تكون هناك حاجة إلى عتبة أقل للنماذج الأقل استقرارًا (النماذج الصغيرة، الضبط الدقيق).
llm_int8_skip_modules (`list[str]`، *اختياري*) : قائمة صريحة بالوحدات التي لا نرغب في تحويلها إلى 8 بت. هذا مفيد للنماذج مثل Jukebox التي تحتوي على عدة رؤوس في مواقع مختلفة وليس بالضرورة في الموقع الأخير. على سبيل المثال، في نماذج `CausalLM`، يُحافظ عادةً على `lm_head` الأخير في `dtype` الأصلي الخاص به.
llm_int8_enable_fp32_cpu_offload (`bool`، *اختياري*، القيمة الافتراضية `False`) : يُستخدم هذا العلم لحالات الاستخدام المتقدمة وللمستخدمين الذين على دراية بهذه الميزة. إذا كنت ترغب في تقسيم نموذجك إلى أجزاء مختلفة وتشغيل بعض الأجزاء بدقة int8 على وحدة معالجة الرسوميات GPU وبعض الأجزاء بدقة fp32 على وحدة المعالجة المركزية CPU، يمكنك استخدام هذا العلم. وهذا مفيد لتحميل النماذج الكبيرة مثل `google/flan-t5-xxl`. لاحظ أن عمليات int8 لن تُنفَّذ على وحدة المعالجة المركزية CPU.
llm_int8_has_fp16_weight (`bool`، *اختياري*، القيمة الافتراضية `False`) : يعمل هذا العلم على تشغيل LLM.int8() مع أوزان رئيسية بدقة 16 بت. وهذا مفيد للضبط الدقيق (fine-tuning) حيث لا حاجة لتحويل الأوزان ذهابًا وإيابًا من أجل المرور العكسي (backward pass).
bnb_4bit_compute_dtype (`torch.dtype` أو str، *اختياري*، الافتراضي `torch.float32`) : يحدد هذا نوع الحساب الذي قد يختلف عن نوع الإدخال. على سبيل المثال، قد تكون المدخلات من نوع fp32، لكن يمكن ضبط الحساب على bf16 لتحقيق تسريع.
bnb_4bit_quant_type (`str`، *اختياري*، القيمة الافتراضية `"fp4"`) : يحدد هذا نوع بيانات التكميم في طبقات bnb.nn.Linear4Bit. الخيارات هي أنواع بيانات FP4 وNF4 التي تُحدد بواسطة `fp4` أو `nf4`.
bnb_4bit_use_double_quant (`bool`، *اختياري*، القيمة الافتراضية `False`) : يُستخدم هذا العلم للتكميم المتداخل، حيث يتم تكميم ثوابت التكميم من التكميم الأول مرة أخرى.
bnb_4bit_quant_storage (`torch.dtype` أو str، *اختياري*، الافتراضي `torch.uint8`) : يحدد نوع التخزين لتعبئة المعاملات الكمّية ذات 4 بت.
kwargs (`dict[str, Any]`، *اختياري*) : معلمات إضافية يتم من خلالها تهيئة كائن الإعدادات.
هذه فئة غلاف (wrapper class) تجمع جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام `bitsandbytes`.
يستبدل هذا الخيار `load_in_8bit` أو `load_in_4bit` وبالتالي فإن كلا الخيارين متنافيان.
يدعم حاليًا `LLM.int8()`، `FP4`، و`NF4` فقط. إذا أُضيفت طرق أخرى إلى `bitsandbytes`، فسيتم إضافة حُجج إضافية إلى هذه الفئة.
#### is_quantizable[[diffusers.BitsAndBytesConfig.is_quantizable]]
```python
is_quantizable()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L343)
يعيد `True` إذا كان النموذج قابلًا للكمّية، وإلا يعيد `False`.
#### post_init[[diffusers.BitsAndBytesConfig.post_init]]
```python
post_init()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L313)
فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.
#### quantization_method[[diffusers.BitsAndBytesConfig.quantization_method]]
```python
quantization_method()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L349)
تعيد هذه الطريقة طريقة التكميم المستخدمة للنموذج. إذا لم يكن النموذج قابلاً للتكميم، فإنها تعيد `None`.
#### to_diff_dict[[diffusers.BitsAndBytesConfig.to_diff_dict]]
```python
to_diff_dict()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L380)
**يعيد:** `dict[str, Any]`
قاموس بجميع السمات التي تُشكّل هذا المثال من التهيئة،
يزيل جميع الخصائص من config التي تتوافق مع خصائص الإعداد الافتراضي لتحسين قابلية القراءة، ثم يُسلسلها إلى قاموس Python.
## GGUFQuantizationConfig[[diffusers.GGUFQuantizationConfig]]
#### diffusers.GGUFQuantizationConfig[[diffusers.GGUFQuantizationConfig]]
```python
diffusers.GGUFQuantizationConfig(compute_dtype: 'torch.dtype' | None = None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L404)
**المعاملات:**
compute_dtype : (`torch.dtype`، الافتراضي هو `torch.float32`): يحدد هذا نوع الحساب، والذي قد يختلف عن نوع الإدخال. على سبيل المثال، قد تكون المدخلات من نوع fp32، لكن يمكن ضبط الحساب على bf16 لتحقيق تسريع.
هذا هو فئة إعدادات لتقنيات تكميم GGUF.
## NunchakuLiteQuantizationConfig[[diffusers.NunchakuLiteQuantizationConfig]]
#### diffusers.NunchakuLiteQuantizationConfig[[diffusers.NunchakuLiteQuantizationConfig]]
```python
diffusers.NunchakuLiteQuantizationConfig(compute_dtype: 'torch.dtype' | str | None = None, svdq_w4a4: dict[str, Any] | None = None, awq_w4a16: dict[str, Any] | None = None, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L451)
**المعاملات:**
compute_dtype (`torch.dtype`، الافتراضي هو `torch.bfloat16`) : نوع البيانات (dtype) المستخدم وقت التشغيل في المخازن المؤقتة ذات الفاصلة العائمة داخل الوحدات المُكمّمة.
svdq_w4a4 (`dict`, *اختياري*) : تكوين SVDQ W4A4 المستهدف الصريح مع `precision` و`group_size` و`rank` و`targets`.
awq_w4a16 (`dict`، *اختياري*) : إعدادات AWQ W4A16 المستهدفة الصريحة مع `precision` و`group_size` و`targets`.
إعدادات لتحميل نقاط التفتيش الخاصة بـ Nunchaku Lite.
يدعم Nunchaku Lite في Diffusers تحميل نقاط التفتيش المُكمّاة مسبقًا. لإنشاء نقطة تفتيش متوافقة، استخدم [`diffuse-compressor`](https://github.com/rootonchair/diffuse-compressor) لاختيار أو تكييف إعداد مستهدف لبنية النموذج، ثم قم بتكميم المُحوِّل وتصديره، وجمّعه كخط أنابيب Diffusers مع تخزين `quantization_config` المدمج في `config.json`.
يجب أن يطابق state dict المُصدَّر بنية نموذج Diffusers المستهدف تمامًا. لن يتم تحميل نقاط التفتيش المُكمَّاة باستخدام إسقاطات QKV المدمجة في إعدادات نموذج يتوقع وحدات إسقاط منفصلة لكل من Q وK وV.
مثال على إعداد `config.json` مضغوط:
```json
{
"_class_name": "ErnieImageTransformer2DModel",
"quantization_config": {
"quant_method": "nunchaku_lite",
"compute_dtype": "bfloat16",
"svdq_w4a4": {
"precision": "nvfp4",
"group_size": 16,
"rank": 32,
"targets": ["layers.0.self_attention.to_q"]
},
"awq_w4a16": {
"precision": "int4",
"group_size": 64,
"targets": ["final_linear"]
}
}
}
```
## QuantoConfig[[diffusers.QuantoConfig]]
#### diffusers.QuantoConfig[[diffusers.QuantoConfig]]
```python
diffusers.QuantoConfig(weights_dtype: str = 'int8', modules_to_not_convert: list[str] | None = None, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L669)
**المعاملات:**
weights_dtype (`str`، *اختياري*، القيمة الافتراضية `"int8"`) : نوع البيانات المستهدف للأوزان بعد التكميم. القيم المدعومة هي ("float8","int8","int4","int2")
هذه فئة غلاف (wrapper class) تجمع جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام `quanto`.
`QuantoConfig` لم يعد مدعومًا وسيتم إزالته في الإصدار 1.0.0. يُنصح بالانتقال إلى أحد محركات الكمّية الأخرى المدعومة، مثل [BitsAndBytesConfig](/docs/diffusers/main/ar/api/quantization#diffusers.BitsAndBytesConfig) أو [TorchAoConfig](/docs/diffusers/main/ar/api/quantization#diffusers.TorchAoConfig).
modules_to_not_convert (`list`، *اختياري*، القيمة الافتراضية `None`): قائمة الوحدات التي يجب عدم تكميمها، وهو مفيد لتكميم النماذج التي تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية (مثل مشفّر Whisper، ومشفّر Llava، وطبقات بوابة Mixtral).
#### post_init[[diffusers.QuantoConfig.post_init]]
```python
post_init()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L703)
فاحص الأمان الذي يتحقق من صحة الحُجج
## SDNQConfig[[diffusers.SDNQConfig]]
#### diffusers.SDNQConfig[[diffusers.SDNQConfig]]
```python
diffusers.SDNQConfig(*args, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L981)
**المعاملات:**
weights_dtype (`str`، *اختياري*، القيمة الافتراضية `"int8"`) : نوع البيانات المستهدف للأوزان بعد التكميم، مثل `"int8"`، `"uint4"`، `"float8_e4m3fn"`. راجع `sdnq.common.accepted_weight_dtypes` لجميع القيم المدعومة.
group_size (`int`، *اختياري*، القيمة الافتراضية `0`) : عدد عناصر الموتر (Tensor) التي تشترك في نفس مجموعة التكميم. يقوم `0` باختيار تلقائي بناءً على `weights_dtype`، بينما يعطّل `-1` التجميع ويستخدم التكميم على مستوى الصفوف.
use_svd (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم تطبيق خوارزمية SVDQuant فوق تكميم SDNQ.
use_quantized_matmul (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم استخدام ضرب المصفوفات الكمي INT8 / FP8 / FP16 في المرور الأمامي بدلاً من BF16 / FP16.
modules_to_not_convert (`list`، *اختياري*، القيمة الافتراضية `None`) : قائمة الوحدات التي يجب تجاوزها أثناء التكميم.
kwargs (`dict[str, Any]`، *اختياري*) : حُجج إضافية تُمرَّر إلى `sdnq.SDNQConfig` (مثل `quantized_matmul_dtype`، `svd_rank`، `use_hadamard`، `quant_conv`، `quant_embedding`، `modules_dtype_dict`).
فئة التهيئة لـ SDNQ (SD.Next Quantization).
تأتي مكتبة `sdnq` مع إعدادات ومكمِّم متوافقين مع diffusers؛ هذه الفئة هي مصنع رفيع يحوّل المهام إليهما بحيث تُحمَّل نقاط التفتيش التي تحتوي على `quant_method="sdnq"` بشكل أصلي مع diffusers. يتم تمرير جميع الحُجج إلى `sdnq.SDNQConfig`. تتطلب هذه العملية مكتبة `sdnq`: `pip install sdnq`.
مرجع: https://github.com/Disty0/sdnq
## TorchAoConfig[[diffusers.TorchAoConfig]]
#### diffusers.TorchAoConfig[[diffusers.TorchAoConfig]]
```python
diffusers.TorchAoConfig(quant_type: 'AOBaseConfig', modules_to_not_convert: list[str] | None = None, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L572)
**المعاملات:**
quant_type (`AOBaseConfig`) : نسخة من فئة فرعية من `AOBaseConfig` تحدد نوع التكميم. راجع [توثيق torchao](https://docs.pytorch.org/ao/main/api_ref_quantization.html#inference-apis-for-quantize) لمعرفة فئات الإعدادات المتاحة (مثل `Int4WeightOnlyConfig`، `Int8WeightOnlyConfig`، `Float8WeightOnlyConfig`، `Float8DynamicActivationFloat8WeightConfig`، وغيرها).
modules_to_not_convert (`list[str]`، *اختياري*، الافتراضي `None`) : قائمة الوحدات التي يجب عدم تكميمها، وهو مفيد لتكميم النماذج التي تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية.
هذا هو فئة إعدادات لتقنيات الكمّ والتخلخل في torchao.
مثال:
```python
from diffusers import FluxTransformer2DModel, TorchAoConfig
from torchao.quantization import Int8WeightOnlyConfig
quantization_config = TorchAoConfig(Int8WeightOnlyConfig())
transformer = FluxTransformer2DModel.from_pretrained(
"black-forest-labs/Flux.1-Dev",
subfolder="transformer",
quantization_config=quantization_config,
torch_dtype=torch.bfloat16,
)
```
#### from_dict[[diffusers.TorchAoConfig.from_dict]]
```python
from_dict(config_dict, return_unused_kwargs = False, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L637)
إنشاء تكوين من قاموس.
#### get_apply_tensor_subclass[[diffusers.TorchAoConfig.get_apply_tensor_subclass]]
```python
get_apply_tensor_subclass()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L659)
أنشئ طريقة التكميم المناسبة بناءً على الإعداد.
#### to_dict[[diffusers.TorchAoConfig.to_dict]]
```python
to_dict()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/quantization_config.py#L623)
تحويل الإعدادات إلى قاموس.
## DiffusersQuantizer[[diffusers.DiffusersQuantizer]]
#### diffusers.DiffusersQuantizer[[diffusers.DiffusersQuantizer]]
```python
diffusers.DiffusersQuantizer(quantization_config: QuantizationConfigMixin, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L34)
فئة مجردة لمُكمِّم HuggingFace. تدعم حاليًا كمّ نماذج HF diffusers للاستدلال و/أو الكمّ. تُستخدم هذه الفئة فقط في diffusers.models.modeling_utils.ModelMixin.from_pretrained ولا يمكن استخدامها بسهولة خارج نطاق تلك الطريقة بعد.
خصائص quantization_config (`diffusers.quantizers.quantization_config.QuantizationConfigMixin`): إعدادات التكميم التي تحدد معاملات التكميم لنموذجك الذي تريد تكميمه. modules_to_not_convert (`list[str]`، *اختياري*): قائمة بأسماء الوحدات التي يجب عدم تحويلها عند تكميم النموذج. required_packages (`list[str]`، *اختياري*): قائمة بحزم pip المطلوبة التي يجب تثبيتها قبل استخدام مُكمِّم requires_calibration (`bool`): ما إذا كانت طريقة التكميم تتطلب معايرة النموذج قبل استخدامه.
#### adjust_max_memory[[diffusers.DiffusersQuantizer.adjust_max_memory]]
```python
adjust_max_memory(max_memory: dict[str, int | str])
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L133)
اضبط معامل max_memory للدالة infer_auto_device_map() إذا كانت هناك حاجة إلى ذاكرة إضافية للكمّ
#### adjust_target_dtype[[diffusers.DiffusersQuantizer.adjust_target_dtype]]
```python
adjust_target_dtype(torch_dtype: torch.dtype)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L91)
**المعاملات:**
torch_dtype (`torch.dtype`، *اختياري*) : نوع torch_dtype المستخدم لحساب device_map.
تجاوز هذه الطريقة إذا كنت ترغب في تعديل متغير `target_dtype` المستخدم في `from_pretrained` لحساب device_map في حال كان device_map من نوع `str`. على سبيل المثال، في حالة bitsandbytes، نُجبر على تعيين `target_dtype` إلى `torch.int8`، وفي حالة 4-bit، نمرر enum مخصصًا `accelerate.CustomDtype.int4`.
#### check_if_quantized_param[[diffusers.DiffusersQuantizer.check_if_quantized_param]]
```python
check_if_quantized_param(model: ModelMixin, param_value: torch.Tensor, param_name: str, state_dict: dict[str, typing.Any], **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L137)
يتحقق مما إذا كان مكوّن state_dict المحمّل جزءًا من معامل مُكمَّم + بعض التحقق؛ يُعرَّف فقط لطرق الكمّ التي تتطلب إنشاء معاملات جديدة للكمّ.
#### check_quantized_param_shape[[diffusers.DiffusersQuantizer.check_quantized_param_shape]]
```python
check_quantized_param_shape(*args, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L157)
يتحقق من أن المعامل المُكمَّم له الشكل المتوقع.
#### create_quantized_param[[diffusers.DiffusersQuantizer.create_quantized_param]]
```python
create_quantized_param(*args, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L151)
يستخرج المكونات المطلوبة من state_dict وينشئ معاملًا مُكمَّمًا.
#### إلغاء التكميم[[diffusers.DiffusersQuantizer.dequantize]]
```python
dequantize(model)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L219)
قد يؤدي إلغاء التكميم إلى استعادة النموذج الأصلي، مع بعض الفقدان في الدقة / الأداء. لاحظ أن مخططات التكميم لا تدعم جميعها هذه العملية.
#### get_cuda_warm_up_factor[[diffusers.DiffusersQuantizer.get_cuda_warm_up_factor]]
```python
get_cuda_warm_up_factor()
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L232)
العامل الذي يُستخدم في `caching_allocator_warmup` للحصول على عدد البايتات التي يجب تخصيصها مسبقًا لإحماء cuda. يعني عامل بقيمة 2 تخصيص جميع البايتات في النموذج الفارغ (بما أننا نخصص في fp16)، ويعني عامل بقيمة 4 تخصيص نصف ذاكرة الأوزان الموجودة في النموذج الفارغ، وهكذا...
#### get_special_dtypes_update[[diffusers.DiffusersQuantizer.get_special_dtypes_update]]
```python
get_special_dtypes_update(model, torch_dtype: torch.dtype)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L113)
**المعاملات:**
model (`~diffusers.models.modeling_utils.ModelMixin`) : النموذج الذي سيتم تكميمه
torch_dtype (`torch.dtype`) : نوع البيانات المُمرَّر في طريقة `from_pretrained`.
returns dtypes for modules that are not quantized - used for the computation of the device_map in case one passes a str as a device_map. The method will use the `modules_to_not_convert` that is modified in `_process_model_before_weight_loading`. `diffusers` models don't have any `modules_to_not_convert` attributes yet but this can change soon in the future.
#### postprocess_model[[diffusers.DiffusersQuantizer.postprocess_model]]
```python
postprocess_model(model: ModelMixin, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L206)
**المعاملات:**
model (`~diffusers.models.modeling_utils.ModelMixin`) : النموذج الذي سيتم تكميمه
kwargs (`dict`، *اختياري*) : الحُجج المُسمّاة التي تُمرَّر مع `_process_model_after_weight_loading`.
قم بمعالجة النموذج بعد تحميل الأوزان. تأكد من تجاوز الطريقة المجردة `_process_model_after_weight_loading`.
#### preprocess_model[[diffusers.DiffusersQuantizer.preprocess_model]]
```python
preprocess_model(model: ModelMixin, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L190)
**المعاملات:**
model (`~diffusers.models.modeling_utils.ModelMixin`) : النموذج الذي سيتم تكميمه
kwargs (`dict`، *اختياري*) : الحُجج المُسمّاة التي تُمرَّر مع `_process_model_before_weight_loading`.
ضبط سمات النموذج و/أو تحويل النموذج قبل تحميل الأوزان. في هذه المرحلة يجب أن يكون النموذج مُهيأً على جهاز meta حتى تتمكن من التلاعب بحُزمة النموذج بحرية من أجل استبدال الوحدات في مكانها. تأكد من تجاوز الطريقة المجردة `_process_model_before_weight_loading`.
#### update_device_map[[diffusers.DiffusersQuantizer.update_device_map]]
```python
update_device_map(device_map: dict[str, typing.Any] | None)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L79)
**المعاملات:**
device_map (`dict | str`، *اختياري*) : خريطة الأجهزة (device_map) التي يتم تمريرها عبر طريقة `from_pretrained`.
Override this method if you want to pass a override the existing device map with a new one. E.g. for bitsandbytes, since `accelerate` is a hard requirement, if no device_map is passed, the device_map is set to `"auto"``
#### update_missing_keys[[diffusers.DiffusersQuantizer.update_missing_keys]]
```python
update_missing_keys(model, missing_keys: list[str], prefix: str)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L103)
**المعاملات:**
missing_keys (`list[str]`، *اختياري*) : قائمة المفاتيح المفقودة في نقطة الحفظ مقارنةً بـ state dict الخاص بالنموذج
استبدل هذه الطريقة إذا كنت ترغب في تعديل `missing_keys`.
#### update_torch_dtype[[diffusers.DiffusersQuantizer.update_torch_dtype]]
```python
update_torch_dtype(torch_dtype: torch.dtype)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L68)
**المعاملات:**
torch_dtype (`torch.dtype`) : نوع البيانات المُدخل الذي يُمرَّر في `from_pretrained`
تتطلب بعض طرق التكميم ضبط نوع البيانات (dtype) للنموذج بشكل صريح على نوع البيانات المستهدف. يجب عليك تجاوز هذه الطريقة إذا كنت ترغب في التأكد من الحفاظ على هذا السلوك
#### validate_environment[[diffusers.DiffusersQuantizer.validate_environment]]
```python
validate_environment(*args, **kwargs)
```
[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/quantizers/base.py#L163)
يُستخدم هذا الأسلوب للتحقق من وجود تعارضات محتملة مع الحُجج المُمرَّرة في `from_pretrained`. يجب عليك تعريفه لجميع مُكمِّسات المستقبل المُدمجة مع diffusers. إذا لم تكن هناك حاجة إلى تحقق صريح، فبمجرد عدم إرجاع أي شيء.

Xet Storage Details

Size:
31.1 kB
·
Xet hash:
c0e550f2a569050ed5b6d06e7951c4a7215b4b5fb2ffd93240e9fc2a36224c6d

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.