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 dan mendaftarkannya menggunakan register_backend().

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.

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.

register_backend

transformers.exporters.register_backend

< >

( 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 transformers.exporters.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

< >

( 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

< >

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

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

< >

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

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.

load_program

< >

( path: str | Path )

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.

program_files

< >

( filename: str )

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

save_program

< >

( program: Anypath: str | Path )

Tulis satu program yang dikembalikan oleh ~HfExporter.export_program ke path, dalam format file backend.

validate_environment

< >

( )

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

ExportedModel

kelas transformers.exporters.ExportedModel

< >

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

__call__

< >

( share_inputs: bool = Trueshare_outputs: bool = False**kwargs )

Jalankan 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

< >

( )

Program backend itu sendiri, untuk ekspor grafik tunggal.

ke

< >

( device = None**runner_kwargs )

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

< >

( save_directory: str | Pathpush_to_hub: bool = False**kwargs )

Parameter

  • save_directory (str atau Path) — Direktori untuk ditulis, dibuat jika belum ada.
  • push_to_hub (bool, opsional, default False) — Apakah file yang disimpan juga akan diunggah ke Hub, ke repo_id (defaultnya adalah nama save_directory di 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

< >

( 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 (str atau Path) — 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 (str atau torch.device, opsional) — Di mana untuk menjalankannya (default backend saat None).
  • 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, default False) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada.
  • local_files_only (bool, opsional, defaultnya False) — Apakah hanya melihat file lokal (yaitu, tidak mencoba mengunduh model).
  • token (str atau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. Jika True, atau tidak ditentukan, akan menggunakan token yang dihasilkan saat menjalankan hf 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, jadi revision bisa 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, default False) — 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: providers dan session_options untuk ONNX Runtime, config dan torch_threads untuk 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

kelas transformers.exporters.ExportedComponent

< >

( program: Anymetadata: ExportMetadata )

Satu graf yang diekspor: program backend, dan apa yang dicatat oleh exporter tentang program tersebut.

ExportMetadata

kelas transformers.exporters.ExportMetadata

< >

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

from_dict

< >

( values: Mapping[str, Any] )

Bangun metadata dari dict yang disimpan, lewati field yang tidak dimiliki kelas ini (ditambahkan oleh versi yang lebih baru).

ModelRunner

kelas transformers.exporters.ModelRunner

< >

( metadata: ExportMetadata )

Menjalankan satu program yang diekspor pada backend-nya: runner(**kwargs) mengembalikan apa yang dikembalikan oleh model sumber.

from_program

< >

( program: Anymetadata: ExportMetadatadevice = None )

Pelaksana untuk program sebagai ekspor mengembalikannya atau ~HfExporter.load_program membacanya kembali, pada device (default backend ketika None).

unflatten

< >

( outputs: list )

Bangun ulang output model dari output datar program (yang berada di akhir) dan konstanta yang direkam.

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(**inputs)
>>> exported.save_pretrained("exported")  # `model.pt2`, its metadata and the model config

ekspor

< >

( 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

kelas transformers.exporters.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 config

ekspor

< >

( 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

kelas transformers.exporters.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 config

ekspor

< >

( 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

< >

( 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 = 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 versi onnxscript yang terinstal.
  • 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.
  • 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. Memerlukan optimize=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

< >

( 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 = 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_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.

traced_calibration

< >

( sample_inputs: dict[str, Any] )

Contoh kalibrasi sebagai kwargs yang ditelusuri, untuk kuantizer FX-graph.

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

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