Transformers documentation
Ekspor
Ekspor
Backend ekspor baru dapat ditambahkan ke Transformers dengan membuat subclass dari HfExporter.
Pelajari cara menggunakan exporter bawaan dalam panduan Exporters.
AutoHfExporter
Kelas Auto-HF exporter yang menangani instansiasi otomatis ke HfExporter yang tepat berdasarkan ExportConfig.
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).
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 konfigurasi ekspor Auto-HF yang menangani penugasan otomatis ke konfigurasi ekspor yang benar berdasarkan konfigurasi ekspor yang disimpan dalam kamus.
HfExporter
Kelas basis abstrak untuk semua pengekspor Transformers.
Subclass dan implementasikan ~HfExporter.export untuk menambahkan backend ekspor baru.
ekspor
< source >( 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 kemodel(**sample_inputs). Ini digunakan langsung sebagai input contoh selama tracing. Untuk ekspor langkah dekode autoregresif, artinya Anda perlu menyertakanpast_key_values,cache_position, dll. Jika Anda hanya memiliki input bergaya generation, gunakan~HfExporter.export_for_generationsebagai gantinya — ini akan menjalankanmodel.generateuntuk 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
< source >( 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 kemodel.generate(**sample_inputs)(biasanyainput_ids+attention_mask, ditambah input modalitas apa pun sepertipixel_values/input_featuresuntuk model multi-modal). Per-stage forward kwargs ditangkap secara internal. - config (
ExportConfigMixinataudict[str, ExportConfigMixin]) — Konfigurasi spesifik backend. Teruskan satu konfigurasi untuk diterapkan ke setiap komponen, ataudictyang 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 dengancache_implementation="static"untuk mengekspor terhadapStaticCacheberukuran tetap. - multi_token_decode (
bool, opsional, defaultFalse) — Apakah komponendecodememproses 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.
Periksa apakah required_packages terpasang dan beri peringatan jika ada perbedaan versi dari tested_versions.
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
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, Any]config: DynamoConfig | dict[str, Any] )
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 diskekspor
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, Any]config: OnnxConfig | dict[str, Any] )
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
< source >( 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
< 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 )
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 dengandynamic=True/Dim.AUTO, di manatorch.exportmenyimpulkan 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
< 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 = 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 (
stratauPathLike, opsional) — Jalur keluaran untuk file.onnx. KetikaNone(default), model yang diekspor disimpan di memori sebagaiONNXProgramdan tidak ditulis ke disk. - opset_version (
int, opsional) — Versi opset ONNX yang ditargetkan. Secara default menggunakan opset terbaru yang didukung oleh versionnxscriptyang terinstal. - external_data (
bool, opsional, defaultTrue) — Simpan tensor bobot besar dalam file sidecar.onnx_dataterpisah daripada menimbulkannya di dalam protobuf. Diperlukan untuk model yang bobotnya melebihi batas protobuf 2 GB. - optimize (
bool, opsional, defaultTrue) — Jalankan jalur optimasionnxscript(constant folding, dead-code elimination, …) pada graf yang diekspor. Nonaktifkan untuk model yang mengalami bug pada optimiseronnxscriptupstream. - export_params (
bool, opsional, defaultTrue) — Sematkan bobot model ke dalam graf ONNX. Atur keFalseuntuk mengekspor graf tanpa bobot (bobot harus disediakan saat runtime). - keep_initializers_as_inputs (
bool, opsional, defaultFalse) — 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
< 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 )
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, defaultTrue) — Apakah pass perencanaan memori mencadangkan memori arena untuk input grafik. KetikaFalse, runtime menggunakan buffer input yang disediakan pemanggil secara langsung alih-alih menyalinnya ke arena — sehinggaUSER_INPUT_MUTATIONin-place (misalnya penulisanStaticCache) akan terjadi pada tensor pemanggil, bukan pada salinan arena. - alloc_graph_output (
bool, opsional, defaultTrue) — Apakah pass perencanaan memori mencadangkan memori arena untuk output graf. JikaFalse, 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, defaultTrue) — Apakah pass perencanaan memori mencadangkan memori arena untuk buffer mutable (state yang berada di model). Diteruskan keMemoryPlanningPass.
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
< 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 = 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_pathdisetel. - 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.
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
< source >( calibration_dataset: Iterable[dict[str, Any]] | None = None )
Parameter
- calibration_dataset (
Iterable[dict], opsional) — Dict input yang digunakan kuantizer untuk kalibrasi: sebuah list, atauDataLoaderyang batch-nya dicollate menjadi input model. Untuk~HfExporter.export_for_generation, ini adalah kwargs generate, yang ditangkap ke dalam set kalibrasi per komponen. KetikaNone, 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.
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.
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.
Salinan kuantizer ini yang melakukan kalibrasi pada calibration_dataset.
kelas transformers.exporters.quantizers.CalibrationSet
< source >( 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
< source >( 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:X86InductorQuantizeruntuk inductor, ONNX (QDQ) atau OpenVINO,XNNPACKQuantizeruntuk ExecuTorch. - calibration_dataset (
Iterable[dict], opsional) — Dict input yang digunakan observer untuk kalibrasi (lihatExportQuantizer), satu forward per item. Untuk melakukan kalibrasi pada batch, berikanDataLoaderyang 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
< source >( 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
< 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 )
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
< 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 )
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
< source >( 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
< source >( 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
< source >( 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.
kelas 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 )
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
< 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 )
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
< source >( obj: Any ) → dict[str, torch.Tensor]
Ambil semua tensor daun secara rekursif dari struktur yang mungkin bersarang.
transformers.exporters.utils.prepare_for_export
< source >( 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, …) dariinputsagar tidak muncul sebagai kwargs yang ditelusuri; nilai-nilai tersebut dikembalikan agar blok trace dapat menerapkannya kemodel.config. - Menghitung sebelumnya kwargs visi/audio yang bergantung pada data yang didaftarkan melalui
@register_export_input_preparerdan menuliskannya ke dalaminputs. - Mengkast tensor input agar sesuai dengan
dtype/devicemodel.
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]]
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
< source >( 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
< source >( 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 —
GenerationConfigopsional yang diteruskan kegenerate()selama capture. Berikan satu dengancache_implementation="static"+max_cache_len=Nuntuk mengekspor terhadap cache berukuran statis (lihatdecompose_prefill_decode). - multi_token_decode — Ketika
True, tangkap komponendecodesebagai 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 (lihatdecompose_prefill_decode).
Mengembalikan
`{component_name
(submodel, forward_inputs)}. Keys are “prefill”/“decode”for plain generative models and”/“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.
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.