Transformers documentation

التكميم

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

التكميم

تُقلّل تقنيات التكميم من تكاليف الذاكرة والحساب من خلال تمثيل الأوزان والتفعيلات بأنواع بيانات ذات دقة أقل، مثل الأعداد الصحيحة الثمانية البتات (int8). وهذا يتيح تحميل نماذج أكبر لا يمكن عادةً استيعابها في الذاكرة، وتسريع الاستدلال. يدعم Transformers خوارزميتي التكميم AWQ وGPTQ، كما يدعم التكميم بدقة 8 بت و4 بت باستخدام bitsandbytes.

يمكن إضافة تقنيات التكميم غير المدعومة في Transformers باستخدام فئة HfQuantizer.

تعلّم كيفية تكميم النماذج في دليل التكميم.

QuantoConfig

فئة transformers.QuantoConfig

< >

( weights = 'int8'activations = Nonemodules_to_not_convert: list | None = None**kwargs )

المعاملات

  • weights (str, optional, defaults to "int8") — The target dtype for the weights after quantization. Supported values are (“float8”,“int8”,“int4”,“int2”)
  • activations (str, اختياري) — نوع البيانات المستهدف للتفعيلات بعد التكميم. القيم المدعومة هي (None,“int8”,“float8”)
  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو أمر مفيد عند تكميم نماذج تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية (مثل مشفّر Whisper، ومشفّر Llava، وطبقات بوابة Mixtral).

هذه فئة غلاف (Wrapper) تغطي جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام quanto.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج

AqlmConfig

فئة transformers.AqlmConfig

< >

( in_group_size: int = 8out_group_size: int = 1num_codebooks: int = 1nbits_per_codebook: int = 16linear_weights_not_to_quantize: list[str] | None = None**kwargs )

المعاملات

  • in_group_size (int، اختياري، القيمة الافتراضية 8) — حجم المجموعة على طول بُعد الإدخال.
  • out_group_size (int، اختياري، القيمة الافتراضية 1) — حجم المجموعة على طول بُعد الإخراج. يُوصى دائمًا باستخدام القيمة 1.
  • num_codebooks (int, اختياري، القيمة الافتراضية 1) — عدد كُتُب الرموز (codebooks) الخاصة بإجراء الترميز الإضافي (Additive Quantization).
  • nbits_per_codebook (int، اختياري، القيمة الافتراضية 16) — عدد البتات التي ترمّز متجهًا واحدًا من كُتُب الرموز. حجم كُتُب الرموز هو 2**nbits_per_codebook.
  • linear_weights_not_to_quantize (Optional[list[str]]، اختياري) — قائمة بالمسارات الكاملة لمعاملات أوزان nn.Linear التي يجب ألا تُخضع للكمّية.
  • kwargs (dict[str, Any], اختياري) — معاملات إضافية تُستخدم لتهيئة كائن الإعدادات.

هذه فئة غلاف حول معاملات aqlm.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.

VptqConfig

فئة transformers.VptqConfig

< >

( enable_proxy_error: bool = Falseconfig_for_layers: dict = {}shared_layer_config: dict = {}modules_to_not_convert: list | None = None**kwargs )

المعاملات

  • enable_proxy_error (bool، اختياري، القيمة الافتراضية False) — حساب خطأ الوكيل لكل طبقة
  • config_for_layers (Dict، اختياري، القيمة الافتراضية {}) — معاملات التكميم لكل طبقة
  • shared_layer_config (Dict، اختياري، القيمة الافتراضية {}) — معلمات التكميم المشتركة بين الطبقات
  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو أمر مفيد عند تكميم نماذج تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية (مثل مشفّر Whisper، ومشفّر Llava، وطبقات بوابة Mixtral).
  • kwargs (dict[str, Any], اختياري) — معاملات إضافية تُستخدم لتهيئة كائن الإعدادات.

هذه فئة غلاف حول معلمات vptq.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج

AwqConfig

فئة transformers.AwqConfig

< >

( bits: int = 4group_size: int = 128zero_point: bool = Truebackend: AwqBackend = <AwqBackend.AUTO: 'auto'>modules_to_not_convert: list | None = None**kwargs )

المعاملات

  • bits (int، اختياري، القيمة الافتراضية 4) — عدد البتات التي سيتم التكميم إليها.
  • group_size (int، اختياري، القيمة الافتراضية 128) — حجم المجموعة المستخدم للتكميم. القيمة الموصى بها هي 128، بينما استخدام -1 يعني التكميم لكل عمود.
  • zero_point (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام تكميم نقطة الصفر.
  • backend (AwqBackend، اختياري، القيمة الافتراضية AwqBackend.AUTO) — خلفية التكميم.
  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو أمر مفيد عند تكميم نماذج تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية (مثل مشفّر Whisper، ومشفّر Llava، وطبقات Mixtral gate). يُرجى ملاحظة أنه لا يمكن التكميم مباشرةً باستخدام transformers، لذا يُرجى الرجوع إلى توثيق AutoAWQ لتكميم نماذج HF.

هذه فئة غلاف (wrapper class) تجمع جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام تكميم awq في مكتبة auto-awq المعتمدة على واجهة auto_awq الخلفية.

EetqConfig

فئة transformers.EetqConfig

< >

( weights: str = 'int8'modules_to_not_convert: list | None = None**kwargs )

المعاملات

  • weights (str، اختياري، القيمة الافتراضية "int8") — نوع البيانات المستهدف للأوزان. القيمة المدعومة الوحيدة هي "int8"
  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو مفيد لتكميم النماذج التي تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية.

هذه فئة غلاف (wrapper) تجمع جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام eetq.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج

GPTQConfig

فئة transformers.GPTQConfig

< >

( bits: inttokenizer: Any = Nonedataset: list[str] | str | None = Nonegroup_size: int = 128damp_percent: float = 0.1desc_act: bool = Falseact_group_aware: bool = Truesym: bool = Truetrue_sequential: bool = Trueformat: str = 'gptq'meta: dict[str, typing.Any] | None = Nonebackend: str | None = Nonemodel_seqlen: int | None = Noneblock_name_to_quantize: str | None = Nonemodule_name_preceding_first_block: list[str] | None = Nonebatch_size: int = 1pad_token_id: int | None = Nonemax_input_length: int | None = Nonecache_block_outputs: bool = Truemodules_in_block_to_quantize: list[list[str]] | None = None**kwargs )

المعاملات

  • bits (int) — عدد البتات التي سيتم التكميم إليها، والأرقام المدعومة هي (2، 3، 4، 8).
  • tokenizer (str أو PreTrainedTokenizerBase, اختياري) — المُجزِّئ (tokenizer) المستخدم لمعالجة مجموعة البيانات. يمكنك تمرير أحد ما يلي:
    • كائن مُقسِّم (tokenizer) مخصص.
    • سلسلة نصية، وهي معرف النموذج لمُقسِّم محدد مسبقًا مستضاف داخل مستودع نموذج على huggingface.co.
    • مسار إلى مجلد يحتوي على ملفات المفردات المطلوبة للمجزّئ، على سبيل المثال تلك المحفوظة باستخدام طريقة save_pretrained()، مثل ./my_model_directory/.
  • dataset (Union[list[str]]، اختياري) — مجموعة البيانات المستخدمة للكمّية. يمكنك تقديم مجموعة بياناتك الخاصة في قائمة من النصوص، أو استخدام مجموعات البيانات الأصلية المستخدمة في ورقة GPTQ [‘wikitext2’، ‘c4’، ‘c4-new’]
  • group_size (int، اختياري، القيمة الافتراضية 128) — حجم المجموعة المستخدم للتكميم. القيمة الموصى بها هي 128، بينما استخدام -1 يعني التكميم لكل عمود.
  • damp_percent (float، اختياري، القيمة الافتراضية 0.1) — النسبة المئوية من القطر المتوسط لمصفوفة هيسيان المستخدمة للتخميد. القيمة الموصى بها هي 0.1.
  • desc_act (bool، اختياري، القيمة الافتراضية False) — هل يتم تكميم الأعمدة حسب ترتيب حجم التفعيلات تنازلياً. ضبطه على False يمكن أن يسرّع الاستدلال بشكل كبير، لكن قد يصبح قياس المفاجأة (perplexity) أسوأ قليلاً. يُعرف أيضاً باسم act-order.
  • act_group_aware (bool، اختياري، القيمة الافتراضية True) — استخدام GAR (ترتيب التفعيل الواعي للمجموعات) أثناء التكميم. له تأثير إيجابي قابل للقياس على جودة التكميم. ينطبق فقط عندما يكون desc_act = False. سيُجبر على أن يكون False عندما يكون desc_act = True.
  • sym (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام التكميم المتماثل.
  • true_sequential (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تنفيذ التكميم التسلسلي حتى داخل كتلة Transformer واحدة. بدلاً من تكميم الكتلة بأكملها دفعة واحدة، نقوم بتكميم كل طبقة على حدة. ونتيجةً لذلك، تخضع كل طبقة للتكميم باستخدام مدخلات مرت عبر الطبقات المكمَّمة سابقاً.
  • format (str، اختياري، القيمة الافتراضية "gptq") — صيغة أوزان GPTQ. يدعم gptqmodel الصيغة gptq (الإصدار 1). أما gptq_v2 فتدعمها gptqmodel فقط.
  • meta (dict[str, any]، اختياري) — تُخزَّن الخصائص التي لا تساهم مباشرةً في التكميم أو الاستدلال المُكمَّم، مثل tooling:version، في meta. على سبيل المثال: meta.quantizer: [“optimum:version”، “gptqmodel:version”]
  • backend (str, اختياري) — يتحكم في النواة (kernel) المستخدمة. القيم الصالحة لـ gptqmodel هي auto وauto_trainable وغيرها. راجع واجهات gptqmodel: https://github.com/ModelCloud/GPTQModel/blob/main/gptqmodel/utils/backend.py
  • model_seqlen (int، اختياري) — أقصى طول تسلسل يمكن للنموذج قبوله.
  • block_name_to_quantize (str، اختياري) — اسم كتلة transformers التي سيتم تكميمها. إذا كانت القيمة None، فسنستنتج اسم الكتلة باستخدام الأنماط الشائعة (مثل model.layers).
  • module_name_preceding_first_block (list[str]، اختياري) — الطبقات التي تسبق أول كتلة Transformers.
  • batch_size (int، اختياري، القيمة الافتراضية 1) — حجم الدفعة المستخدمة عند معالجة مجموعة البيانات
  • pad_token_id (int، اختياري) — معرّف رمز الحشو. مطلوب لتحضير مجموعة البيانات عندما يكون batch_size > 1.
  • max_input_length (int، اختياري) — الحد الأقصى لطول الإدخال. يُعدّ هذا مطلوبًا لمهارة مخزن مؤقت يعتمد على الحد الأقصى المتوقع لطول الإدخال. وهو خاص بالخلفية exllama مع act-order.
  • cache_block_outputs (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تخزين مخرجات الكتلة مؤقتًا لإعادة استخدامها كمُدخلات للكتلة التالية.
  • modules_in_block_to_quantize (list[list[str]]، اختياري) — قائمة من قوائم أسماء الوحدات المراد تكميمها في الكتلة المحددة. يُعدّ هذا الحُجّة مفيدًا لاستبعاد وحدات خطية معينة من التكميم. يمكن تحديد الكتلة المراد تكميمها عن طريق تعيين block_name_to_quantize. سنقوم بتكميم كل قائمة على التوالي. إذا لم يتم تعيينه، فسنقوم بتكميم جميع الطبقات الخطية. مثال: modules_in_block_to_quantize =[["self_attn.k_proj", "self_attn.v_proj", "self_attn.q_proj"], ["self_attn.o_proj"]]. في هذا المثال، سنقوم أولاً بتكميم طبقات q وk وv في وقت واحد لأنها مستقلة. ثم، سنقوم بتكميم طبقة self_attn.o_proj مع تكميم طبقات q وk وv. بهذه الطريقة، سنحصل على نتائج أفضل لأنها تعكس المدخلات الفعلية التي ستحصل عليها self_attn.o_proj عندما يتم تكميم النموذج.

هذه فئة غلاف (wrapper class) حول جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام واجهة optimum لاختزال GPTQ، مع الاعتماد على الخلفية gptqmodel.

from_dict_optimum

< >

( config_dict )

احصل على فئة متوافقة مع optimum gptq config dict

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج

to_dict_optimum

< >

( )

الحصول على قاموس متوافق مع إعدادات gptq في optimum

BitsAndBytesConfig

فئة transformers.BitsAndBytesConfig

< >

( load_in_8bit = Falseload_in_4bit = Falsellm_int8_threshold = 6.0llm_int8_skip_modules = Nonellm_int8_enable_fp32_cpu_offload = Falsellm_int8_has_fp16_weight = Falsebnb_4bit_compute_dtype = Nonebnb_4bit_quant_type = 'fp4'bnb_4bit_use_double_quant = Falsebnb_4bit_quant_storage = None**kwargs )

المعاملات

  • 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.

يدعم حالياً LLM.int8() وFP4 وNF4 فقط. إذا أُضيفت طرق أخرى إلى bitsandbytes، فسيتم إضافة حُجج إضافية إلى هذه الفئة.

is_quantizable

< >

( )

تعيد True إذا كان النموذج قابلًا للكمّية، وإلا فترجع False.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.

quantization_method

< >

( )

تعيد هذه الطريقة طريقة التكميم المستخدمة للنموذج. إذا لم يكن النموذج قابلاً للتكميم، فإنها تعيد None.

to_diff_dict

< >

( ) → dict[str, Any]

يعيد

dict[str, Any]

قاموس بجميع السمات التي تُشكّل هذه المثيلَة من التهيئة،

يزيل جميع السمات من الإعدادات التي تتوافق مع سمات الإعدادات الافتراضية لتحسين قابلية القراءة، ويُسلسلها إلى قاموس Python.

HfQuantizer

فئة transformers.quantizers.HfQuantizer

< >

( quantization_config: QuantizationConfigMixin**kwargs )

فئة مجردة لمُكمِّم HuggingFace. تدعم حاليًا تكميم نماذج transformers الخاصة بـ HF للاستدلال و/أو التكميم. تُستخدم هذه الفئة فقط في transformers.PreTrainedModel.from_pretrained ولا يمكن استخدامها بسهولة خارج نطاق تلك الطريقة بعد.

الخصائص quantization_config (transformers.utils.quantization_config.QuantizationConfigMixin): إعدادات التكميم التي تحدد معاملات التكميم لنموذجك الذي تريد تكميمه. requires_calibration (bool): ما إذا كانت طريقة التكميم تتطلب معايرة النموذج قبل استخدامه.

adjust_max_memory

< >

( max_memory: dict )

اضبط معامل max_memory للدالة infer_auto_device_map() إذا كانت هناك حاجة إلى ذاكرة إضافية للكمّ

dequantize

< >

( modeldtype = None )

قد يتم إلغاء تكميم النموذج لاسترجاع النموذج الأصلي، مع بعض الفقدان في الدقة / الأداء. يُرجى ملاحظة أن مخططات التكميم لا تدعم جميعها هذه العملية.

get_load_operations

< >

( )

فئات العمليات التي تُحمّل المتجهات المُسلسلة، مثل {"deserialize": Mxfp4Deserialize, "dequantize": Mxfp4Dequantize}. يُشكّل فكّ التسلسل (Deserialization) معاملات وحدة واحدة، لذا لا يعمل إلا على المحوِّلات العامة. كما يعمل فكّ الكمّ (Dequantization) أيضاً قبل عمليات محوِّلات النموذج، على سبيل المثال قبل دمج لكل خبير (per-expert merge).

get_new_dtype

< >

( converterparamdtype: torch.dtype | None )

يحدث ذلك عند وقت الماديّة (materialization)، عندما يُرسل الموتر (tensor) من القرص إلى الجهاز. dtype لتحويل الموتر param في نقطة التفتيش (checkpoint) المُكمّاة مسبقًا. إذا لم يكن هذا المعامل مُكمّاءً (نوع فاصلة عائمة)، نستخدم dtype المُدخل الذي يأتي من nn.Module المُهيّأ.

إذا كانت طريقة التكميم تحتوي على Deserializer أو Dequantizer (دالة التحميل)، فإننا نعيد None حتى يتولى هذان العنصران التعامل معها.

get_state_dict_and_metadata

< >

( model )

الحصول على state dict وبيانات الوصف. مفيد عندما نحتاج إلى تعديل state dict قليلاً بسبب التكميم

get_weight_conversions

< >

( )

إرجاع التحميل الذي يجب تنفيذه على أي معامل لا يتطابق مع محوّلات النموذج

param_needs_quantization

< >

( model: PreTrainedModelparam_name: str**kwargs )

تحقق مما إذا كان المعامل المحدد يحتاج إلى التكميم.

postprocess_model

< >

( model: PreTrainedModel**kwargs )

المعاملات

  • model (~transformers.PreTrainedModel) — النموذج المراد كميته
  • kwargs (dict، اختياري) — الحجج المسماة التي تُمرَّر إلى _process_model_after_weight_loading.

قم بمعالجة ما بعد النموذج بعد تحميل الأوزان. تأكد من تجاوز الطريقة المجردة _process_model_after_weight_loading.

preprocess_model

< >

( model: PreTrainedModeldtype = None**kwargs )

المعاملات

  • model (~transformers.PreTrainedModel) — النموذج المراد كميته
  • kwargs (dict، اختياري) — الحجج المُسمّاة التي تُمرَّر مع _process_model_before_weight_loading.

ضبط سمات النموذج و/أو تحويل النموذج قبل تحميل الأوزان. في هذه المرحلة، يجب أن يكون النموذج مُهيأً على جهاز meta حتى تتمكن من التلاعب بحُجّة النموذج بحرية من أجل استبدال الوحدات في مكانها. تأكد من تجاوز الطريقة المجردة _process_model_before_weight_loading.

remove_quantization_config

< >

( model )

احذف إعدادات التكميم من النموذج.

update_attn_implementation

< >

( config )

يتحقق من attn_implementation المطلوب قبل بناء النموذج، بحيث يمكن لمُكمِّم (quantizer) تعيينه كقيمة افتراضية.

update_device_map

< >

( device_map: dict[str, typing.Any] | None )

المعاملات

  • device_map (Union[dict, str]، اختياري) — خريطة الأجهزة التي يتم تمريرها عبر طريقة 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_dtype

< >

( dtype: torch.dtype )

المعاملات

  • dtype (torch.dtype) — نوع البيانات المُدخل الذي يُمرَّر عبر from_pretrained

تتطلب بعض طرق التكميم ضبط نوع البيانات (dtype) للنموذج بشكل صريح على نوع البيانات المستهدف. يجب عليك تجاوز هذه الطريقة إذا كنت ترغب في التأكد من الحفاظ على هذا السلوك

update_parallel_plan

< >

( modelplan: dict )

تحديث model.tp_plan أو model.ep_plan (الخطط الكاملة، المدمجة من الإعدادات وجميع الإعدادات الفرعية) لتأخذ في الاعتبار المفاتيح المخصصة لمكمّس الأرقام مثل ‘inv_scale’

update_weight_conversions

< >

( weight_conversionsmodel )

يجعل محوّلات النموذج (من خريطة التحويل) تُحمّل الأسماء المُسلسَلة. تُحدِّد معاملات النموذج، على سبيل المثال، عملية دمج experts.*.gate_proj.weight في experts.gate_up_proj:

  • experts.gate_up_proj_scale_inv هو معامل: يدمج النسخ experts.*.gate_proj.weight_scale_inv فيه
  • وإلا فإن المحوّل يجمع أيضًا experts.*.gate_proj.weight_scale_inv، حيث يُنفَّذ عميل إزالة التكميم أولاً

validate_environment

< >

( *args**kwargs )

تُستخدم هذه الطريقة للتحقق من وجود تعارضات محتملة مع الحُجج المُمرَّرة في from_pretrained. يجب عليك تعريفها لجميع مُكمِّسات المستقبل المُدمجة مع transformers. إذا لم تكن هناك حاجة إلى تحقق صريح، فقم ببساطة بإرجاع شيء لا شيء.

HiggsConfig

فئة transformers.HiggsConfig

< >

( bits: int = 4p: int = 2modules_to_not_convert: list[str] | None = Nonehadamard_size: int = 512group_size: int = 256tune_metadata: dict[str, typing.Any] | None = None**kwargs )

المعاملات

  • bits (int، اختياري، القيمة الافتراضية 4) — عدد البتات المستخدمة للتكميم. يمكن أن تكون 2 أو 3 أو 4. القيمة الافتراضية هي 4.
  • p (int، اختياري، القيمة الافتراضية 2) — بُعد شبكة التكميم. يتم دعم القيمتين 1 و2. في الممارسة العملية، تكون القيمة 2 أفضل دائمًا. القيمة الافتراضية هي 2.
  • modules_to_not_convert (list، اختياري، الافتراضي [“lm_head”]) — قائمة بطبقات خطية يجب عدم تكميمها.
  • hadamard_size (int, اختياري، القيمة الافتراضية 512) — حجم Hadamard الخاص بطريقة HIGGS. القيمة الافتراضية هي 512. يتم توسيع بُعد المدخلات للمصفوفات ليصل إلى هذه القيمة. إن خفض هذا الحجم إلى أقل من 512 سيؤدي إلى تقليل جودة التكميم.
  • group_size (int، اختياري، القيمة الافتراضية 256) — حجم المجموعة لطريقة HIGGS. يمكن أن يكون 64 أو 128 أو 256. إن تقليله لا يؤثر تقريبًا على الأداء. القيمة الافتراضية هي 256. يجب أن يكون قاسمًا لـ hadamard_size.
  • tune_metadata (‘dict’، اختياري، الافتراضي {}) — بيانات وصفية على مستوى الوحدات (أشكال كتل gemm، بيانات وصفية للوحدة الرسومية GPU، إلخ) لحفظ نتائج ضبط النواة. الافتراضي هو قاموس فارغ. يتم تعيينه تلقائيًا أثناء الضبط.

HiggsConfig هي فئة إعدادات للكمّية باستخدام طريقة HIGGS.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.

HqqConfig

فئة transformers.HqqConfig

< >

( nbits: int = 4group_size: int = 64view_as_float: bool = Falseaxis: int | None = Nonedynamic_config: dict | None = Noneskip_modules: list = ['lm_head']**kwargs )

المعاملات

  • nbits (int، اختياري، القيمة الافتراضية 4) — عدد البتات. القيم المدعومة هي (8، 4، 3، 2، 1).
  • group_size (int، اختياري، القيمة الافتراضية 64) — قيمة حجم المجموعة. القيم المدعومة هي أي قيمة قابلة للقسمة على weight.shape[axis]).
  • view_as_float (bool، اختياري، القيمة الافتراضية False) — عرض الوزن المُكمَّم كعدد فاصلة عائمة (يُستخدم في التدريب الموزّع) إذا تم ضبطه على True.
  • axis (Optional[int], اختياري) — المحور الذي يتم على أساسه تنفيذ التجميع. القيم المدعومة هي 0 أو 1.
  • dynamic_config (dict, اختياري) — معاملات للتكوين الديناميكي. المفتاح هو وسم اسم الطبقة والقيمة هي تكوين التكميم. إذا تم ضبطه، فستستخدم كل طبقة محددة بمعرّفها تكوين التكميم المخصص لها.
  • skip_modules (list[str]، اختياري، القيمة الافتراضية ['lm_head']) — قائمة بطبقات nn.Linear التي يجب تجاوزها.
  • kwargs (dict[str, Any], اختياري) — معاملات إضافية تُستخدم لتهيئة كائن الإعدادات.

هذا غلاف حول BaseQuantizeConfig الخاص بـ hqq.

from_dict

< >

( config: dict )

Override from_dict, used in AutoQuantizationConfig.from_dict in quantizers/auto.py

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.

to_diff_dict

< >

( ) → dict[str, Any]

يعيد

dict[str, Any]

قاموس بجميع السمات التي تُشكّل هذه المثيلَة من التهيئة،

يزيل جميع السمات من الإعدادات التي تتوافق مع سمات الإعدادات الافتراضية لتحسين قابلية القراءة، ويُسلسلها إلى قاموس Python.

MetalConfig

فئة transformers.MetalConfig

< >

( bits: int = 4group_size: int = 64modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )

فئة التهيئة للكمّية الأفينية الخاصة بـ Metal المستهدفة لأجهزة Apple Silicon (MPS).

تستخدم طريقة التكميم هذه نواة Metal الخاصة بـ mlx-quantization-metal-kernels من Hugging Face Hub لتنفيذ التكميم الأفيني (المقاييس + الانحيازات الكمية) مع عرض بت قابل للضبط وحجم مجموعة قابل للضبط. تُحزم الأوزان المُكمَّمة في متجهات uint32، وتستخدم عملية الأمامية نواة Metal مدمجة لإلغاء التكميم + ضرب المصفوفات.

Mxfp4Config

فئة transformers.Mxfp4Config

< >

( modules_to_not_convert: list | None = Nonedequantize: bool = False**kwargs )

المعاملات

  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو مفيد لتكميم النماذج التي تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية.
  • dequantize (bool، اختياري، الافتراضي False) — ما إذا كان سيتم إلغاء تكميم النموذج إلى دقة bf16 أم لا

هذا هو فئة غلاف (wrapper class) حول جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام تكميم mxfp4.

NVFP4Config

فئة transformers.NVFP4Config

< >

( modules_to_not_convert: list[str] | None = None**kwargs )

المعاملات

  • modules_to_not_convert (list[str], اختياري) — أنماط أسماء الوحدات التي يجب إبقاؤها في دقتها الأصلية.
  • kwargs (dict[str, Any]، اختياري) — تُتجاهل القيم الإضافية وتُبلَّغ عنها عبر مسجّل Transformers.

إعدادات لتكميم أوزان NVFP4 على الفور.

FbgemmFp8Config

فئة transformers.FbgemmFp8Config

< >

( activation_scale_ub: float = 1200.0modules_to_not_convert: list | None = None**kwargs )

المعاملات

  • activation_scale_ub (float، اختياري، القيمة الافتراضية 1200.0) — الحد الأعلى لمقياس التنشيط. يُستخدم هذا عند تكميم تنشيط الإدخال.
  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو مفيد لتكميم النماذج التي تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية.

هذه فئة غلاف (wrapper class) حول جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام تكميم fbgemm fp8.

CompressedTensorsConfig

فئة transformers.CompressedTensorsConfig

< >

( config_groups: dict[str, typing.Union[ForwardRef('QuantizationScheme'), list[str]]] | None = Noneformat: str = 'dense'quantization_status: QuantizationStatus = 'initialized'kv_cache_scheme: typing.Optional[ForwardRef('QuantizationArgs')] = Noneglobal_compression_ratio: float | None = Noneignore: list[str] | None = Nonequant_method: str = 'compressed-tensors'run_compressed: bool | None = Nonedequantize: bool = Falseuse_optimized_inference: bool = False**kwargs )

المعاملات

  • config_groups (typing.dict[str, typing.Union[ForwardRef('QuantizationScheme'), typing.list[str]]], اختياري) — قاموس يربط اسم المجموعة بتعريف مخطط الكمّية
  • format (str، اختياري، القيمة الافتراضية "dense") — الصيغة التي تُخزَّن بها الأوزان، مثل dense أو float-quantized أو pack-quantized
  • quantization_status (QuantizationStatus، اختياري، القيمة الافتراضية "initialized") — حالة النموذج في دورة حياة التكميم، مثل ‘initialized’، ‘calibration’، ‘frozen’
  • kv_cache_scheme (typing.Union[QuantizationArgs, NoneType]، اختياري) — يحدد تكميم ذاكرة kv. إذا كانت القيمة None، فلن يتم تكميم ذاكرة kv.
  • global_compression_ratio (typing.Union[float, NoneType], اختياري) — نسبة مئوية من 0 إلى 1 لنسبة ضغط النموذج
  • ignore (typing.Union[typing.list[str], NoneType]، اختياري) — أسماء الطبقات أو أنواعها التي يجب عدم تكميمها، يدعم تعبيرات منتظمة مسبقة بـ ‘re:’
  • quant_method (str، اختياري، القيمة الافتراضية "compressed-tensors") — لا تقم بتجاوزها، يجب أن تكون compressed-tensors
  • run_compressed (bool، اختياري) — تم إيقاف استخدامه، استخدم dequantize بدلاً منه. تأثيره الوحيد هو تعيين dequantize إلى القيمة المعاكسة، حيث يعني run_compressed=False أن dequantize=True.
  • dequantize (bool، اختياري، القيمة الافتراضية False) — عند تعيينه إلى True، يتم فك تكميم الأوزان المُكمَّمة وإعادتها إلى نوع البيانات الأصلي للنموذج (مثل BF16) عند التحميل، وهو ما تتطلبه عمليات الضبط الدقيق أو حفظ النموذج بنوع بياناته الأصلي. أما عند تعيينه إلى False، فتُترك الأوزان في شكلها المضغوط، ويتولى compressed-tensors فك ضغطها في أول تمريرة أمامية.
  • use_optimized_inference (bool، اختياري، القيمة الافتراضية False) — عندما تكون True، تحتفظ الطبقات التي تتوفر لدينا نوى (kernels) مخصصة لها بأوزانها المُكمّمة وتُنفَّذ عبر تلك النوى (حاليًا W8A8 FP8، على CUDA SM89+، أو XPU، أو MPS مع torch >= 2.15). للاستدلال فقط، وخيار اختياري: بدونه، يمر النموذج عبر مسار compressed-tensors المعتاد. يتم تجاهله عندما تكون dequantize=True.

هذه فئة غلاف تتعامل مع خيارات تكوين التكميم في compressed-tensors. وهي غلاف حول compressed_tensors.QuantizationConfig

from_dict

< >

( config_dictreturn_unused_kwargs = False**kwargs ) → QuantizationConfigMixin

المعاملات

  • config_dict (dict[str, Any]) — قاموس يُستخدم لإنشاء كائن الإعدادات.
  • return_unused_kwargs (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم إرجاع قائمة بحجج الكلمات المفتاحية غير المستخدمة. يُستخدم في طريقة from_pretrained داخل PreTrainedModel.
  • kwargs (dict[str, Any]) — معاملات إضافية تُستخدم لتهيئة كائن الإعدادات.

يعيد

QuantizationConfigMixin

كائن الإعداد المُستخدَم من تلك المعاملات.

يُهيّئ كائن CompressedTensorsConfig من قاموس Python للمعاملات. اختياريًا، يفكّ أي حُجج من quantization_config المتداخلة

to_dict

< >

( )

إعدادات التكميم التي يجب إضافتها إلى config.json

يسلسل هذه النسخة إلى قاموس بايثون. يُرجع: dict[str, Any]: قاموس بجميع السمات التي تُشكّل نسخة هذا الإعداد.

to_diff_dict

< >

( ) → dict[str, Any]

يعيد

dict[str, Any]

قاموس بجميع السمات التي تُشكّل هذه المثيلَة من التهيئة،

يزيل جميع السمات من الإعدادات التي تتوافق مع سمات الإعدادات الافتراضية لتحسين قابلية القراءة، ويُسلسلها إلى قاموس Python.

TorchAoConfig

فئة transformers.TorchAoConfig

< >

( quant_type: AOBaseConfigmodules_to_not_convert: list | None = Noneinclude_input_output_embeddings: bool = Falseuntie_embedding_weights: bool = False**kwargs )

المعاملات

  • quant_type (AOBaseConfig) — مثال على AOBaseConfig من torchao يحدد نوع التكميم، مثل Int4WeightOnlyConfig(group_size=32)، Int8WeightOnlyConfig()، Int8DynamicActivationInt8WeightConfig()، Float8WeightOnlyConfig()، وما إلى ذلك.
  • modules_to_not_convert (list، اختياري، القيمة الافتراضية None) — قائمة الوحدات التي يجب عدم تكميمها، وهو مفيد لتكميم النماذج التي تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية.
  • include_input_output_embeddings (bool, اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تضمين التضمين (embedding) في عملية التكميم أم لا، وسيتم أيضًا إزالة التضمين المدخل من قائمة module_not_to_convert إذا تم تعيين هذا العلم.
  • untie_embedding_weights (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب فك ربط الأوزان عند تكميم أوزان التضمين المدخلات المرتبطة بأوزان أخرى.

فئة الإعدادات لتقنيات التكميم/التخلخل في torchao.

مثال:

from torchao.quantization import Int4WeightOnlyConfig

quantization_config = TorchAoConfig(Int4WeightOnlyConfig(group_size=32))
model = AutoModelForCausalLM.from_pretrained(
    model_id, device_map="cuda", torch_dtype=torch.bfloat16, quantization_config=quantization_config
)

from_dict

< >

( config_dictreturn_unused_kwargs = False**kwargs )

إنشاء التهيئة من قاموس.

get_apply_tensor_subclass

< >

( )

إرجاع إعدادات التكميم التي يجب تطبيقها.

post_init

< >

( )

تحقق من الإعدادات وتحديد القيم الافتراضية.

to_dict

< >

( )

تحويل الإعدادات إلى قاموس.

BitNetQuantConfig

فئة transformers.BitNetQuantConfig

< >

( modules_to_not_convert: list | None = Nonelinear_class: str = 'bitlinear'quantization_mode: str = 'offline'use_rms_norm: bool = Falserms_norm_eps: float | None = 1e-06**kwargs )

المعاملات

  • modules_to_not_convert (Optional[List], اختياري) — اختياريًا، يوفر قائمة بالمسارات الكاملة لمعاملات أوزان nn.Linear التي يجب ألا تُكمَّم. القيمة الافتراضية هي None.
  • linear_class (str، اختياري، القيمة الافتراضية "bitlinear") — نوع فئة الخطي (linear class) المستخدمة. يمكن أن تكون إما bitlinear أو autobitlinear.
  • quantization_mode (str، اختياري، القيمة الافتراضية "offline") — وضع التكميم المستخدم. يمكن أن يكون إما online أو offline. في وضع online، تُحسب معاملات تكميم الأوزان ديناميكيًا أثناء كل تمريرة أمامية (على سبيل المثال، بناءً على قيم الأوزان الحالية). وهذا يتيح التكيف مع تغيّرات الأوزان أثناء التدريب (تدريب معياري التكميم - QAT). في وضع offline، تُحسب معاملات التكميم مسبقًا قبل الاستدلال. ثم تُثبَّت هذه المعاملات وتُحمَّل في النموذج المُكمَّم. وهذا يؤدي عمومًا إلى انخفاض في الحمل التشغيلي مقارنةً بالتكميم المباشر.
  • use_rms_norm (bool, اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تطبيق RMSNorm على التنشيطات قبل التكميم. يتوافق هذا مع نهج ورقة BitNet الأصلية المتمثل في تطبيع التنشيطات قبل التكميم/التعبئة.
  • rms_norm_eps (float, اختياري، القيمة الافتراضية 1e-06) — قيمة إيبسلون المستخدمة في طبقة RMSNorm من أجل الاستقرار العددي.
  • kwargs (dict[str, Any], اختياري) — معلمات إضافية بالكلمات المفتاحية قد تُستخدمها أنظمة التكميم المحددة أو الإصدارات المستقبلية.

فئة الإعدادات لتطبيق تكميم BitNet.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج

SpQRConfig

فئة transformers.SpQRConfig

< >

( bits: int = 3beta1: int = 16beta2: int = 16shapes: dict[str, int] | None = Nonemodules_to_not_convert: list[str] | None = None**kwargs )

المعاملات

  • bits (int, optional, defaults to 3) — Specifies the bit count for the weights and first order zero-points and scales. Currently only bits = 3 is supported.
  • beta1 (int، اختياري، القيمة الافتراضية 16) — عرض بلاطة SpQR. حاليًا، يُدعم فقط beta1 = 16.
  • beta2 (int، اختياري، القيمة الافتراضية 16) — ارتفاع بلاطة SpQR. حاليًا، يُدعم فقط beta2 = 16.
  • shapes (Optional، اختياري) — قاموس يحتوي على شكل كل كائن. نحتاج إلى هذا لأنه من المستحيل استنتاج الحجم الدقيق للمعاملات من البتات وbeta1 وbeta2 فقط.
  • modules_to_not_convert (Optional[list[str]], اختياري) — اختياريًا، يوفر قائمة بالمسارات الكاملة لمعاملات أوزان nn.Linear التي يجب ألا تُكمَّم. القيمة الافتراضية هي None.
  • kwargs (dict[str, Any], اختياري) — معاملات إضافية تُستخدم لتهيئة كائن الإعدادات.

هذه فئة غلاف حول معاملات spqr. راجع المنشور الأصلي لمزيد من التفاصيل.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.

FineGrainedFP8Config

فئة transformers.FineGrainedFP8Config

< >

( activation_scheme: str = 'dynamic'weight_block_size: tuple = (128, 128)dequantize: bool = Falsemodules_to_not_convert: list | None = Nonemodules_to_convert: list | None = Nonescale_fmt: str = 'float'expert_dtype: str = 'fp8'**kwargs )

المعاملات

  • activation_scheme (str، اختياري، القيمة الافتراضية "dynamic") — الخطة المستخدمة للتفعيل، والخطة الافتراضية والوحيدة المدعومة حاليًا هي "dynamic".
  • weight_block_size (typing.tuple[int, int]، اختياري، القيمة الافتراضية (128, 128)) — حجم كتل الأوزان للكمّية، والقيمة الافتراضية هي (128, 128).
  • dequantize (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم إلغاء تكميم النموذج أثناء التحميل.
  • modules_to_not_convert (list, اختياري) — قائمة بأسماء الوحدات التي يجب عدم تحويلها أثناء التكميم.
  • modules_to_convert (list، اختياري) — قائمة بأسماء وحدات إضافية، مثل جداول التضمين (embedding tables)، يجب تحويلها أثناء التكميم.
  • scale_fmt (str، اختياري، القيمة الافتراضية "float") — نوع التخزين (dtype) لمقاييس الأوزان لكل كتلة: "float" (fp32، بنمط V3) أو "ue8m0" (بايت واحد torch.float8_e8m0fnu، بنمط V4).
  • expert_dtype (str، اختياري، القيمة الافتراضية "fp8") — صيغة أوزان خبراء MoE: "fp8"، أو "fp4" لخبراء DeepSeek-V4 المعبّئين بصيغة FP4.

FineGrainedFP8Config هي فئة إعدادات للكمّية الدقيقة (fine-grained) بصيغة FP8، وتُستخدم بشكل رئيسي لنماذج deepseek.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج

QuarkConfig

فئة transformers.QuarkConfig

< >

( **kwargs )

FourOverSixConfig

فئة transformers.FourOverSixConfig

< >

( activation_dtype: str | None = Noneactivation_scale_rule: str | None = Nonedtype: str = 'nvfp4'gradient_dtype: str | None = Nonegradient_scale_rule: str | None = Nonekeep_master_weights: bool = Falsematmul_backend: str | None = Noneoutput_dtype: str | None = 'bfloat16'quantize_backend: str | None = Nonescale_rule: str = 'mse'weight_dtype: str | None = Noneweight_scale_2d: bool = Falseweight_scale_rule: str | None = Nonemodule_config_overrides: dict[str, dict[str, typing.Any]] | None = Nonemodules_to_not_convert: list[str] | None = ['lm_head']**kwargs )

المعاملات

  • activation_dtype (str، اختياري) — نوع البيانات المستخدم عند تكميم تensors التنشيط. إذا لم يُقدَّم، يُستخدم dtype.
  • activation_scale_rule (str، اختياري) — قاعدة التوسيع المستخدمة عند اختيار مقياس للكتل في تensors التنشيط. إذا لم يُقدَّم، يُستخدم scale_rule.
  • dtype (str، الافتراضي “nvfp4”، اختياري، الافتراضي "nvfp4") — نوع البيانات المستخدم لأوزان الطبقة والتفعيلات والمُتجهات. يمكن أن يكون "nvfp4" أو "mxfp4".
  • gradient_dtype (str، اختياري) — نوع البيانات المستخدم عند تكميم تدرجات المتجهات. إذا لم يُقدَّم، يُستخدم dtype.
  • gradient_scale_rule (str، اختياري) — قاعدة التوسيع المستخدمة عند اختيار مقياس للكتل في متجهات التدرج. إذا لم يُقدَّم، يُستخدم scale_rule.
  • keep_master_weights (bool, default False, optional, defaults to False) — Whether to keep the master weights. If True, high-precision weights are kept at all times and weights are quantized online in each forward pass. This is useful for quantized training.
  • matmul_backend (str، اختياري) — الخلفية المستخدمة لعمليات ضرب المصفوفات. يمكن أن تكون "cutlass" أو "pytorch". إذا لم يتم تقديمها، فسيتم استخدام CUTLASS إذا كان متاحًا، وإلا فسيتم استخدام PyTorch.
  • output_dtype (str، اختياري، القيمة الافتراضية "bfloat16") — نوع البيانات المستخدم لمخرجات الطبقة. يمكن أن يكون "bfloat16" أو "float16".
  • quantize_backend (str، اختياري) — الواجهة الخلفية المستخدمة للكمّية. يمكن أن تكون "cuda" أو "triton" أو "pytorch". إذا لم يتم تقديمها، فسيتم اختيار الواجهة الخلفية الأسرع بناءً على بيئتك، وبناءً على الخيارات المدعومة من قبل كل واجهة خلفية. عادةً، يُستخدم "cuda" للاستدلال، ويُستخدم "triton" للتدريب، ويُستخدم "pytorch" على الأجهزة غير الداعمة لـ CUDA.
  • scale_rule (str، الافتراضي “mse”، اختياري، الافتراضي "mse") — القاعدة المستخدمة عند اختيار مقاييس الكتل. يمكن أن تكون "mse" أو "mae" أو "abs_max" لـ Four Over Six، أو "static_6" للكمّية الافتراضية NVFP4، أو "static_4" لتقريب جميع الكتل إلى قيمة قصوى تبلغ 4.
  • weight_dtype (str، اختياري) — نوع البيانات المستخدم عند تكميم مصفوفات الأوزان. إذا لم يُقدَّم، يُستخدم dtype.
  • weight_scale_2d (bool، الافتراضي False، اختياري، الافتراضي False) — ما إذا كان يجب حساب عوامل المقياس على تensors الأوزان في كتل ثنائية الأبعاد. ينبغي تنفيذ ذلك أثناء التدريب.
  • weight_scale_rule (str, اختياري) — قاعدة التوسيع المستخدمة عند اختيار مقياس للكتل في متجهات الأوزان. إذا لم يُقدَّم، يُستخدم scale_rule.
  • module_config_overrides (dict[str, dict[str, Any]], اختياري) — قاموس لتجاوزات الإعدادات الخاصة بكل وحدة. يجب أن تكون المفاتيح أسماء الوحدات، وأن تكون القيم قواميس تحتوي على إعدادات التكميم الخاصة بتلك الوحدة. يمكن استخدام هذا لتجاوز الإعدادات الافتراضية لوحدات محددة.
  • modules_to_not_convert (list[str]، اختياري، القيمة الافتراضية ['lm_head']) — قائمة الوحدات التي يجب استبعادها من التكميم. افتراضيًا، يتم استبعاد lm_head.

هذه فئة غلاف تحتوي على جميع خيارات التكميم باستخدام fouroversix. باختصار، Four Over Six هو تعديل على تكميم NVFP4 يقوم بمقياس القيمة الأكبر في كل كتلة من 16 قيمة FP4 بشكل تكيفي إلى 4 أو 6. اختيار مقياس 6 يستخدم النطاق الكامل لقيم FP4، بينما يسمح اختيار مقياس 4 بتوزيع أكثر تجانساً لخطأ التكميم. راجع المنشور الأصلي لمزيد من التفاصيل: https://arxiv.org/abs/2512.02010.

FPQuantConfig

فئة transformers.FPQuantConfig

< >

( forward_dtype: str = 'nvfp4'forward_method: str = 'abs_max'backward_dtype: str = 'bf16'store_master_weights: bool = Falsehadamard_group_size: int | None = Nonepseudoquantization: bool = Falsetransform_init: str = 'hadamard'modules_to_not_convert: list[str] | None = None**kwargs )

المعاملات

  • forward_dtype (str، اختياري، القيمة الافتراضية "nvfp4") — نوع البيانات (dtype) المستخدم في عملية المرور الأمامي.
  • forward_method (str، اختياري، القيمة الافتراضية "abs_max") — التحجيم المستخدم في المرور الأمامي. يمكن أن يكون "abs_max" أو "quest". "abs_max" أفضل لـ PTQ، بينما "quest" أفضل لـ QAT.
  • backward_dtype (str، اختياري، القيمة الافتراضية "bf16") — نوع البيانات (dtype) المستخدم في عملية الرجوع (backward pass).
  • store_master_weights (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تخزين الأوزان الرئيسية. مطلوب لتطبيق QAT على أوزان الطبقات.
  • hadamard_group_size (int, اختياري) — حجم المجموعة لتحويل هادامارد قبل التكميم لـ"quest"، وهو يطابق حجم مجموعة MXFP4 (32). إذا كان None، فسيتم تعيينه إلى 16 لـ"nvfp4" و32 لـ"mxfp4".
  • pseudoquantization (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام الكمية الزائرية المعتمدة على Triton. هذا الخيار إلزامي للوحدات المعالجة الرسومية غير Blackwell. لا يوفر أي تسريع. يُستخدم لأغراض تصحيح الأخطاء.
  • transform_init (str، اختياري، القيمة الافتراضية "hadamard") — طريقة تهيئة مصفوفة المعالجة المسبقة. يمكن أن تكون "hadamard" أو "identity" أو "gsr".
  • modules_to_not_convert (list, اختياري) — قائمة الوحدات التي يجب عدم تكميمها، وهو أمر مفيد عند تكميم نماذج تتطلب صراحةً إبقاء بعض الوحدات في دقتها الأصلية.

FPQuantConfig هي فئة إعدادات للكمّية باستخدام طريقة FPQuant.

post_init

< >

( )

فاحص الأمان الذي يتحقق من صحة الحُجج - كما يستبدل بعض حُجج نوع NoneType بقيمها الافتراضية.

AutoRoundConfig

فئة transformers.AutoRoundConfig

< >

( bits: int = 4group_size: int = 128sym: bool = Truebackend: str = 'auto'**kwargs )

المعاملات

  • bits (int، اختياري، الافتراضي 4) — عدد البتات التي سيتم التكميم إليها، والأرقام المدعومة هي (2، 3، 4، 5، 6، 7، 8).
  • group_size (int، اختياري، القيمة الافتراضية 128) — قيمة حجم المجموعة
  • sym (bool، اختياري، القيمة الافتراضية True) — هل التكميم متماثل أم لا
  • backend (str، اختياري، القيمة الافتراضية "auto") — واجهة الاستدلال. افتراضيًا، يختار AutoRound واجهة متوافقة بناءً على الجهاز وإعدادات التكميم والمكتبات المثبتة. راجع تحديد واجهة الاستدلال لمعرفة جميع خيارات الواجهات.

هذه فئة غلاف (wrapper class) تجمع جميع الخصائص والميزات الممكنة التي يمكنك التعامل معها في نموذج تم تحميله باستخدام كميّة AutoRound.

post_init

< >

( )

فاحص أمان يتحقق من صحة الحُجج.

SinqConfig

فئة transformers.SinqConfig

< >

( nbits: int = 4group_size: int = 64tiling_mode: str = '1D'method: str = 'sinq'modules_to_not_convert: list[str] | None = None**kwargs: Any )

المعاملات

  • nbits (int، الافتراضي 4) — عدد بتات التكميم للأوزان.
  • group_size (int، الافتراضي 64) — حجم المجموعة المستخدم في تكميم أوزان SINQ (يجب أن يكون مضاعفاً للعدد 8).
  • tiling_mode (str، الافتراضي “1D”) — وضع التقطيع لـ SINQ (عادةً “1D”؛ و”2D” إذا كان مدعومًا في واجهة الخلفية الخاصة بك).
  • method (str، الافتراضي “sinq”) — “sinq” – SINQ الذي يعتمد على الأوزان فقط دون معايرة “asinq” – A-SINQ (الواعي بالتفعيلات)، غير مدعوم في Hugging Face. يُرجى الرجوع إلى مستودع SINQ الرسمي.
  • modules_to_not_convert (list[str], اختياري) — قائمة بأسماء الوحدات/بادئاتها التي يجب إبقاؤها بدقة كاملة.
  • **kwargs — معاملات إضافية من المستخدم (تُحفظ في _extra_kwargs لإعادة الاستخدام).

إعدادات التكميم لـ SINQ / A-SINQ.

مرر هذا إلى:

AutoModel.from_pretrained(…, quantization_config=SinqConfig(…))

GgufConfig

فئة transformers.GgufConfig

< >

( gguf_file: str | None = Nonedequantize: bool = False**kwargs )

المعاملات

  • gguf_file (str, اختياري) — مسار ملف .gguf الذي يحتوي على الأوزان. يمكن تركه فارغاً إذا تم تسميته عبر from_pretrained(..., gguf_file=...)، حيث يتم ملؤه تلقائياً.
  • dequantize (bool، اختياري، القيمة الافتراضية False) — بدلًا من ذلك، فكّ تشفير كل وزن عند التحميل إلى نموذج كثيف عادي. هذا الخيار صحيح دائمًا، لكنه يتنازل عن توفير الذاكرة؛ وهو أيضًا الخيار الاحتياطي التلقائي عندما لا يتوفر نواة matmul لأنواع التكميم الخاصة بالملف.

حمّل نقطة تفتيش مُكمّاة بصيغة GGUF مع إبقاء أوزانها داخل كتل GGUF.

Update on GitHub