Transformers documentation

Ekspor

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

and get access to the augmented documentation experience

to get started

Ekspor

Backend ekspor baru dapat ditambahkan ke Transformers dengan membuat subclass dari HfExporter.

Pelajari cara menggunakan exporter bawaan dalam panduan Exporters.

AutoHfExporter

kelas transformers.exporters.AutoHfExporter

< >

( )

Kelas Auto-HF exporter yang menangani instansiasi otomatis ke HfExporter yang tepat berdasarkan ExportConfig.

from_pretrained

< >

( pretrained_model_name_or_path**kwargs )

Muat instance exporter dari model/checkpoint terlatih sebelumnya yang menyertakan konfigurasi ekspor.

Belum diimplementasikan — placeholder untuk alur kerja “export recipe” yang first-class.

Idenya: pemilik model menerbitkan export_config.json (atau field export_config di config.json) bersama bobot mereka di Hub. File tersebut merekam pengaturan yang sudah divalidasi oleh pemilik untuk arsitektur mereka — format target (dynamo / onnx / executorch), spesifikasi bentuk dinamis yang tepat (misalnya text_ids dinamis hingga 4096, ubin gambar tetap pada 448, batch=1 untuk deployment edge), flag strict, opset ONNX, layout prefill vs. decode, pilihan backend ExecuTorch, dan semua pengaturan lain yang saat ini hanya ada sebagai pengetahuan internal di README atau notebook pribadi.

Konsumen kemudian mendapatkan ekspor yang telah divalidasi oleh pemilik dalam satu panggilan:

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

Bekerja sama dengan registry [register_export_input_preparer]: pemilik menyediakan spesifikasi bentuk melalui export_config.json, sedangkan transformers menyediakan pra-komputasi yang bergantung pada data (cu_seqlens, id posisi visual, indeks jendela, …) untuk arsitektur tersebut. Bersama-sama, keduanya mencakup dua bagian sulit dalam mengekspor model baru — mengetahui kontrak bentuk yang tepat dan menyiapkan input yang tepat — sehingga pengguna hilir tidak perlu menurunkannya kembali dari nol (dan tidak akan rusak di produksi jika salah).

mendukung_format_ekspor

< >

( export_config_dict: dict )

Mengembalikan True jika dict yang diberikan menggambarkan export_format yang memiliki kelas config terdaftar dan kelas exporter terdaftar. Memberikan peringatan dengan pesan yang dapat ditindaklanjuti jika format tersebut hilang sepenuhnya, tidak dikenal, atau hanya terdaftar setengah.

AutoExportConfig

kelas transformers.exporters.AutoExportConfig

< >

( )

Kelas konfigurasi ekspor Auto-HF yang menangani penugasan otomatis ke konfigurasi ekspor yang benar berdasarkan konfigurasi ekspor yang disimpan dalam kamus.

HfExporter

kelas transformers.exporters.HfExporter

< >

( )

Kelas basis abstrak untuk semua pengekspor Transformers.

Subclass dan implementasikan ~HfExporter.export untuk menambahkan backend ekspor baru.

ekspor

< >

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

Parameter

  • model (PreTrainedModel) — Model yang akan diekspor.
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Forward kwargs — apa yang akan Anda lewati ke model(**sample_inputs). Ini digunakan langsung sebagai input contoh selama tracing. Untuk ekspor langkah dekode autoregresif, artinya Anda perlu menyertakan past_key_values, cache_position, dll. Jika Anda hanya memiliki input bergaya generation, gunakan ~HfExporter.export_for_generation sebagai gantinya — ini akan menjalankan model.generate untuk Anda dan mengekspor setiap tahap.
  • config (ExportConfigMixin) — Konfigurasi yang spesifik untuk backend.

Ekspor model dan kembalikan objek program yang spesifik untuk backend.

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]

Parameter

  • model (PreTrainedModel) — Model generatif yang akan diekspor. Harus mendukung model.generate(**sample_inputs).
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Generate kwargs — apa yang akan Anda lewati ke model.generate(**sample_inputs) (biasanya input_ids + attention_mask, ditambah input modalitas apa pun seperti pixel_values / input_features untuk model multi-modal). Per-stage forward kwargs ditangkap secara internal.
  • config (ExportConfigMixin atau dict[str, ExportConfigMixin]) — Konfigurasi spesifik backend. Teruskan satu konfigurasi untuk diterapkan ke setiap komponen, atau dict yang dikunci berdasarkan nama komponen (mis. "image_encoder", "language_model", "lm_head", "decode") untuk menimpa per komponen — semua nama komponen harus hadir dalam dict.
  • generation_config (GenerationConfig, opsional) — Diteruskan ke capture generate() (defaultnya adalah milik model itu sendiri). Sampaikan satu dengan cache_implementation="static" untuk mengekspor terhadap StaticCache berukuran tetap.
  • multi_token_decode (bool, opsional, default False) — Apakah komponen decode memproses beberapa token query sekaligus — sumbu query dinamis (prefill pada cache kosong, kelanjutan-dari-masa-lalu selain itu) — atau langkah single-token klasik (lihat decompose_for_generation()). Hanya tetap dinamis di bawah ekspor bentuk-dinamis (config.dynamic=True).

Mengembalikan

dict[str, Any]

{component_name: backend_specific_artifact} — kunci yang sama dengan decompose_for_generation(). Nilainya adalah apa pun yang dikembalikan oleh ~HfExporter.export untuk backend yang konkret (ExportedProgram, ONNXProgram, ExecutorchProgramManager).

Uraikan model generatif dan ekspor setiap komponen secara independen.

Wrapper tipis di sekitar decompose_for_generation() yang memanggil ~HfExporter.export pada setiap pasangan (submodel, forward_inputs) yang dikembalikan. Jika Anda membutuhkan pasangan (submodel, forward_inputs) antara (untuk verifikasi, input kustom, melewati tahap, …), panggil decompose_for_generation() secara langsung.

validate_environment

< >

( *args**kwargs )

Periksa apakah required_packages terpasang dan beri peringatan jika ada perbedaan versi dari tested_versions.

DynamoExporter

kelas transformers.exporters.DynamoExporter

< >

( )

Exporter yang mengonversi PreTrainedModel menjadi ExportedProgram.

Contoh:

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

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

ekspor

< >

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

OnnxExporter

kelas transformers.exporters.OnnxExporter

< >

( )

Exporter yang mengonversi PreTrainedModel menjadi ONNXProgram ONNX.

Contoh:

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

ekspor

< >

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

ExecutorchExporter

kelas transformers.exporters.ExecutorchExporter

< >

( )

Exporter yang mengonversi PreTrainedModel menjadi ExecutorchProgramManager ExecuTorch.

Contoh:

>>> 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")

ekspor

< >

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

Ekspor model ke ExecuTorch, menerapkan persiapan backend dan patch torch op.

DynamoConfig

kelas 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 )

Parameter

  • dynamic (bool, opsional, default False) — Apakah akan mengekspor dengan bentuk dinamis (simbolik). Ketika True dan dynamic_shapes tidak disetel, semua dimensi tensor akan disetel ke Dim.AUTO secara otomatis.
  • strict (bool, opsional, default False) — Apakah akan mengaktifkan mode strict di torch.export. Menjalankan penelusuran simbolik penuh dan menangkap lebih banyak error, tetapi lebih lambat dan lebih mungkin gagal pada model yang kompleks.
  • dynamic_shapes (dict[str, Any], opsional) — Spesifikasi bentuk dinamis per input eksplisit yang diteruskan ke torch.export. Memiliki prioritas lebih tinggi daripada dynamic.
  • prefer_deferred_runtime_asserts_over_guards (bool, opsional, default False) — Ketika True, guard bentuk yang bergantung pada data akan diterbitkan sebagai runtime assert dalam graf yang diekspor, alih-alih menyebabkan ekspor gagal pada saat trace ketika guard tidak berlaku di seluruh rentang bentuk simbolik. Sebagian besar LLM transformer perlu mengatur ini ke True saat menggunakan batas Dim(min=, max=) yang terperinci. Tidak diperlukan dengan dynamic=True / Dim.AUTO, di mana torch.export menyimpulkan relasi bentuk alih-alih memverifikasinya terhadap batas yang dinyatakan pengguna.
  • quantizer ([~exporters.quantizers.ExportQuantizer], opsional) — Kuantisasi pasca-pelatihan yang diterapkan selama ekspor: [~exporters.quantizers.PT2EQuantizer] atau [~exporters.quantizers.NNCFTorchFXQuantizer] pada grafik FX untuk setiap backend, [~exporters.quantizers.OnnxRuntimeQuantizer] pada model ONNX yang dikonversi, atau [~exporters.quantizers.NNCFOpenVINOQuantizer] / [~exporters.quantizers.NNCFOnnxQuantizer] pada model OpenVINO / ONNX yang dikonversi.

Kelas konfigurasi untuk mengekspor model melalui torch.export.

OnnxConfig

kelas 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 )

Parameter

  • output_path (str atau PathLike, opsional) — Jalur keluaran untuk file .onnx. Ketika None (default), model yang diekspor disimpan di memori sebagai ONNXProgram dan tidak ditulis ke disk.
  • opset_version (int, opsional) — Versi opset ONNX yang ditargetkan. Secara default menggunakan opset terbaru yang didukung oleh versi onnxscript yang terinstal.
  • external_data (bool, opsional, default True) — Simpan tensor bobot besar dalam file sidecar .onnx_data terpisah daripada menimbulkannya di dalam protobuf. Diperlukan untuk model yang bobotnya melebihi batas protobuf 2 GB.
  • optimize (bool, opsional, default True) — Jalankan jalur optimasi onnxscript (constant folding, dead-code elimination, …) pada graf yang diekspor. Nonaktifkan untuk model yang mengalami bug pada optimiser onnxscript upstream.
  • export_params (bool, opsional, default True) — Sematkan bobot model ke dalam graf ONNX. Atur ke False untuk mengekspor graf tanpa bobot (bobot harus disediakan saat runtime).
  • keep_initializers_as_inputs (bool, opsional, default False) — Ekspos inisialisasi bobot sebagai input grafik eksplisit. Diperlukan oleh beberapa runtime ONNX yang lebih lama (opset < 9).

Kelas konfigurasi untuk mengekspor model ke ONNX melalui torch.onnx.export.

Mewarisi semua field dari DynamoConfig (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

ExecutorchConfig

kelas 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 )

Parameter

  • backend (str, opsional, default ke "xnnpack") — Backend ExecuTorch target. Nilai yang didukung:
    • "xnnpack" — inferensi CPU melalui pustaka XNNPACK (default; berjalan di mana saja).
    • "cuda" — Inferensi GPU melalui backend CUDA ExecuTorch.
    • "mlx" — inferensi GPU melalui backend ExecuTorch MLX pada Apple Silicon.
  • alloc_graph_input (bool, opsional, default True) — Apakah pass perencanaan memori mencadangkan memori arena untuk input grafik. Ketika False, runtime menggunakan buffer input yang disediakan pemanggil secara langsung alih-alih menyalinnya ke arena — sehingga USER_INPUT_MUTATION in-place (misalnya penulisan StaticCache) akan terjadi pada tensor pemanggil, bukan pada salinan arena.
  • alloc_graph_output (bool, opsional, default True) — Apakah pass perencanaan memori mencadangkan memori arena untuk output graf. Jika False, pemanggil harus mengikat buffer output pada runtime (Method::set_output_data_ptr); mengikat output ke buffer input yang dimodifikasi menghindari roundtrip copy-out.
  • alloc_mutable_buffers (bool, opsional, default True) — Apakah pass perencanaan memori mencadangkan memori arena untuk buffer mutable (state yang berada di model). Diteruskan ke MemoryPlanningPass.

Kelas konfigurasi untuk mengekspor model ke format ExecuTorch.

Mewarisi semua field dari DynamoConfig (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

OpenVINOConfig

kelas 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 )

Parameter

  • output_path (str atau PathLike, opsional) — Jalur keluaran untuk file .xml (file .bin yang sesuai ditulis berdampingan). Ketika None (default), model yang dikonversi disimpan di memori sebagai openvino.Model.
  • compress_to_fp16 (bool, opsional, default True) — Kompres bobot floating-point ke FP16 saat menyimpan — mengurangi ukuran di disk menjadi setengahnya dengan dampak akurasi yang dapat diabaikan pada sebagian besar model. Hanya diterapkan ketika output_path disetel.
  • 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.

Kelas konfigurasi untuk mengekspor model ke OpenVINO IR melalui openvino.convert_model.

Mewarisi semua field dari [DynamoConfig] (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

Kuantizer

kelas transformers.exporters.ExportQuantizer

< >

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

Parameter

  • calibration_dataset (Iterable[dict], opsional) — Dict input yang digunakan kuantizer untuk kalibrasi: sebuah list, atau DataLoader yang batch-nya dicollate menjadi input model. Untuk ~HfExporter.export_for_generation, ini adalah kwargs generate, yang ditangkap ke dalam set kalibrasi per komponen. Ketika None, kuantizer yang membutuhkan data akan melakukan kalibrasi pada input sampel dari ekspor itu sendiri, dengan peringatan.

Kelas dasar untuk kuantizer pasca-pelatihan yang diterapkan selama ekspor.

Quantizer menyatakan format ekspor yang didukungnya dan paket yang dibutuhkan (dengan versi yang diujinya, seperti pada exporter) serta apakah ia mengkuantisasi graf FX torch.export sebelum konversi apa pun (sehingga setiap backend mengambil hasilnya) atau model yang dikonversi oleh backend (onnx_ir.Model, openvino.Model). Exporter memvalidasinya terhadap ekspor di awal, lalu memanggil ~ExportQuantizer.quantize dengan model tersebut dan input sampel dari ekspor. Turunkan kelas ini dan implementasikan quantize untuk menambahkan metode kuantisasi baru; CalibrationSet memetakan sampel kalibrasi ke input model itu sendiri.

quantize

< >

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

Kuantisasi model (graf FX jika quantizes_fx_graph, selain itu model backend) dan kembalikan hasilnya, dikalibrasi pada calibration_dataset, atau pada sample_inputs dari ekspor jika tidak ada.

validate_environment

< >

( export_format: ExportFormat )

Membuat error jika kuantizer ini tidak dapat berjalan pada ekspor export_format, atau jika paket yang dibutuhkan tidak ada atau terlalu lama; memberikan peringatan jika salah satu berbeda dari versi yang diuji.

with_calibration

< >

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

Salinan kuantizer ini yang melakukan kalibrasi pada calibration_dataset.

kelas transformers.exporters.quantizers.CalibrationSet

< >

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

Tampilan yang dapat diiterasi ulang dari sampel kalibrasi sebagai input model.

Contoh-contoh tersebut adalah calibration_dataset dari kuantizer, atau sample_inputs milik ekspor itu sendiri (dengan peringatan, sekali mereka dibaca) jika tidak ada. Mereka dapat berupa pemetaan apa pun, seperti BatchEncoding dari tokenizer. transform memetakan setiap contoh forward-kwarg menjadi apa yang diterima model terkuantisasi (kwargs yang ditelusuri, umpan ONNX, umpan port OpenVINO), secara malas, satu contoh pada satu waktu, pada setiap pass.

kelas transformers.exporters.PT2EQuantizer

< >

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

Parameter

  • quantizer (torchao.quantization.pt2e.quantizer.Quantizer) — Quantizer PT2E yang mengannotasi graf. Operasi quantize/dequantize-nya harus didukung oleh backend target: X86InductorQuantizer untuk inductor, ONNX (QDQ) atau OpenVINO, XNNPACKQuantizer untuk ExecuTorch.
  • calibration_dataset (Iterable[dict], opsional) — Dict input yang digunakan observer untuk kalibrasi (lihat ExportQuantizer), satu forward per item. Untuk melakukan kalibrasi pada batch, berikan DataLoader yang menggabungkan sampel menjadi dict input berbatch, bukan daftar sampel tunggal.

Kuantisasi graf FX dengan kuantisasi PyTorch 2 Export (PT2E): prepare_pt2e menyisipkan observer, set kalibrasi menggerakkan observer tersebut, dan convert_pt2e menggantinya dengan op kuantisasi/dekuantisasi. Berfungsi dengan setiap backend ekspor.

Contoh:

>>> 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))

kelas transformers.exporters.OnnxRuntimeQuantizer

< >

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

Kuantisasi model ONNX yang telah dikonversi dengan alat bawaan ONNX Runtime (onnxruntime.quantization): quantize_static dengan OnnxRuntimeStaticConfig (default), atau quantize_dynamic dengan OnnxRuntimeDynamicConfig.

Contoh:

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

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

kelas 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 )

Argumen dari onnxruntime.quantization.quantize_static: aktivasi dan bobot int8 (QDQ secara default), dikalibrasi pada calibration_dataset kuantizer. Bidang yang dibiarkan None mempertahankan default ONNX Runtime. Lihat quantize_static untuk masing-masing.

kelas 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 )

Argumen dari onnxruntime.quantization.quantize_dynamic: bobot int8, aktivasi dikuantisasi saat runtime, tanpa kalibrasi. Bidang yang dibiarkan None mempertahankan default ONNX Runtime. Lihat quantize_dynamic untuk masing-masing.

kelas transformers.exporters.NNCFOpenVINOQuantizer

< >

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

Kuantisasi model OpenVINO yang telah dikonversi dengan NNCF: nncf.quantize dengan NNCFQuantizationConfig (default), atau nncf.compress_weights dengan NNCFWeightCompressionConfig.

Contoh:

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

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

kelas transformers.exporters.NNCFOnnxQuantizer

< >

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

Kuantisasi model ONNX yang telah dikonversi dengan NNCF melalui backend ONNX-nya: nncf.quantize dengan NNCFQuantizationConfig (default, int8 QDQ), atau nncf.compress_weights dengan NNCFWeightCompressionConfig (int4 sebagai MatMulNBits dari ONNX Runtime).

Contoh:

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

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

kelas transformers.exporters.NNCFTorchFXQuantizer

< >

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

Kuantisasi graf FX torch.export dengan NNCF melalui backend TorchFX-nya: nncf.quantize dengan NNCFQuantizationConfig (default, ops quantize/dequantize), atau nncf.compress_weights dengan NNCFWeightCompressionConfig. Seperti PT2EQuantizer, ini berjalan sebelum konversi apa pun, sehingga setiap backend mengambil hasilnya. ExecuTorch hanya menurunkan hasil weight-only: XNNPACK tidak mendelegasikan ops quantize/dequantize, dan ExecuTorch tidak memiliki kernel untuk mereka.

Contoh:

>>> from transformers.exporters import DynamoConfig, NNCFTorchFXQuantizer

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

kelas 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 )

Argumen dari nncf.quantize: aktivasi dan bobot int8, dikalibrasi pada calibration_dataset kuantizer. Bidang yang dibiarkan None mempertahankan default NNCF, kecuali model_type, yang defaultnya adalah nncf.ModelType.TRANSFORMER. Lihat nncf.quantize untuk masing-masing.

kelas 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 )

Argumen dari nncf.compress_weights: int8 atau int4 hanya-berat, dengan metode yang sadar data (AWQ, estimasi skala, GPTQ) untuk mode int4. Mode int8 bebas data; yang lain melakukan kalibrasi pada calibration_dataset kuantizer. gptq dan lora_correction hanya untuk OpenVINO. Bidang yang dibiarkan None mempertahankan default NNCF. Lihat nncf.compress_weights untuk masing-masing.

Utilitas

Fungsi tingkat rendah yang menggerakkan export_for_generation, berguna ketika Anda perlu melakukan intervensi antara dekomposisi model dan ekspor setiap komponen.

transformers.exporters.utils.get_leaf_tensors

< >

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

Parameter

  • obj (Any) — Tensor, dataclass, dict, list, tuple, atau penelannya.

Mengembalikan

dict[str, torch.Tensor]

Pemetaan datar dari string jalur bertitik ke tensor.

Ambil semua tensor daun secara rekursif dari struktur yang mungkin bersarang.

transformers.exporters.utils.prepare_for_export

< >

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

Konfigurasi model dan input untuk ekspor. Mengubah model dan inputs secara langsung, mengembalikan (model, inputs, output_flags) di mana output_flags menyimpan nilai yang diambil dari inputs untuk use_cache, return_dict, dll. (untuk diterapkan secara reversibel ke model.config oleh patch_model_config selama trace).

  • Menghapus input label (labels, future_values) — perhitungan loss tidak didukung.
  • Mengeluarkan bendera output (use_cache, return_dict, …) dari inputs agar tidak muncul sebagai kwargs yang ditelusuri; nilai-nilai tersebut dikembalikan agar blok trace dapat menerapkannya ke model.config.
  • Menghitung sebelumnya kwargs visi/audio yang bergantung pada data yang didaftarkan melalui @register_export_input_preparer dan menuliskannya ke dalam inputs.
  • Mengkast tensor input agar sesuai dengan dtype / device model.

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]]

Mengembalikan

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

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

Jalankan model.generate() dan tangkap input prefill dan decode.

Menggunakan mekanisme generasi penuh sehingga setiap arsitektur (decoder-only, SSM, encoder-decoder, multi-modal, …) mendapatkan input yang benar tanpa perlu mengimplementasikan ulang loop.

generation_config diteruskan ke generate() (defaultnya adalah milik model itu sendiri), sehingga input yang ditangkap menggunakan cache apa pun yang akan dibangun oleh generate(). Berikan satu dengan cache_implementation="static" dan max_cache_len=N untuk menangkap cache berukuran statis pada input decode — dasar untuk ekspor cache statis. max_cache_len menentukan ukuran cache secara independen dari penangkapan, sehingga decode yang diekspor menerima cache [..., N, ...] yang tetap alih-alih yang terus bertambah.

Ketika multi_token_decode, komponen decode ditangkap sebagai decode multi-token — dua langkah decode berurutan yang digabungkan (lihat _merge_decode_calls) sehingga sumbu query-sequence-nya tetap simbolik (decode single-token akan menspesialisasikan sumbu tersebut menjadi 1). Komponen ini kemudian menangani baik satu token (dekoding biasa) maupun banyak token (kelanjutan-dari-masa-lalu, atau prefill biasa jika cache kosong). Sebaliknya, decode adalah decode single-token klasik.

transformers.exporters.utils.decompose_multimodal

< >

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

Mengembalikan

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

Satu entri name: (module, inputs) per submodul yang terdeteksi (encoder gambar/audio, projector, model bahasa, lm_head).

Membuang

ValueError

  • ValueError — jika tidak ada submodul multi-modal yang dikenal ditemukan pada model.

Ambil input untuk setiap submodul multi-modal melalui satu jalur maju (forward pass).

Mendeteksi semua submodul multi-modal yang dikenal berdasarkan nama atribut (vision tower, projector, language model, lm_head, …) dan menangkap kwargs forward mereka selama satu panggilan model(**inputs).

Setiap submodul dikembalikan sebagai entri name: (module, inputs) terpisah untuk ekspor independen. Langkah penggabungan token (misalnya masked_scatter untuk model multi-modal) sengaja dibiarkan di luar grafik yang diekspor — tanggung jawab pemanggil untuk merakit inputs_embeds dari keluaran encoder sebelum menjalankan decoder.

transformers.exporters.utils.decompose_for_generation

< >

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

Parameter

  • model — Model generatif. Harus mendukung model.generate(**inputs).
  • inputs — Generate kwargs — apa yang akan Anda lewati ke model.generate(**inputs).
  • generation_config — GenerationConfig opsional yang diteruskan ke generate() selama capture. Berikan satu dengan cache_implementation="static" + max_cache_len=N untuk mengekspor terhadap cache berukuran statis (lihat decompose_prefill_decode).
  • multi_token_decode — Ketika True, tangkap komponen decode sebagai multi-token decode (sumbu urutan query dinamis: beberapa token sekaligus — kelanjutan-dari-masa-lalu, atau prefill biasa ketika cache kosong); decode single-token tidak bisa tetap dinamis (lihat decompose_prefill_decode).

Mengembalikan

`{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.

Uraikan model generatif menjadi pasangan (model, forward_inputs) yang dapat diekspor secara independen.

Menjalankan decompose_prefill_decode untuk menangkap kwargs forward prefill dan decode dari model.generate(**inputs, max_new_tokens=2) yang sebenarnya. Jika prefill bersifat multi-modal (sesuai is_multimodal), maka dipecah lebih lanjut menjadi satu entri per submodul (vision/audio encoder, projector, language model, lm_head) melalui decompose_multimodal.

transformers.exporters.utils.is_multimodal

< >

( model: PreTrainedModel | torch.nn.Module )

Mengembalikan True jika model bersifat multi-modal dengan encoder modal dan model bahasa.

Model yang bukan PreTrainedModel (misalnya nn.Module polos) tidak memiliki accessor get_encoder/get_decoder yang kanonik dan secara trivial bukan multi-modal, sehingga langsung mengembalikan False.

Update on GitHub