Transformers documentation
Ekspor
Ekspor
Backend ekspor baru dapat ditambahkan ke Transformers dengan membuat subclass dari HfExporter dan mendaftarkannya menggunakan register_backend().
Pelajari cara menggunakan exporter bawaan dalam panduan Exporters.
AutoHfExporter
Kelas Auto-HF exporter yang menangani instansiasi otomatis ke HfExporter yang tepat berdasarkan ExportConfig.
AutoExportConfig
Kelas konfigurasi ekspor Auto-HF yang menangani penugasan otomatis ke konfigurasi ekspor yang benar berdasarkan konfigurasi ekspor yang disimpan dalam kamus.
register_backend
transformers.exporters.register_backend
< source >( exporter: type[HfExporter]runner: type[ModelRunner] | None = None )
Daftarkan sebuah exporter, beserta config_class-nya, di bawah export_format-nya, dan runner yang menjalankan ekspor-nya,
sehingga kelas auto dapat menemukannya.
HfExporter
Kelas basis abstrak untuk semua pengekspor Transformers.
Untuk menambahkan backend, turunkan kelas dan implementasikan ~HfExporter.export_program untuk menelusuri satu graf, serta ~HfExporter.save_program / ~HfExporter.load_program untuk menulis dan membacanya kembali. Fungsi publik ~HfExporter.export dan ~HfExporter.export_for_generation membangun ExportedModel di atas keduanya.
ekspor
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Mengembalikan
ExportedModel
Satu komponen "model"; program backend adalah .program, dan
save_pretrained menuliskannya bersama metadata dan konfigurasi model.
Ekspor model sebagai satu graf.
Menerima kwargs forward yang sama seperti ~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
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
ExportedModel
Satu ExportedComponent per tahap, dengan kunci yang sama seperti
decompose_for_generation().
Uraikan model generatif dan ekspor setiap komponen secara independen.
Wrapper tipis di sekitar decompose_for_generation() yang memanggil ~HfExporter.export_program 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.
export_program
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin ) → tuple[Any, ExportMetadata]
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.
Mengembalikan
tuple[Any, ExportMetadata]
Objek program backend (ExportedProgram, onnx_ir.Model,
ExecutorchProgramManager, openvino.Model) dan metadata yang dicatat saat pelacakan
(build_export_metadata()), dikembalikan secara terpisah karena hanya beberapa format yang
dapat membawanya.
Lacak satu graf. Titik ekstensi backend, berpasangan dengan ~HfExporter.save_program.
Baca kembali program yang ditulis oleh ~HfExporter.save_program. Hasilnya dapat berbeda dari yang dikembalikan oleh ~HfExporter.export_program: sebuah Program runtime untuk ExecuTorch, di mana ExecutorchProgramManager tidak dapat dibangun ulang dari file tersebut.
File yang ditulis oleh ~HfExporter.save_program untuk program yang disimpan sebagai filename: file itu sendiri, plus
apa pun yang dipertahankan oleh format di sampingnya (bobot, data eksternal).
Tulis satu program yang dikembalikan oleh ~HfExporter.export_program ke path, dalam format file backend.
Periksa apakah required_packages terpasang dan beri peringatan jika ada perbedaan versi dari tested_versions.
ExportedModel
kelas transformers.exporters.ExportedModel
< source >( components: dict[str, ExportedComponent]export_format: ExportFormat | strconfig: PreTrainedConfig | None = Nonegeneration_config: GenerationConfig | None = None )
Model yang diekspor: grafnya (components, {name: ExportedComponent}) dan konfigurasi yang menjadi acuan pelacakannya, dipanggil dengan cara yang sama seperti memanggil model asalnya.
~HfExporter.export menghasilkan satu komponen "model", yang programnya adalah .program; ~HfExporter.export_for_generation menghasilkan satu komponen per tahap generation.
>>> exported = OnnxExporter().export(model, inputs, OnnxConfig(dynamic=True))
>>> exported.save_pretrained("exported")
>>> outputs = ExportedModel.from_pretrained("exported", device="cuda")(**inputs)
>>> outputs.last_hidden_stateJalankan ekspor single-graph, mengembalikan apa yang dikembalikan oleh model sumber. Kwargs yang tidak ditelusuri saat ekspor akan dibuang, sehingga seluruh output dari processor dapat diteruskan. share_inputs dan share_outputs diteruskan ke runner (lihat ModelRunner.__call__): dengan share_outputs, output valid hingga pemanggilan berikutnya.
Program backend itu sendiri, untuk ekspor grafik tunggal.
Muat program pada runtime backend mereka, di device (default backend saat None). runner_kwargs diteruskan ke runner backend: providers dan session_options untuk ONNX Runtime, config (properti kompilasi) dan torch_threads (bagikan CPU dengan kerja torch di sekitar model) untuk OpenVINO.
save_pretrained
< source >( save_directory: str | Pathpush_to_hub: bool = False**kwargs )
Parameter
- save_directory (
stratauPath) — Direktori untuk ditulis, dibuat jika belum ada. - push_to_hub (
bool, opsional, defaultFalse) — Apakah file yang disimpan juga akan diunggah ke Hub, kerepo_id(defaultnya adalah namasave_directorydi namespace Anda). - kwargs (
dict[str, Any], opsional) — Diteruskan ke unggahan Hub:repo_id,commit_message,token,private, …
Tulis komponen (satu file masing-masing), konfigurasi, dan manifest yang menyebutkan file setiap komponen serta metadata yang dicatat saat pelacakan. ~ExportedModel.from_pretrained memuatnya kembali.
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 )
Parameter
- pretrained_model_name_or_path (
stratauPath) — Direktori lokal, atau id repo Hub. Dari Hub, hanya file yang namanya tercantum dalam manifest yang diunduh, sehingga hasil ekspor dapat berada berdampingan dengan bobot model itu sendiri. - device (
stratautorch.device, opsional) — Di mana untuk menjalankannya (default backend saatNone). - cache_dir (
Union[str, os.PathLike], opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh harus di-cache jika cache standar tidak digunakan. - force_download (
bool, opsional, defaultFalse) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada. - local_files_only (
bool, opsional, defaultnyaFalse) — Apakah hanya melihat file lokal (yaitu, tidak mencoba mengunduh model). - token (
strataubool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, atau tidak ditentukan, akan menggunakan token yang dihasilkan saat menjalankanhf auth login(disimpan di~/.huggingface). - revision (
str, opsional, default ke"main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, atau commit id, karena kami menggunakan sistem berbasis git untuk menyimpan model dan artefak lainnya di huggingface.co, jadirevisionbisa berupa identifikasi apa pun yang diizinkan oleh git.Untuk menguji pull request yang Anda buat di Hub, Anda dapat meneruskan
revision="refs/pr/<pr_number>". - subfolder (
str, opsional, defaultnya"") — Jika file yang relevan berada di dalam subfolder dari repo model di huggingface.co, Anda dapat menentukan nama folder di sini. - trust_remote_code (
bool, opsional, defaultFalse) — Apakah akan memuat konfigurasi model yang kodenya berada di repo-nya, seperti pada from_pretrained(). - runner_kwargs (opsional) —
Opsi runner backend, seperti pada
~ExportedModel.to:providersdansession_optionsuntuk ONNX Runtime,configdantorch_threadsuntuk OpenVINO.
Muat apa yang ditulis oleh ~ExportedModel.save_pretrained: setiap komponen melalui ~HfExporter.load_program dari backend-nya, beserta metadatanya, dan konfigurasi yang disimpan di sebelahnya. Program-program dimuat langsung pada runtime backend-nya, siap untuk dijalankan.
ExportedComponent
Satu graf yang diekspor: program backend, dan apa yang dicatat oleh exporter tentang program tersebut.
ExportMetadata
kelas 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> )
Apa yang dicatat oleh exporter tentang satu graf (build_export_metadata()).
Bangun metadata dari dict yang disimpan, lewati field yang tidak dimiliki kelas ini (ditambahkan oleh versi yang lebih baru).
ModelRunner
Menjalankan satu program yang diekspor pada backend-nya: runner(**kwargs) mengembalikan apa yang dikembalikan oleh model sumber.
Pelaksana untuk program sebagai ekspor mengembalikannya atau ~HfExporter.load_program membacanya kembali, pada device (default backend ketika None).
Bangun ulang output model dari output datar program (yang berada di akhir) dan konstanta yang direkam.
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(**inputs)
>>> exported.save_pretrained("exported") # `model.pt2`, its metadata and the model configekspor
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Mengembalikan
ExportedModel
Satu komponen "model"; program backend adalah .program, dan
save_pretrained menuliskannya bersama metadata dan konfigurasi model.
Ekspor model sebagai satu graf.
Menerima kwargs forward yang sama seperti ~HfExporter.export_program.
OnnxExporter
Exporter yang mengonversi PreTrainedModel menjadi graf ONNX (sebuah onnx_ir.Model).
Contoh:
>>> 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 configekspor
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Mengembalikan
ExportedModel
Satu komponen "model"; program backend adalah .program, dan
save_pretrained menuliskannya bersama metadata dan konfigurasi model.
Ekspor model sebagai satu graf.
Menerima kwargs forward yang sama seperti ~HfExporter.export_program.
ExecutorchExporter
Exporter yang mengonversi PreTrainedModel menjadi ExecutorchProgramManager ExecuTorch.
Contoh:
>>> 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 configekspor
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Mengembalikan
ExportedModel
Satu komponen "model"; program backend adalah .program, dan
save_pretrained menuliskannya bersama metadata dan konfigurasi model.
Ekspor model sebagai satu graf.
Menerima kwargs forward yang sama seperti ~HfExporter.export_program.
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 = Noneopset_version: int | None = Noneoptimize: bool = Trueort_fusions: Literal['cpu', 'cuda', 'webgpu', 'dml'] | None = None )
Parameter
- opset_version (
int, opsional) — Versi opset ONNX yang ditargetkan. Secara default menggunakan opset terbaru yang didukung oleh versionnxscriptyang terinstal. - optimize (
bool, opsional, defaultTrue) — Jalankan jalur optimasionnxscript(constant folding, dead-code elimination, …) pada graf yang diekspor. Nonaktifkan untuk model yang mengalami bug pada optimiseronnxscriptupstream. - ort_fusions (
str, opsional) — Gabungkan graf menjadi ops ONNX Runtime untuk execution provider tempatnya berjalan:"cpu","cuda","webgpu"atau"dml". Graf yang digabungkan hanya berjalan di ONNX Runtime. Memerlukanoptimize=True.
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 = Nonecompress_to_fp16: bool = Falsestateful: bool = True )
Parameter
- compress_to_fp16 (bool, opsional, default False) — Kompres bobot float32 model yang dikonversi menjadi float16, sehingga ukurannya berkurang setengah. Nonaktif secara default karena rentang nilainya lebih sempit.
- 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.
Contoh kalibrasi sebagai kwargs yang ditelusuri, untuk kuantizer FX-graph.
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”<modality>_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.
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.