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

المصدّرون

يمكن إضافة واجهات تصدير جديدة إلى Transformers عن طريق إنشاء فئة فرعية من HfExporter.

تعلّم كيفية استخدام مُصدِّرات النظام المدمجة في دليل Exporters.

AutoHfExporter

فئة transformers.exporters.AutoHfExporter

< >

( )

فئة مُصدِّر Auto-HF التي تتولى إنشاء HfExporter الصحيح تلقائيًا بناءً على ExportConfig.

from_pretrained

< >

( pretrained_model_name_or_path**kwargs )

حمّل مثيل مُصدِّر من نموذج/نقطة تحقق مُدرَّب مسبقًا يتضمن إعداد تصدير.

لم يتم تنفيذه بعد — عنصر احتيازي لمسار عمل "وصفة تصدير" من الدرجة الأولى.

الفكرة: ينشر مالكو النماذج ملف export_config.json (أو حقل export_config داخل config.json) إلى جانب أوزانهم على Hub. يلتقط هذا الملف الإعدادات التي سبق للمالك التحقق منها بخصوص معماريته — وهي: الصيغة المستهدفة (dynamo / onnx / executorch)، مواصفات الأشكال الديناميكية الدقيقة (مثل: text_ids ديناميكي حتى 4096، بلاطات الصور ثابتة عند 448، batch=1 للنشر على الحافة)، علم strict، مجموعة عمليات ONNX، تخطيط prefill مقابل decode، اختيار خلفية ExecuTorch، وأي إعداد آخر كان يُدار حتى اليوم كمعرفة شفهية في ملف README أو دفتر ملاحظات خاص.

ثم يحصل المستهلكون على التصدير المُتحقَّق منه من قِبل المالك في استدعاء واحد:

exporter = AutoHfExporter.from_pretrained("org/model-name")
program = exporter.export(model, inputs)

يتكامل مع سجل register_export_input_preparer: حيث يوفّر المالك مواصفات الأبعاد عبر export_config.json، بينما يوفّر transformers الحسابات المسبقة المعتمدة على البيانات (cu_seqlens، معرّفات مواضع الرؤية، فهارس النوافذ، …) لتلك البنية المعمارية. معًا، يغطّيان الجزأين الصعيبين في تصدير النماذج الجديدة — معرفة عقد الأبعاد الصحيح وإعداد المدخلات الصحيحة — بحيث لا يضطر المستخدمون في المراحل اللاحقة إلى إعادة اشتقاق أيٍّ منهما من الصفر (ولا يواجهون أعطالاً في بيئة الإنتاج عند ارتكابهم خطأً).

supports_export_format

< >

( export_config_dict: dict )

تُرجع True إذا كان القاموس المُقدَّم يصف export_format الذي يحتوي على كلا من فئة الإعدادات المسجّلة وفئة المُصدِّر المسجّلة. تُصدر تحذيراً برسالة قابلة للتنفيذ عندما يكون التنسيق مفقوداً بالكامل، أو غير معروف، أو مسجّلاً جزئياً فقط.

AutoExportConfig

فئة transformers.exporters.AutoExportConfig

< >

( )

فئة إعدادات التصدير Auto-HF التي تتولى تلقائيًا توجيه الطلب إلى فئة إعدادات التصدير الصحيحة بناءً على إعدادات التصدير المخزنة في قاموس.

HfExporter

فئة transformers.exporters.HfExporter

< >

( )

فئة أساسية مجردة لجميع مُصدِّرات Transformers.

أنشئ فئة فرعية ونفّذ ~HfExporter.export لإضافة واجهة تصدير جديدة.

تصدير

< >

( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin )

المعاملات

  • model (PreTrainedModel) — النموذج الذي سيتم تصديره.
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Forward kwargs — ما ستمرره إلى model(**sample_inputs). تُستخدم هذه المدخلات مباشرةً كمدخلات نموذجية أثناء التتبع. في حالة تصدير خطوة فك الترميز التوليدية الذاتية، يجب أن تتضمن past_key_values وcache_position وما إلى ذلك. إذا كان لديك مدخلات بأسلوب التوليد فقط، فاستخدم ~HfExporter.export_for_generation بدلاً من ذلك — إذ يقوم بتشغيل model.generate نيابةً عنك ويصدّر كل مرحلة.
  • config (ExportConfigMixin) — إعدادات خاصة بالخلفية.

صدّر النموذج وأعد كائن البرنامج الخاص بالخلفية.

export_for_generation

< >

( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, ExportConfigMixin]generation_config: GenerationConfig | None = Nonemulti_token_decode: bool = False ) → dict[str, Any]

المعاملات

  • model (PreTrainedModel) — النموذج التوليدي الذي سيتم تصديره. يجب أن يدعم model.generate(**sample_inputs).
  • sample_inputs (dict[str, torch.Tensor | Cache]) — معاملات Generate — ما ستمرره إلى model.generate(**sample_inputs) (عادةً input_ids + attention_mask، بالإضافة إلى أي مدخلات نمطية مثل pixel_values / input_features للنماذج متعددة الأنماط). يتم التقاط معاملات التقديم لكل مرحلة داخليًا.
  • config (ExportConfigMixin أو dict[str, ExportConfigMixin]) — إعدادات خاصة بالخلفية. مرّر إعدادًا واحدًا لتطبيقه على جميع المكونات، أو مرّر dict مفاتيحه هي أسماء المكونات (مثل "image_encoder"، "language_model"، "lm_head"، "decode") لتجاوز الإعدادات لكل مكوّن على حدة — يجب أن تكون جميع أسماء المكونات موجودة في القاموس.
  • generation_config (GenerationConfig، اختياري) — يُمرَّر إلى التقاط generate() (افتراضيًا، يُستخدم إعداد النموذج الخاص به). مرِّر إعدادًا يحتوي على cache_implementation="static" للتصدير مقابل StaticCache بحجم ثابت.
  • multi_token_decode (bool، اختياري، القيمة الافتراضية False) — ما إذا كان مكوّن decode يعالج رموز الاستعلام المتعددة دفعة واحدة — محور استعلام ديناميكي (تعبئة مسبقة على ذاكرة مؤقتة فارغة، أو استئناف من الماضي في الحالات الأخرى) — مقابل خطوة الرمز الواحد الكلاسيكية (انظر decompose_for_generation()). يبقى ديناميكيًا فقط عند تصدير بأشكال ديناميكية (config.dynamic=True).

يعيد

dict[str, Any]

{component_name: backend_specific_artifact} — نفس المفاتيح الموجودة في decompose_for_generation(). أما القيم فهي ما يعيده ~HfExporter.export للخلفية المحددة (ExportedProgram، ONNXProgram، ExecutorchProgramManager).

قم بتفكيك نموذج توليدي وتصدير كل مكوّن بشكل مستقل.

Thin wrapper around decompose_for_generation() that calls ~HfExporter.export on every returned (submodel, forward_inputs) pair. If you need the intermediate (submodel, forward_inputs) pairs (for verification, custom inputs, skipping a stage, …), call decompose_for_generation() directly.

validate_environment

< >

( *args**kwargs )

تحقق من تثبيت required_packages وأصدر تحذيرًا عند وجود انحراف في الإصدارات عن tested_versions.

DynamoExporter

فئة transformers.exporters.DynamoExporter

< >

( )

مُصدِّر يقوم بتحويل PreTrainedModel إلى ExportedProgram.

مثال:

>>> from transformers.exporters.exporter_dynamo import DynamoExporter, DynamoConfig

>>> exporter = DynamoExporter()
>>> exported = exporter.export(model, inputs, config=DynamoConfig(dynamic=True))
>>> outputs = exported.module()(**inputs)

تصدير

< >

( model: PreTrainedModelsample_inputs: MutableMapping[str, Any]config: DynamoConfig | dict[str, Any] )

OnnxExporter

فئة transformers.exporters.OnnxExporter

< >

( )

مُصدِّر يقوم بتحويل PreTrainedModel إلى ONNXProgram بصيغة ONNX.

مثال:

>>> from transformers.exporters.exporter_onnx import OnnxExporter, OnnxConfig

>>> exporter = OnnxExporter()
>>> onnx_program = exporter.export(model, inputs, config=OnnxConfig(dynamic=True))
>>> outputs = onnx_program(**inputs)  # run in-memory
>>> exporter.export(model, inputs, config=OnnxConfig(output_path="model.onnx"))  # save to disk

تصدير

< >

( model: PreTrainedModelsample_inputs: MutableMapping[str, Any]config: OnnxConfig | dict[str, Any] )

ExecutorchExporter

فئة transformers.exporters.ExecutorchExporter

< >

( )

مُصدِّر يقوم بتحويل PreTrainedModel إلى ExecutorchProgramManager في ExecuTorch.

مثال:

>>> from transformers.exporters.exporter_executorch import ExecutorchExporter, ExecutorchConfig

>>> exporter = ExecutorchExporter()
>>> et_program = exporter.export(model, inputs, config=ExecutorchConfig(backend="xnnpack"))
>>> et_program.write_to_file("model.pte")

تصدير

< >

( model: PreTrainedModelsample_inputs: MutableMapping[str, Any]config: ExecutorchConfig | dict[str, Any] )

تصدير نموذج إلى ExecuTorch، مع تطبيق إعدادات الخلفية (backend) وإصلاحات عمليات torch.

DynamoConfig

فئة transformers.exporters.DynamoConfig

< >

( export_format: ExportFormat = <ExportFormat.DYNAMO: 'dynamo'>dynamic: bool = Falsestrict: bool = Falsedynamic_shapes: dict[str, Any] | None = Noneprefer_deferred_runtime_asserts_over_guards: bool = Falsequantizer: ExportQuantizer | None = None )

المعاملات

  • dynamic (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم التصدير بأشكال ديناميكية (رمزية). عند تعيين True وعدم تعيين dynamic_shapes، يتم تعيين جميع أبعاد المصفوفات تلقائيًا إلى Dim.AUTO.
  • strict (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تفعيل الوضع الصارم في torch.export. يقوم بتشغيل التتبع الرمزي الكامل ويكشف عن أخطاء أكثر، لكنه أبطأ وأكثر عرضة للفشل عند التعامل مع نماذج معقدة.
  • dynamic_shapes (dict[str, Any], اختياري) — مواصفات صريحة لأشكال ديناميكية لكل مدخل تُمرَّر إلى torch.export. لها الأولوية على dynamic.
  • prefer_deferred_runtime_asserts_over_guards (bool، اختياري، القيمة الافتراضية False) — عندما تكون القيمة True، تُصدر حواجز الأشكال المعتمدة على البيانات على شكل تأكيدات وقت التشغيل في الرسم المُصدَّر بدلاً من فشل التصدير وقت التتبع عندما لا يتحقق الحاجز عبر نطاق الشكل الرمزي الكامل. تحتاج معظم نماذج LLM من نوع transformer إلى ضبط هذه القيمة على True عند استخدام حدود Dim(min=, max=) الدقيقة. لا حاجة إليها عند استخدام dynamic=True / Dim.AUTO، حيث يستنتج torch.export علاقات الأشكال بدلاً من التحقق منها مقابل الحدود التي حددها المستخدم.
  • quantizer ([~exporters.quantizers.ExportQuantizer], اختياري) — كمّية ما بعد التدريب المطبّقة أثناء التصدير: [~exporters.quantizers.PT2EQuantizer] أو [~exporters.quantizers.NNCFTorchFXQuantizer] على مخطط FX لكل واجهة خلفية، [~exporters.quantizers.OnnxRuntimeQuantizer] على نموذج ONNX المُحوَّل، أو [~exporters.quantizers.NNCFOpenVINOQuantizer] / [~exporters.quantizers.NNCFOnnxQuantizer] على نموذج OpenVINO / ONNX المُحوَّل.

فئة الإعدادات لتصدير النماذج عبر torch.export.

OnnxConfig

فئة transformers.exporters.OnnxConfig

< >

( export_format: ExportFormat = <ExportFormat.ONNX: 'onnx'>dynamic: bool = Falsestrict: bool = Falsedynamic_shapes: dict[str, Any] | None = Noneprefer_deferred_runtime_asserts_over_guards: bool = Falsequantizer: ExportQuantizer | None = Noneoutput_path: str | PathLike | None = Noneopset_version: int | None = Noneexternal_data: bool = Trueoptimize: bool = Trueexport_params: bool = Truekeep_initializers_as_inputs: bool = False )

المعاملات

  • output_path (str أو PathLike، اختياري) — مسار الإخراج لملف .onnx. عند تعيين None (الافتراضي)، يُحفظ النموذج المُصدَّر في الذاكرة كـONNXProgram ولا يُكتب على القرص.
  • opset_version (int, اختياري) — إصدار مجموعة عمليات ONNX المستهدف. القيمة الافتراضية هي أحدث مجموعة عمليات مدعومة من قبل إصدار onnxscript المثبت.
  • external_data (bool، اختياري، القيمة الافتراضية True) — تخزين متجهات الأوزان الكبيرة في ملف جانبي منفصل .onnx_data بدلاً من تضمينها في ملف البروتوكول. يُشترط هذا الخيار للنماذج التي تتجاوز أوزانها حد 2 غيغابايت الخاص بملفات البروتوكول.
  • optimize (bool، اختياري، القيمة الافتراضية True) — تنفيذ عمليات تحسين onnxscript (طيّ الثوابت، إزالة الكود غير المستخدم، …) على الرسم البياني المُصدَّر. عطّل هذا الخيار للنماذج التي تصطدم بأخطاء في مُحسِّن onnxscript الأصلي.
  • export_params (bool، اختياري، القيمة الافتراضية True) — تضمين أوزان النموذج في رسم ONNX. اضبطه على False لتصدير رسم خالٍ من الأوزان (يجب توفير الأوزان وقت التشغيل).
  • keep_initializers_as_inputs (bool، اختياري، القيمة الافتراضية False) — تُعرِّف مُهيِّئات الأوزان كمدخلات صريحة للرسم البياني. وهي مطلوبة من بعض إصدارات ONNX runtimes الأقدم (opset < 9).

فئة التهيئة لتصدير النماذج إلى ONNX عبر torch.onnx.export.

يرث جميع الحقول من DynamoConfig (dynamic، strict، dynamic_shapes، prefer_deferred_runtime_asserts_over_guards).

ExecutorchConfig

فئة transformers.exporters.ExecutorchConfig

< >

( export_format: ExportFormat = <ExportFormat.EXECUTORCH: 'executorch'>dynamic: bool = Falsestrict: bool = Falsedynamic_shapes: dict[str, Any] | None = Noneprefer_deferred_runtime_asserts_over_guards: bool = Falsequantizer: ExportQuantizer | None = Nonebackend: str = 'xnnpack'alloc_graph_input: bool = Truealloc_graph_output: bool = Truealloc_mutable_buffers: bool = True )

المعاملات

  • backend (str, اختياري, الافتراضي هو "xnnpack") — خلفية ExecuTorch المستهدفة. القيم المدعومة:
    • "xnnpack" — الاستدلال على المعالج المركزي عبر مكتبة XNNPACK (الافتراضي؛ يعمل في أي مكان).
    • "cuda" — الاستدلال على وحدة معالجة الرسوميات (GPU) عبر وحدة الخلفية CUDA في ExecuTorch.
    • "mlx" — استنتاج عبر وحدة المعالجة الرسومية باستخدام وحدة ExecuTorch MLX على Apple Silicon.
  • alloc_graph_input (bool، اختياري، القيمة الافتراضية True) — هل يحجز مسار تخطيط الذاكرة ذاكرة الساحة (arena) لإدخالات الرسم البياني. عند تعيين False، يستخدم وقت التشغيل مخازن الإدخال التي يوفرها المستدعي مباشرةً بدلاً من نسخها إلى الساحة — وبالتالي فإن أي USER_INPUT_MUTATION في الموقع (مثل كتابة StaticCache) يقع في متجه المستدعي بدلاً من نسخة الساحة.
  • alloc_graph_output (bool، اختياري، القيمة الافتراضية True) — هل يحجز مسار تخطيط الذاكرة ذاكرة الساحة (arena) لمخرجات الرسم البياني. عند تعيين False، يجب على المستدعي ربط مخازن المخرجات وقت التشغيل (Method::set_output_data_ptr)؛ وربط مخرج بمخزن مدخله المُعدَّل يتجنّب دورة النسخ للخارج.
  • alloc_mutable_buffers (bool، اختياري، القيمة الافتراضية True) — هل تحجز مرحلة تخطيط الذاكرة ذاكرة الساحة (arena) للذاكرة المتغيرة (الحالة المقيمة في النموذج). يتم تمريرها إلى MemoryPlanningPass.

فئة الإعدادات لتصدير النماذج إلى تنسيق ExecuTorch.

يرث جميع الحقول من DynamoConfig (dynamic، strict، dynamic_shapes، prefer_deferred_runtime_asserts_over_guards).

OpenVINOConfig

فئة transformers.exporters.OpenVINOConfig

< >

( export_format: ExportFormat = <ExportFormat.OPENVINO: 'openvino'>dynamic: bool = Falsestrict: bool = Falsedynamic_shapes: dict[str, Any] | None = Noneprefer_deferred_runtime_asserts_over_guards: bool = Falsequantizer: ExportQuantizer | None = Noneoutput_path: str | PathLike | None = Nonecompress_to_fp16: bool = Truestateful: bool = True )

المعاملات

  • output_path (str أو PathLike، اختياري) — مسار الإخراج لملف .xml (يتم كتابة ملف .bin المطابق بجانبه). عند كونه None (الافتراضي)، يُحفظ النموذج المحوّل في الذاكرة كـopenvino.Model.
  • compress_to_fp16 (bool، اختياري، القيمة الافتراضية True) — يضغط الأوزان العائمة إلى FP16 عند الحفظ — مما يُقلّل حجم التخزين على القرص إلى النصف مع تأثير ضئيل على الدقة في معظم النماذج. يُطبَّق فقط عند تعيين output_path.
  • stateful (bool, optional, defaults to True) — Fold round-tripped state tensors (KV cache, SSM states, …) into internal OV variables (ReadValue/Assign`). The runtime then carries state across `infer()` calls instead of marshalling cache tensors through inputs/outputs on every step, and a fused `beam_idx input reorders state in-graph for beam search. No-op for models without round-tripped state (encoders, prefill-only exports). Set it to False for targets that take no stateful model, such as the NPU plugin.

فئة الإعدادات لتصدير النماذج إلى OpenVINO IR عبر openvino.convert_model.

يرث جميع الحقول من [DynamoConfig] (dynamic، strict، dynamic_shapes، prefer_deferred_runtime_asserts_over_guards).

مُكمِّسات

فئة transformers.exporters.ExportQuantizer

< >

( calibration_dataset: Iterable[dict[str, Any]] | None = None )

المعاملات

  • calibration_dataset (Iterable[dict], اختياري) — قواميس الإدخال التي يُعاير عليها المُعايِر: قائمة، أو DataLoader تُجمَّع دفعاته إلى مدخلات النموذج. في حالة ~HfExporter.export_for_generation، تكون هذه معاملات generate، وتُلتقط في مجموعة معايرة لكل مكوّن. عند تعيين None، يُعايِر المُعايِر الذي يحتاج إلى بيانات على مدخلات العينة الخاصة بالتصدير نفسه، مع إصدار تحذير.

الفئة الأساسية لمكمّسات ما بعد التدريب المطبّقة أثناء التصدير.

يُعلن المُكمِّم عن صيغ التصدير التي يدعمها والحزم التي يحتاجها (مع الإصدارات التي تم اختبارها عليها، كما هو الحال مع مُصدِّرات التصدير)، وعن ما إذا كان يُكمِّم رسم torch.export الخاص بـ FX قبل أي تحويل (لذا يتلقى كل مُنفِّذ النتيجة)، أم يُكمِّم النموذج الذي يحوله مُنفِّذ ما (onnx_ir.Model، openvino.Model). يتحقق مُصدِّر التصدير من ذلك مقابل عملية التصدير مسبقاً، ثم يستدعي ~ExportQuantizer.quantize مع ذلك النموذج ومدخلات العينة الخاصة بالتصدير. قم بإنشاء فئة فرعية منه ونفّذ quantize لإضافة طريقة تكميم جديدة؛ حيث تُطبِّق CalibrationSet عينات المعايرة على مدخلات النموذج الخاصة به.

quantize

< >

( model: Anysample_inputs: dict[str, Any]export_format: ExportFormat )

تكميم model (رسم FX إذا كان quantizes_fx_graph، وإلا النموذج الأساسي) وإرجاع النتيجة، مع معايرة على calibration_dataset، أو على sample_inputs الخاص بالتصدير إذا لم يتوفر.

validate_environment

< >

( export_format: ExportFormat )

ارفع استثناءً إذا لم يستطع هذا المُكمِّم (quantizer) العمل على تصدير بصيغة export_format، أو إذا كان الحزمة المطلوبة مفقودة أو قديمة جداً؛ وأصدر تحذيراً إذا اختلفت أي حزمة عن الإصدار الذي تم اختباره عليه.

with_calibration

< >

( calibration_dataset: Iterable[dict[str, Any]] )

نسخة من هذا المُكمِّم تُعاير على calibration_dataset.

فئة transformers.exporters.quantizers.CalibrationSet

< >

( calibration_dataset: Iterable[dict[str, Any]] | Nonesample_inputs: dict[str, Any]transform: Callable[[dict[str, Any]], Any] )

عرض قابل لإعادة التكرار لعينات المعايرة كمدخلات للنموذج.

تكون العينات هي calibration_dataset الخاص بمُكمِّم الأرقام، أو sample_inputs الخاصة بالتصدير نفسه (مع تحذير، مرة واحدة عند قراءتها) إذا لم يتوفر أي منها. يمكن أن تكون هذه العينات أي خرائط، مثل BatchEncoding الخاص بمُرمِّز. يحوّل transform كل عينة من معاملات الأمامية إلى ما يقبله النموذج المُكمَّم (معاملات مُتبعة، مدخلات ONNX، مدخلات منافذ OpenVINO)، بشكل كسول، عينة واحدة في كل مرة، في كل مسار.

فئة transformers.exporters.PT2EQuantizer

< >

( quantizer: Anycalibration_dataset: Iterable[dict[str, Any]] | None = None )

المعاملات

  • quantizer (torchao.quantization.pt2e.quantizer.Quantizer) — مكمِّم PT2E الذي يضيف التسميات إلى الرسم البياني. يجب أن تكون عمليات التكميم/إلغاء التكميم الخاصة به مدعومة من قبل الخلفية المستهدفة: X86InductorQuantizer لـ inductor، أو ONNX (QDQ) أو OpenVINO، وXNNPACKQuantizer لـ ExecuTorch.
  • calibration_dataset (Iterable[dict], اختياري) — قواميس الإدخال التي تُعاير عليها المُراقِبات (انظر ExportQuantizer)، مع تمريرة أمامية واحدة لكل منها. لمعايرة على دفعات، مرّر DataLoader يجمع العينات في قواميس إدخال مُجمّعة بدلاً من قائمة من العينات المفردة.

قم بتكميم رسم FX باستخدام تكميم PyTorch 2 Export (PT2E): يقوم prepare_pt2e بإدراج المراقبين، وتقوم مجموعة المعايرة بتشغيلهم، بينما يستبدل convert_pt2e هذه المراقبين بعمليات التكميم/إلغاء التكميم. يعمل مع جميع واجهات التصدير.

مثال:

>>> from torchao.quantization.pt2e.quantizer.x86_inductor_quantizer import (
...     X86InductorQuantizer,
...     get_default_x86_inductor_quantization_config,
... )
>>> from transformers.exporters import DynamoConfig, PT2EQuantizer

>>> x86 = X86InductorQuantizer().set_global(get_default_x86_inductor_quantization_config())
>>> DynamoConfig(quantizer=PT2EQuantizer(x86, calibration_dataset=samples))

فئة transformers.exporters.OnnxRuntimeQuantizer

< >

( config: OnnxRuntimeStaticConfig | OnnxRuntimeDynamicConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )

قم بتكميم نموذج ONNX المُحوَّل باستخدام أدوات ONNX Runtime الخاصة (onnxruntime.quantization): إما quantize_static مع OnnxRuntimeStaticConfig (الافتراضي)، أو quantize_dynamic مع OnnxRuntimeDynamicConfig.

مثال:

>>> from transformers.exporters import (
...     OnnxConfig,
...     OnnxRuntimeDynamicConfig,
...     OnnxRuntimeQuantizer,
...     OnnxRuntimeStaticConfig,
... )

>>> static = OnnxRuntimeStaticConfig(per_channel=True)
>>> OnnxConfig(quantizer=OnnxRuntimeQuantizer(static, calibration_dataset=samples))
>>> OnnxConfig(quantizer=OnnxRuntimeQuantizer(OnnxRuntimeDynamicConfig()))

فئة transformers.exporters.OnnxRuntimeStaticConfig

< >

( quant_format: Any = Noneop_types_to_quantize: list[str] | None = Noneper_channel: bool | None = Nonereduce_range: bool | None = Noneactivation_type: Any = Noneweight_type: Any = Nonenodes_to_quantize: list[str] | None = Nonenodes_to_exclude: list[str] | None = Nonecalibrate_method: Any = Nonecalibration_providers: list[str] | None = Noneextra_options: dict[str, Any] | None = None )

حجج onnxruntime.quantization.quantize_static: تفعيلات وأوزان من نوع int8 (QDQ افتراضياً)، مُعايرة على calibration_dataset الخاص بالمعاير. يُبقي الحقل المُتروك على None على القيمة الافتراضية لـ ONNX Runtime. راجع quantize_static لكل منها.

فئة transformers.exporters.OnnxRuntimeDynamicConfig

< >

( op_types_to_quantize: list[str] | None = Noneper_channel: bool | None = Nonereduce_range: bool | None = Noneweight_type: Any = Nonenodes_to_quantize: list[str] | None = Nonenodes_to_exclude: list[str] | None = Noneextra_options: dict[str, Any] | None = None )

حجج onnxruntime.quantization.quantize_dynamic: أوزان int8، وتفعيلات يتم كميها وقت التشغيل، دون معايرة. أي حقل يُترك على None يحافظ على القيمة الافتراضية لـ ONNX Runtime. راجع quantize_dynamic لكل منها.

فئة transformers.exporters.NNCFOpenVINOQuantizer

< >

( config: NNCFQuantizationConfig | NNCFWeightCompressionConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )

قم بتكميم نموذج OpenVINO المحوّل باستخدام NNCF: إما nncf.quantize مع NNCFQuantizationConfig (الافتراضي)، أو nncf.compress_weights مع NNCFWeightCompressionConfig.

مثال:

>>> import nncf
>>> from transformers.exporters import NNCFOpenVINOQuantizer, NNCFWeightCompressionConfig, OpenVINOConfig

>>> OpenVINOConfig(quantizer=NNCFOpenVINOQuantizer(calibration_dataset=samples))
>>> OpenVINOConfig(
...     quantizer=NNCFOpenVINOQuantizer(NNCFWeightCompressionConfig(mode=nncf.CompressWeightsMode.INT4_SYM))
... )

فئة transformers.exporters.NNCFOnnxQuantizer

< >

( config: NNCFQuantizationConfig | NNCFWeightCompressionConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )

قم بتكميم نموذج ONNX المُحوَّل باستخدام NNCF عبر واجهته الخلفية الخاصة بـ ONNX: إما nncf.quantize مع NNCFQuantizationConfig (الافتراضي، int8 QDQ)، أو nncf.compress_weights مع NNCFWeightCompressionConfig (int4 على شكل MatMulNBits في ONNX Runtime).

مثال:

>>> import nncf
>>> from transformers.exporters import NNCFOnnxQuantizer, NNCFWeightCompressionConfig, OnnxConfig

>>> OnnxConfig(quantizer=NNCFOnnxQuantizer(calibration_dataset=samples))
>>> OnnxConfig(quantizer=NNCFOnnxQuantizer(NNCFWeightCompressionConfig(mode=nncf.CompressWeightsMode.INT4_SYM)))

فئة transformers.exporters.NNCFTorchFXQuantizer

< >

( config: NNCFQuantizationConfig | NNCFWeightCompressionConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )

قم بتكميم مخطط torch.export الخاص بـ FX باستخدام NNCF عبر واجهة TorchFX الخاصة به: إما nncf.quantize مع NNCFQuantizationConfig (الافتراضي، عمليات quantize/dequantize)، أو nncf.compress_weights مع NNCFWeightCompressionConfig. على غرار PT2EQuantizer، يتم تشغيله قبل أي تحويل، لذا تستقبل جميع الواجهات الخلفية نتيجته. يقوم ExecuTorch بتحويل النتيجة التي تتضمن الأوزان فقط: فـ XNNPACK لا يفوّض عمليات quantize/dequantize، ولا يحتوي ExecuTorch على نوى (kernels) لهذه العمليات.

مثال:

>>> from transformers.exporters import DynamoConfig, NNCFTorchFXQuantizer

>>> DynamoConfig(quantizer=NNCFTorchFXQuantizer(calibration_dataset=samples))

فئة transformers.exporters.NNCFQuantizationConfig

< >

( mode: Any = Nonepreset: Any = Nonetarget_device: Any = Nonesubset_size: int | None = Nonefast_bias_correction: bool | None = Nonemodel_type: Any = Noneignored_scope: Any = Noneadvanced_parameters: Any = None )

حجج nncf.quantize: تفعيلات وأوزان من نوع int8، مُعايرة على calibration_dataset الخاص بالمعاير. الحقل الذي يُترك على None يحافظ على القيمة الافتراضية لـ NNCF، باستثناء model_type الذي تكون قيمته الافتراضية nncf.ModelType.TRANSFORMER. راجع nncf.quantize لكل منها.

فئة transformers.exporters.NNCFWeightCompressionConfig

< >

( mode: Any = Noneratio: float | None = Nonegroup_size: int | None = Noneignored_scope: Any = Noneall_layers: bool | None = Nonesensitivity_metric: Any = Nonesubset_size: int | None = Noneawq: bool | None = Nonescale_estimation: bool | None = Nonegptq: bool | None = Nonelora_correction: bool | None = Nonebackup_mode: Any = Nonecompression_format: Any = Noneadvanced_parameters: Any = None )

حجج nncf.compress_weights: int8 أو int4 للأوزان فقط، مع استخدام طرق واعية بالبيانات (AWQ، تقدير المقياس، GPTQ) في أوضاع int4. أوضاع int8 لا تتطلب بيانات؛ أما الأوضاع الأخرى فتُعاير على calibration_dataset الخاص بالمُكمِّم. gptq وlora_correction متاحة فقط في OpenVINO. أي حقل يُترك على None يحافظ على القيمة الافتراضية لـ NNCF. راجع nncf.compress_weights لكل حقل على حدة.

أدوات

دوال على مستوى أدنى تدعم export_for_generation، وهي مفيدة عندما تحتاج إلى التدخّل بين تفكيك النموذج وتصدير كل مكوّن على حدة.

transformers.exporters.utils.get_leaf_tensors

< >

( obj: Any ) → dict[str, torch.Tensor]

المعاملات

  • obj (Any) — مصفوفة، أو dataclass، أو dict، أو list، أو tuple، أو أي تداخل منها.

يعيد

dict[str, torch.Tensor]

تعيين مسطّح من مسارات النقط إلى المتجهات.

استرجاع جميع الموترات الورقية بشكل تكراري من بنية قد تكون متداخلة.

transformers.exporters.utils.prepare_for_export

< >

( model: PreTrainedModel | torch.nn.Moduleinputs: MutableMapping[str, Any] )

اضبط النموذج والمدخلات للتصدير. يعدّل كلًا من model وinputs في مكانهما، معيدًا (model, inputs, output_flags) حيث يحتوي output_flags على القيم المستخرجة من inputs الخاصة بـuse_cache وreturn_dict وما إلى ذلك (لتُطبَّق بشكل قابل للعكس على model.config بواسطة patch_model_config أثناء التتبع).

  • يُزيل مدخلات التسميات (labels، future_values) — لا يُدعم حساب الخسارة.
  • يستخرج أعلام المخرجات (use_cache، return_dict، …) من inputs حتى لا تظهر كحجج اختيارية مُتبعة؛ وتُعاد القيم إلى كتلة التتبع لتطبيقها على model.config.
  • يحسب مسبقًا معاملات الرؤية/الصوت المعتمدة على البيانات والمسجلة عبر @register_export_input_preparer ويكتبها في inputs.
  • يحوّل تينسورات الإدخال لتطابق dtype / device الخاص بالنموذج.

transformers.exporters.utils.decompose_prefill_decode

< >

( model: PreTrainedModelinputs: dict[str, Any]generation_config: Any = Nonemulti_token_decode: bool = False ) → dict[str, tuple[torch.nn.Module, dict]]

يعيد

dict[str, tuple[torch.nn.Module, dict]]

{"prefill": (model, prefill_inputs), "decode": (model, decode_inputs)}.

شغّل model.generate() وقُم بالتقاط مدخلات prefill و decode.

يعيد استخدام آلية التوليد الكاملة بحيث تحصل كل بنية (فكّ الترميز فقط، SSM، ترميز-فكّ ترميز، متعددة الوسائط، ...) على مدخلات صحيحة دون الحاجة إلى إعادة تنفيذ الحلقة.

يُمرَّر generation_config إلى generate() (وافتراضيًا يُستخدم الخاص بالنموذج نفسه)، لذا فإن المدخلات المُلتقطة تستخدم أي كاش يبنيه generate(). مرِّر كائنًا يحتوي على cache_implementation="static" وmax_cache_len=N لالتقاط كاش بحجم ثابت في مدخلات فك الترميز — وهو الأساس لتصدير كاش ثابت. يحدد max_cache_len حجم الكاش بشكل مستقل عن الالتقاط، لذا فإن فك الترميز المُصدَّر يتعامل مع كاش بحجم ثابت [..., N, ...] بدلاً من كاش متزايد.

عند تفعيل multi_token_decode، يُلتقط مكوّن decode كـ فك ترميز متعدد الرموز — وهو دمج لخطوتين متتاليتين من فك الترميز (انظر _merge_decode_calls) بحيث تبقى محور تسلسل الاستعلام فيه رمزيًا (فإن كان فك الترميز لرمز واحد فقط، فسيتم تخصيص ذلك المحور إلى القيمة 1). ثم يتعامل هذا المكوّن مع رمز واحد (فك الترميز العادي) ومع عدة رموز (استكمال من الماضي، أو تعبئة مسبقة عادية عندما تكون ذاكرة التخزين المؤقت فارغة). وإلا، يكون decode هو فك الترميز الكلاسيكي لرمز واحد.

transformers.exporters.utils.decompose_multimodal

< >

( model: PreTrainedModelinputs: dict[str, Any] ) → dict[str, tuple[torch.nn.Module, dict]]

يعيد

dict[str, tuple[torch.nn.Module, dict]]

سجل واحد name: (module, inputs) لكل وحدة فرعية مكتشفة (مشفّر الصورة/الصوت، المُسقط، نموذج اللغة، lm_head).

يرفع

ValueError

  • ValueError — إذا لم يتم العثور على أي وحدات فرعية متعددة الوسائط معروفة في النموذج.

التقاط المدخلات لكل وحدة فرعية متعددة الوسائط عبر تمريرة أمامية واحدة.

يكتشف جميع الوحدات الفرعية متعددة الوسائط المعروفة من خلال اسم الخاصية (برج الرؤية، المُشغِّل، نموذج اللغة، lm_head، ...) ويلتقط معاملات استدعاء الأمامي الخاصة بها أثناء استدعاء واحد لـmodel(**inputs).

يُعاد كل وحدة فرعية كعنصر مستقل بصيغة name: (module, inputs) من أجل التصدير المستقل. وقد تم استبعاد خطوة دمج الرموز (مثل masked_scatter في النماذج متعددة الوسائط) عمدًا من الرسوم البيانية المُصدَّرة — إذ تقع على عاتق المستدعي مسؤولية تجميع inputs_embeds من مخرجات المُشفِّر قبل تشغيل المُفكِّك.

transformers.exporters.utils.decompose_for_generation

< >

( model: PreTrainedModelinputs: dict[str, Any]generation_config: Any = Nonemulti_token_decode: bool = False ) → `{component_name

المعاملات

  • model — نموذج توليدي. يجب أن يدعم model.generate(**inputs).
  • inputs — معاملات Generate — ما ستمرره إلى model.generate(**inputs).
  • generation_config — GenerationConfig اختياري يُمرَّر إلى generate() أثناء الالتقاط. مرِّر كائنًا يحتوي على cache_implementation="static" + max_cache_len=N للتصدير مقابل ذاكرة مؤقتة بحجم ثابت (انظر decompose_prefill_decode).
  • multi_token_decode — عند تعيين True، يتم التقاط مكوّن decode كإفكوك متعدد الرموز (محور تسلسل الاستعلام الديناميكي: عدة رموز في آنٍ واحد — إما استكمال من الماضي، أو تعبئة مسبقة عادية إذا كان المخزن المؤقت فارغًا)؛ ولا يمكن للإفكوك أحادي الرمز أن يبقى ديناميكيًا (انظر decompose_prefill_decode).

يعيد

`{component_name

(submodel, forward_inputs)}. Keys are “prefill”/“decode”for plain generative models and”_encoder”/“multi_modal_projector”/“language_model”/“lm_head”/“decode”` for multi-modal generative models.

فكّك نموذجًا توليديًا إلى أزواج (model, forward_inputs) قابلة للتصدير بشكل مستقل.

ينفّذ decompose_prefill_decode لالتقاط معاملات استدعاءات المرحلة الأمامية الخاصة بمرحلتَي prefill وdecode من استدعاء حقيقي لـmodel.generate(**inputs, max_new_tokens=2). إذا كانت مرحلة prefill متعددة الوسائط (وفقًا لـis_multimodal)، فإنها تقسمها إلى عنصر واحد لكل وحدة فرعية (مشفر الرؤية/الصوت، المُشغِّل، نموذج اللغة، lm_head) عبر decompose_multimodal.

transformers.exporters.utils.is_multimodal

< >

( model: PreTrainedModel | torch.nn.Module )

يعيد True إذا كان النموذج متعدد الوسائط مع مشفّرات الوسائط ونموذج لغوي.

النموذج الذي ليس PreTrainedModel (مثل nn.Module عادي) لا يحتوي على مُوجِّهات get_encoder/get_decoder قياسية، وهو ليس متعدد الوسائط بوضوح، لذلك يُرجع False مباشرة.

Update on GitHub