Transformers documentation
المصدّرون
المصدّرون
يمكن إضافة واجهات تصدير جديدة إلى Transformers عن طريق إنشاء فئة فرعية من HfExporter وتسجيلها باستخدام register_backend().
تعلّم كيفية استخدام مُصدِّرات النظام المدمجة في دليل Exporters.
AutoHfExporter
فئة مُصدِّر Auto-HF التي تتولى إنشاء HfExporter الصحيح تلقائيًا بناءً على ExportConfig.
AutoExportConfig
فئة إعدادات التصدير Auto-HF التي تتولى تلقائيًا توجيه الطلب إلى فئة إعدادات التصدير الصحيحة بناءً على إعدادات التصدير المخزنة في قاموس.
register_backend
transformers.exporters.register_backend
< source >( exporter: type[HfExporter]runner: type[ModelRunner] | None = None )
سجّل مُصدِّرًا، مع config_class الخاص به، تحت export_format الخاص به، والمُشغِّل الذي ينفّذ تصديراته،
حتى تجد فئات auto هذه العناصر.
HfExporter
فئة أساسية مجردة لجميع مُصدِّرات Transformers.
لإضافة واجهة خلفية، قم بإنشاء فئة فرعية وتنفيذ ~HfExporter.export_program لتتبع رسم بياني واحد، و~HfExporter.save_program / ~HfExporter.load_program لكتابته وقراءته مرة أخرى. وتقوم الدوال العامة ~HfExporter.export و~HfExporter.export_for_generation ببناء ExportedModel فوقها.
تصدير
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
يعيد
ExportedModel
مكوّن "model" واحد؛ برنامج الخلفية هو .program، و
save_pretrained يكتبه مع بياناته الوصفية وإعدادات النموذج.
صدّر النموذج كرسوم بيانية واحدة.
يقبل نفس معاملات forward كما في ~HfExporter.export_program.
export_for_generation
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, ExportConfigMixin]generation_config: GenerationConfig | None = Nonemulti_token_decode: bool = False ) → ExportedModel
المعاملات
- 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).
يعيد
ExportedModel
مكوّن ExportedComponent واحد لكل مرحلة، مع نفس المفاتيح الموجودة في
decompose_for_generation().
قم بتفكيك نموذج توليدي وتصدير كل مكوّن بشكل مستقل.
Thin wrapper around decompose_for_generation() that calls ~HfExporter.export_program 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.
export_program
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin ) → tuple[Any, ExportMetadata]
المعاملات
- 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) — إعدادات خاصة بالخلفية.
يعيد
tuple[Any, ExportMetadata]
كائن البرنامج الخاص بالخلفية (ExportedProgram، onnx_ir.Model،
ExecutorchProgramManager، openvino.Model) والبيانات الوصفية المسجلة أثناء تتبعه
(build_export_metadata())، تُعاد بشكل منفصل لأن بعض الصيغ فقط يمكنها حمل هذه البيانات.
تتبّع رسمًا بيانيًا واحدًا. نقطة الامتداد الخاصة بالخلفية، مقترنة بـ ~HfExporter.save_program.
اقرأ برنامجًا كُتب بواسطة ~HfExporter.save_program. قد يختلف عما أعادته ~HfExporter.export_program: فهو برنامج Program وقت التشغيل لـ ExecuTorch، لا يمكن إعادة بناء ExecutorchProgramManager الخاص به من الملف.
الملفات التي يكتبها ~HfExporter.save_program لبرنامج محفوظ باسم filename: الملف نفسه، بالإضافة إلى أي ملفات أخرى يحتفظ بها التنسيق بجانبه (الأوزان، البيانات الخارجية).
اكتب برنامجًا واحدًا يُعاد بواسطة ~HfExporter.export_program إلى path، بصيغة ملفات الخلفية.
تحقق من تثبيت required_packages وأصدر تحذيرًا عند وجود انحراف في الإصدارات عن tested_versions.
ExportedModel
فئة transformers.exporters.ExportedModel
< source >( components: dict[str, ExportedComponent]export_format: ExportFormat | strconfig: PreTrainedConfig | None = Nonegeneration_config: GenerationConfig | None = None )
نموذج مُصدَّر: رسومه (components، {name: ExportedComponent}) والإعدادات التي تم تتبعها مقابلها، تُستدعى بالطريقة التي تستدعى بها النموذج الذي اشتُق منه.
~HfExporter.export ينتج مكوّنًا واحدًا باسم "model"، حيث يكون برنامجه .program؛ بينما ينتج ~HfExporter.export_for_generation مكوّنًا واحدًا لكل مرحلة من مراحل التوليد.
>>> exported = OnnxExporter().export(model, inputs, OnnxConfig(dynamic=True))
>>> exported.save_pretrained("exported")
>>> outputs = ExportedModel.from_pretrained("exported", device="cuda")(**inputs)
>>> outputs.last_hidden_stateنفّذ تصديرًا لمخطط واحد، مع إرجاع ما يعيده النموذج المصدر. تُستبعد كلمات المعلمات (Kwargs) التي لم يُتتبَّع التصدير بها، لذا يمكن تمرير المخرجات الكاملة لمعالج (processor). تُمرَّر share_inputs وshare_outputs إلى المنفّذ (انظر ModelRunner.__call__): عند استخدام share_outputs، تبقى المخرجات صالحة حتى الاستدعاء التالي.
برنامج الخلفية الخاص به، لتصدير مخطط واحد.
حمّل البرامج على وقت تشغيل الخلفية الخاصة بها، على device (الافتراضي للخلفية عند None). تُمرَّر runner_kwargs إلى مشغّل الخلفية: providers وsession_options لـ ONNX Runtime، وconfig (خصائص التجميع) وtorch_threads (تقسيم وحدة المعالجة المركزية مع عمل torch حول النموذج) لـ OpenVINO.
save_pretrained
< source >( save_directory: str | Pathpush_to_hub: bool = False**kwargs )
المعاملات
- save_directory (
strأوPath) — المجلد الذي سيتم الكتابة إليه، وسيتم إنشاؤه إذا لم يكن موجودًا. - push_to_hub (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم رفع الملفات المحفوظة إلى Hub أيضًا، إلىrepo_id(القيمة الافتراضية هي اسمsave_directoryفي نطاقك). - kwargs (
dict[str, Any], اختياري) — يُمرَّر إلى رفع Hub:repo_id،commit_message،token،private، …
اكتب المكونات (ملف واحد لكل مكوّن) وملفات الإعدادات وقائمة تُسمّي ملف كل مكوّن والبيانات الوصفية المسجّلة عند تتبّعه. يُعيد ~ExportedModel.from_pretrained تحميلها.
from_pretrained
< source >( pretrained_model_name_or_path: str | Pathdevice = Nonecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'subfolder: str = ''trust_remote_code: bool = False**runner_kwargs )
المعاملات
- pretrained_model_name_or_path (
strأوPath) — مجلد محلي، أو معرف مستودع في Hub. من Hub، يتم تنزيل الملفات التي يذكرها manifest فقط، لذا يمكن أن يكون التصدير بجانب أوزان النموذج الخاصة به. - device (
strأوtorch.device، اختياري) — المكان الذي سيتم فيه تشغيله (الافتراضي الخاص بالخلفية عندNone). - cache_dir (
Union[str, os.PathLike], اختياري) — مسار إلى مجلد يجب تخزين إعدادات النموذج المُدرَّب مسبقًا المُحمَّل فيه مؤقتًا إذا لم يُستخدم التخزين المؤقت القياسي. - force_download (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتاً إذا كانت موجودة. - local_files_only (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب البحث في الملفات المحلية فقط (أي عدم محاولة تنزيل النموذج). - token (
strأوbool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue، أو لم يُحدد، فسيتم استخدام الرمز الذي تم إنشاؤه عند تشغيلhf auth login(المخزَّن في~/.huggingface). - revision (
str, اختياري, الافتراضي هو"main") — إصدار النموذج المحدد الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف التزامن (commit id)، حيث نستخدم نظامًا قائمًا على git لتخزين النماذج والموارد الأخرى على huggingface.co، لذاrevisionيمكن أن يكون أي معرّف يسمح به git.لاختبار طلب سحب قمت بإنشائه على Hub، يمكنك تمرير
revision="refs/pr/<pr_number>". - subfolder (
str، اختياري، الافتراضي"") — في حال كانت الملفات ذات الصلة موجودة داخل مجلد فرعي من مستودع النموذج على huggingface.co، يمكنك تحديد اسم المجلد هنا. - trust_remote_code (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تحميل إعدادات نموذج يتواجد كوده في مستودعه، كما هو الحال مع from_pretrained(). - runner_kwargs (اختياري) —
خيارات مُنفِّذ الخلفية، كما في
~ExportedModel.to:providersوsession_optionsلـ ONNX Runtime، وconfigوtorch_threadsلـ OpenVINO.
حمّل ما كتبه ~ExportedModel.save_pretrained: كل مكوّن عبر ~HfExporter.load_program الخاص بواجهته البرمجية، مع بياناته الوصفية، وملفات الإعدادات المحفوظة بجانبها. تُحمَّل البرامج على بيئة التشغيل الخاصة بواجهتها البرمجية فورًا، وجاهزة للتشغيل.
ExportedComponent
مخطط واحد مُصدَّر: برنامج الخلفية، وما سجّله المُصدِّر عنه.
ExportMetadata
فئة transformers.exporters.ExportMetadata
< source >( architecture: str | None = Nonepackages: dict[str, str] = <factory>export_config: dict[str, Any] = <factory>export_dtype: str | None = Noneexport_device: str | None = Nonekwargs: dict[str, dict] = <factory>in_spec: str | None = Noneout_spec: str | None = Nonein_constants: dict[str, Any] = <factory>out_constants: list = <factory> )
ما سجّله المُصدِّر عن رسم بياني واحد (build_export_metadata()).
إنشاء البيانات الوصفية من قاموسها المحفوظ، مع تجاوز الحقول التي لا تمتلكها هذه الفئة (المُضافة بواسطة إصدار أحدث).
ModelRunner
تشغّل برنامجًا مُصدَّرًا واحدًا على نظام التشغيل الخاص به: يعيد runner(**kwargs) ما يعيده النموذج المصدر.
يعيد مُنفِّذ البرنامج عند التصدير البرنامج نفسه، أو يقرأ ~HfExporter.load_program البرنامج مرة أخرى على device (الافتراضي الخاص بالخلفية عند None).
أعد بناء مخرجات النموذج من المخرجات المسطحة للبرنامج (التي تأتي في النهاية) والثوابت المسجلة.
DynamoExporter
مُصدِّر يقوم بتحويل PreTrainedModel إلى ExportedProgram.
مثال:
>>> from transformers.exporters.exporter_dynamo import DynamoExporter, DynamoConfig
>>> exporter = DynamoExporter()
>>> exported = exporter.export(model, inputs, config=DynamoConfig(dynamic=True))
>>> outputs = exported(**inputs)
>>> exported.save_pretrained("exported") # `model.pt2`, its metadata and the model configتصدير
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
يعيد
ExportedModel
مكوّن "model" واحد؛ برنامج الخلفية هو .program، و
save_pretrained يكتبه مع بياناته الوصفية وإعدادات النموذج.
صدّر النموذج كرسوم بيانية واحدة.
يقبل نفس معاملات forward كما في ~HfExporter.export_program.
OnnxExporter
مُصدِّر يحوّل PreTrainedModel إلى رسم ONNX (نموذج onnx_ir.Model).
مثال:
>>> from transformers.exporters.exporter_onnx import OnnxExporter, OnnxConfig
>>> exporter = OnnxExporter()
>>> exported = exporter.export(model, inputs, config=OnnxConfig(dynamic=True))
>>> outputs = exported(**inputs) # on ONNX Runtime
>>> onnx_model = exported.program # an `onnx_ir.Model`
>>> exported.save_pretrained("exported") # `model.onnx`, its metadata and the model configتصدير
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
يعيد
ExportedModel
مكوّن "model" واحد؛ برنامج الخلفية هو .program، و
save_pretrained يكتبه مع بياناته الوصفية وإعدادات النموذج.
صدّر النموذج كرسوم بيانية واحدة.
يقبل نفس معاملات forward كما في ~HfExporter.export_program.
ExecutorchExporter
مُصدِّر يقوم بتحويل PreTrainedModel إلى ExecutorchProgramManager في ExecuTorch.
مثال:
>>> from transformers.exporters.exporter_executorch import ExecutorchExporter, ExecutorchConfig
>>> exporter = ExecutorchExporter()
>>> exported = exporter.export(model, inputs, config=ExecutorchConfig(backend="xnnpack"))
>>> outputs = exported(**inputs) # on the ExecuTorch runtime
>>> exported.save_pretrained("exported") # `model.pte`, its metadata and the model configتصدير
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
يعيد
ExportedModel
مكوّن "model" واحد؛ برنامج الخلفية هو .program، و
save_pretrained يكتبه مع بياناته الوصفية وإعدادات النموذج.
صدّر النموذج كرسوم بيانية واحدة.
يقبل نفس معاملات forward كما في ~HfExporter.export_program.
DynamoConfig
فئة transformers.exporters.DynamoConfig
< source >( 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
< source >( 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 = Noneopset_version: int | None = Noneoptimize: bool = Trueort_fusions: Literal['cpu', 'cuda', 'webgpu', 'dml'] | None = None )
المعاملات
- opset_version (
int, اختياري) — إصدار مجموعة عمليات ONNX المستهدف. القيمة الافتراضية هي أحدث مجموعة عمليات مدعومة من قبل إصدارonnxscriptالمثبت. - optimize (
bool، اختياري، القيمة الافتراضيةTrue) — تنفيذ عمليات تحسينonnxscript(طيّ الثوابت، إزالة الكود غير المستخدم، …) على الرسم البياني المُصدَّر. عطّل هذا الخيار للنماذج التي تصطدم بأخطاء في مُحسِّنonnxscriptالأصلي. - ort_fusions (
str, اختياري) — دمج الرسم في عمليات ONNX Runtime الخاصة بمزوّد التنفيذ الذي يعمل عليه:"cpu"،"cuda"،"webgpu"أو"dml". يعمل الرسم المدمج فقط على ONNX Runtime. يتطلبoptimize=True.
فئة التهيئة لتصدير النماذج إلى ONNX عبر torch.onnx.export.
يرث جميع الحقول من DynamoConfig (dynamic، strict، dynamic_shapes، prefer_deferred_runtime_asserts_over_guards).
ExecutorchConfig
فئة transformers.exporters.ExecutorchConfig
< source >( 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
< source >( 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 = Nonecompress_to_fp16: bool = Falsestateful: bool = True )
المعاملات
- compress_to_fp16 (bool، اختياري، القيمة الافتراضية False) — ضغط أوزان النموذج المحوّل من نوع float32 إلى float16، مما يُقلّص حجمه إلى النصف. يكون معطلاً افتراضياً بسبب النطاق الضيق.
- 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_idxinput 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
< source >( 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 عينات المعايرة على مدخلات النموذج الخاصة به.
تكميم model (رسم FX إذا كان quantizes_fx_graph، وإلا النموذج الأساسي) وإرجاع النتيجة، مع معايرة على calibration_dataset، أو على sample_inputs الخاص بالتصدير إذا لم يتوفر.
عينات المعايرة على شكل معاملات kwargs المُتبعة، لمُكمّمي FX-graph.
ارفع استثناءً إذا لم يستطع هذا المُكمِّم (quantizer) العمل على تصدير بصيغة export_format، أو إذا كان الحزمة المطلوبة مفقودة أو قديمة جداً؛
وأصدر تحذيراً إذا اختلفت أي حزمة عن الإصدار الذي تم اختباره عليه.
نسخة من هذا المُكمِّم تُعاير على calibration_dataset.
فئة transformers.exporters.quantizers.CalibrationSet
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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) لهذه العمليات.
فئة transformers.exporters.NNCFQuantizationConfig
< source >( 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
< source >( 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
< source >( obj: Any ) → dict[str, torch.Tensor]
استرجاع جميع الموترات الورقية بشكل تكراري من بنية قد تكون متداخلة.
transformers.exporters.utils.prepare_for_export
< source >( 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
< source >( 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
< source >( 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
< source >( 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”<modality>_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.
يعيد True إذا كان النموذج متعدد الوسائط مع مشفّرات الوسائط ونموذج لغوي.
النموذج الذي ليس PreTrainedModel (مثل nn.Module عادي) لا يحتوي على مُوجِّهات get_encoder/get_decoder قياسية، وهو ليس متعدد الوسائط بوضوح، لذلك يُرجع False مباشرة.