Transformers documentation
Dışa Aktarıcılar
Dışa Aktarıcılar
Transformers'a yeni dışa aktarma arka uçları, HfExporter sınıfından türetip register_backend() ile kaydederek eklenebilir.
Exporters kılavuzunda yerleşik dışa aktarıcıları nasıl kullanacağınızı öğrenin.
AutoHfExporter
ExportConfig verildiğinde doğru HfExporter sınıfını otomatik olarak örneklemekten sorumlu olan Auto-Hf dışa aktarıcı sınıfı.
AutoExportConfig
Bir sözlükte saklanan bir dışa aktarma yapılandırması verildiğinde doğru dışa aktarma yapılandırmasına otomatik olarak yönlendirmeyi üstlenen Auto-HF dışa aktarma yapılandırma sınıfı.
register_backend
transformers.exporters.register_backend
< source >( exporter: type[HfExporter]runner: type[ModelRunner] | None = None )
Bir dışa aktarıcıyı, config_class'ı ile birlikte, export_format'ı altında ve dışa aktarmalarını çalıştıran runner ile birlikte kaydedin, böylece otomatik sınıflar bunları bulabilsin.
HfExporter
Tüm Transformers dışa aktarıcıları için soyut temel sınıf.
Bir backend eklemek için ~HfExporter.export_program yöntemini alt sınıflandırıp tek bir grafiği izlemek için ve ~HfExporter.save_program / ~HfExporter.load_program yöntemlerini yazmak ve geri okumak için uygulayın. Halka açık ~HfExporter.export ve ~HfExporter.export_for_generation yöntemleri, bunların üzerine bir ExportedModel oluşturur.
export
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Dönüş değeri
ExportedModel
Tek bir "model" bileşeni; arka planın programı .program'dır ve
save_pretrained, bu programı, ilgili meta verileri ve model yapılandırmasını yazar.
Modeli tek bir grafik olarak dışa aktarın.
~HfExporter.export_program ile aynı forward kwargs'larını alır.
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
Parametreler
- model (PreTrainedModel) —
Dışa aktarılacak üretken model.
model.generate(**sample_inputs)desteklemelidir. - sample_inputs (
dict[str, torch.Tensor | Cache]) — Generate kwargs —model.generate(**sample_inputs)çağrısına geçireceğiniz argümanlar (genellikleinput_ids+attention_mask, çok modallı modeller içinpixel_values/input_featuresgibi modallık girdileri). Aşama bazlı forward kwargs içsel olarak yakalanır. - config (
ExportConfigMixinveyadict[str, ExportConfigMixin]) — Arka uç (backend) özel yapılandırması. Her bileşene uygulanacak tek bir yapılandırma geçin veya bileşen adına göre anahtarlanmış birdict(ör."image_encoder","language_model","lm_head","decode") ile bileşen bazında geçersiz kılın — tüm bileşen adları dict içinde mevcut olmalıdır. - generation_config (GenerationConfig, isteğe bağlı) —
generate()yakalamasına iletilir (varsayılan olarak modelin kendi ayarları kullanılır). Sabit boyutlu birStaticCacheile dışa aktarmak içincache_implementation="static"içeren bir yapılandırma geçin. - multi_token_decode (
bool, isteğe bağlı, varsayılanFalse) —decodebileşeninin birden fazla sorgu tokenini aynı anda işleyip işlemediğini belirtir — dinamik sorgu ekseni (boş önbellekte prefill, aksi halde geçmişten devam) — klasik tek token adımıyla karşılaştırıldığında (bkz. decompose_for_generation()). Yalnızca dinamik şekilli bir dışa aktarmada (config.dynamic=True) dinamik kalır.
Dönüş değeri
ExportedModel
Aşama başına bir ExportedComponent, anahtarları
decompose_for_generation() ile aynı.
Üretken bir modeli parçalara ayırın ve her bileşeni bağımsız olarak dışa aktarın.
decompose_for_generation() etrafındaki ince sarmalayıcı, döndürülen her (submodel, forward_inputs) çifti üzerinde ~HfExporter.export_program çağrısı yapar. Ara (submodel, forward_inputs) çiftlerine (doğrulama, özel girdiler, bir aşamayı atlama, …) ihtiyacınız varsa, decompose_for_generation() işlevini doğrudan çağırın.
export_program
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin ) → tuple[Any, ExportMetadata]
Parametreler
- model (PreTrainedModel) — Dışa aktarılacak model.
- sample_inputs (
dict[str, torch.Tensor | Cache]) — Forward kwargs —model(**sample_inputs)çağrısına geçireceğiniz argümanlar. Bunlar, izleme sırasında örnek girişler olarak doğrudan kullanılır. Otoregresif bir çözümleme adımı dışa aktarımı için bu,past_key_values,cache_positiongibi alanları dahil etmeniz gerektiği anlamına gelir. Yalnızca üretim tarzı girişleriniz varsa bunun yerine~HfExporter.export_for_generationkullanın — bu yöntem sizin içinmodel.generateçalıştırır ve her aşamayı dışa aktarır. - config (
ExportConfigMixin) — Arka uçla ilgili yapılandırma.
Dönüş değeri
tuple[Any, ExportMetadata]
Arka planın program nesnesi (ExportedProgram, onnx_ir.Model,
ExecutorchProgramManager, openvino.Model) ve izleme sırasında kaydedilen
meta veriler (build_export_metadata()), yalnızca bazı formatların bu verileri
taşıyabilmesi nedeniyle ayrı olarak döndürülür.
Tek bir grafik izleyin. ~HfExporter.save_program ile eşleştirilen arka uç genişletme noktası.
~HfExporter.save_program tarafından yazılan bir programı geri okur. ~HfExporter.export_program tarafından döndürülen içerikten farklı olabilir: ExecuTorch için çalışma zamanı Program, bunun ExecutorchProgramManager'ı dosyadan yeniden oluşturulamaz.
~HfExporter.save_program tarafından filename olarak kaydedilen bir program için yazılan dosyalar: dosyanın kendisi ve formatın yanında tuttuğu diğer dosyalar (ağırlıklar, harici veriler).
~HfExporter.export_program tarafından döndürülen tek bir programı, arka planın dosya biçiminde path konumuna yazın.
required_packages'ın yüklendiğini kontrol edin ve tested_versions'ten sürüm sapması durumunda uyarı verin.
ExportedModel
sınıf transformers.exporters.ExportedModel
< source >( components: dict[str, ExportedComponent]export_format: ExportFormat | strconfig: PreTrainedConfig | None = Nonegeneration_config: GenerationConfig | None = None )
Dışa aktarılmış bir model: grafikleri (components, {name: ExportedComponent}) ve bunların izlendiği yapılandırmalar, modelin geldiği modelin çağrılma biçiminde adlandırılır.
~HfExporter.export, programı .program olan tek bir "model" bileşeni üretir; ~HfExporter.export_for_generation ise her üretim aşaması için bir bileşen üretir.
>>> exported = OnnxExporter().export(model, inputs, OnnxConfig(dynamic=True))
>>> exported.save_pretrained("exported")
>>> outputs = ExportedModel.from_pretrained("exported", device="cuda")(**inputs)
>>> outputs.last_hidden_stateTek grafik dışa aktarımı çalıştırır ve kaynak modelin döndürdüğü değeri döndürür. Dışa aktarımın izlenmediği kwargs'lar atılır, bu nedenle bir işleyicinin (processor) tüm çıktısı geçirilebilir. share_inputs ve share_outputs çalıştırıcıya (runner) gider (bkz. ModelRunner.__call__): share_outputs ile çıktılar, sonraki çağrıya kadar geçerlidir.
Tek grafik dışa aktarımı için arka planın kendi programı.
Programları, device üzerinde (None ise backend varsayılanı) backend çalışma zamanında yükleyin. runner_kwargs, backend çalıştırıcısına gider: ONNX Runtime için providers ve session_options, OpenVINO için config (derleme özellikleri) ve torch_threads (model etrafındaki torch işleri için CPU'yu bölün).
save_pretrained
< source >( save_directory: str | Pathpush_to_hub: bool = False**kwargs )
Parametreler
- save_directory (
strveyaPath) — Yazılacak dizin, var değilse oluşturulur. - push_to_hub (
bool, isteğe bağlı, varsayılanFalse) — Kaydedilen dosyaların ayrıca Hub'a,repo_idadresine (varsayılan olarak ad alanınızdakisave_directoryadı) yüklenip yüklenmeyeceğini belirtir. - kwargs (
dict[str, Any], isteğe bağlı) — Hub yüklemesine iletilir:repo_id,commit_message,token,private, …
Bileşenleri (her biri ayrı bir dosya olarak), yapılandırmaları ve her bileşenin dosyasını ile izleme sırasında kaydedilen meta verileri adlandıran bir manifest dosyasını yazın. ~ExportedModel.from_pretrained bunları geri yükler.
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 )
Parametreler
- pretrained_model_name_or_path (
strveyaPath) — Yerel bir dizin veya Hub depo kimliği. Hub'dan yalnızca manifestte adı geçen dosyalar indirilir, bu sayede bir dışa aktarma, modelin kendi ağırlıklarının yanında durabilir. - device (
strveyatorch.device, isteğe bağlı) — Nerede çalıştırılacağı (Noneise arka planın varsayılanı). - cache_dir (
Union[str, os.PathLike], isteğe bağlı) — Standart önbellek kullanılmayacaksa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alınacağı dizinin yolu. - force_download (
bool, isteğe bağlı, varsayılanFalse) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar. - local_files_only (
bool, isteğe bağlı, varsayılanFalse) — Sadece yerel dosyalara bakılacak mı (yani modelin indirilmeye çalışılmayacağı). - token (
strveyabool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise veya belirtilmezse,hf auth loginçalıştırıldığında oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - revision (
str, isteğe bağlı, varsayılan olarak"main") — Kullanılacak belirli model sürümü. huggingface.co üzerinde modelleri ve diğer artefaktları depolamak için git tabanlı bir sistem kullandığımız için bir dal adı, etiket adı veya commit kimliği olabilir, bu nedenlerevisiongit tarafından izin verilen herhangi bir tanımlayıcı olabilir.Hub'da oluşturduğunuz bir çekme isteğini test etmek için
revision="refs/pr/<pr_number>"parametresini iletebilirsiniz. - subfolder (
str, isteğe bağlı, varsayılan"") — İlgili dosyalar huggingface.co üzerindeki model deposunun bir alt klasöründe konumlanıyorsa, klasör adını burada belirleyebilirsiniz. - trust_remote_code (
bool, isteğe bağlı, varsayılanFalse) — Kodu deposunda barındırılan bir modelin yapılandırmasının, from_pretrained() durumunda olduğu gibi yüklenip yüklenmeyeceğini belirtir. - runner_kwargs (isteğe bağlı) —
Arka planın çalıştırıcı seçenekleri,
~ExportedModel.toiçin olduğu gibi: ONNX Runtime içinprovidersvesession_options, OpenVINO içinconfigvetorch_threads.
~ExportedModel.save_pretrained'in yazdıklarını yükleyin: her bileşen, kendi metadata'si ve yanlarına kaydedilen yapılandırmalarla birlikte, backend'inin ~HfExporter.load_program metodu üzerinden yüklenir. Programlar, backend'in çalışma zamanında derhal yüklenir ve çalıştırılmaya hazırdır.
ExportedComponent
Dışa aktarılan tek grafik: arka uç programı ve dışa aktarıcının bu program hakkında kaydettiği bilgiler.
ExportMetadata
sınıf 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> )
Dışa aktarıcının bir grafik hakkında kaydettiği bilgiler (build_export_metadata()).
Kaydedilen sözlükten metadata'yı oluşturun, bu sınıfın sahip olmadığı alanları (daha yeni bir sürüm tarafından eklenenler) atlayın.
ModelRunner
Arka uydusunda bir dışa aktarılmış programı çalıştırır: runner(**kwargs), kaynak modelin döndürdüğünü döndürür.
Bir programın dışa aktarımı olarak bir çalıştırıcı, onu döndürür veya ~HfExporter.load_program onu device üzerinde ( None ise arka planın varsayılanı) geri okur.
Programın düz çıktılarını (sonuncu olanlar) ve kaydedilen sabitleri kullanarak modelin çıktılarını yeniden oluşturun.
DynamoExporter
Bir PreTrainedModel'i ExportedProgram'a dönüştüren dışa aktarıcı.
Örnek:
>>> 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 configexport
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Dönüş değeri
ExportedModel
Tek bir "model" bileşeni; arka planın programı .program'dır ve
save_pretrained, bu programı, ilgili meta verileri ve model yapılandırmasını yazar.
Modeli tek bir grafik olarak dışa aktarın.
~HfExporter.export_program ile aynı forward kwargs'larını alır.
OnnxExporter
Bir PreTrainedModel'i ONNX grafiğine (bir onnx_ir.Model) dönüştüren dışa aktarıcı.
Örnek:
>>> 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 configexport
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Dönüş değeri
ExportedModel
Tek bir "model" bileşeni; arka planın programı .program'dır ve
save_pretrained, bu programı, ilgili meta verileri ve model yapılandırmasını yazar.
Modeli tek bir grafik olarak dışa aktarın.
~HfExporter.export_program ile aynı forward kwargs'larını alır.
ExecutorchExporter
Bir PreTrainedModel'i ExecuTorch ExecutorchProgramManager'ine dönüştüren dışa aktarıcı.
Örnek:
>>> 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 configexport
< source >( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, Any] ) → ExportedModel
Dönüş değeri
ExportedModel
Tek bir "model" bileşeni; arka planın programı .program'dır ve
save_pretrained, bu programı, ilgili meta verileri ve model yapılandırmasını yazar.
Modeli tek bir grafik olarak dışa aktarın.
~HfExporter.export_program ile aynı forward kwargs'larını alır.
DynamoConfig
sınıf 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 )
Parametreler
- dynamic (bool, opsiyonel, varsayılan False) — Dinamik (sembolik) şekillerle dışa aktarılacak mı? True olduğunda ve dynamic_shapes ayarlanmadığında, tüm gerginlik boyutları otomatik olarak Dim.AUTO olarak ayarlanır.
- strict (bool, isteğe bağlı, varsayılan False) — torch.export içinde sıkı modun etkinleştirilip etkinleştirilmeyeceğini belirtir. Tam sembolik izlemeyi çalıştırır ve daha fazla hata yakalar, ancak daha yavaştır ve karmaşık modellerde başarısız olma olasılığı daha yüksektir.
- dynamic_shapes (dict[str, Any], isteğe bağlı) — torch.export'a iletilen, girdi başına açık dinamik şekil tanımlamaları. dynamic parametresine göre önceliklidir.
- prefer_deferred_runtime_asserts_over_guards (bool, opsiyonel, varsayılan False) —
True olduğunda, veriye bağımlı şekil korumaları, dışa aktarma sırasında bir korumanın sembolik şekil aralığının tamamında geçerli olmayacağı durumlarda dışa aktarmayı başarısız kılmak yerine, dışa aktarılan grafikte çalışma zamanı assert'leri olarak üretilir. Çoğu transformer LLM, ince taneli
Dim(min=, max=)sınırlarını kullanırken bunun True olarak ayarlanmasını gerektirir.dynamic=True/Dim.AUTOile gerekmez; bu durumdatorch.export, şekil ilişkilerini kullanıcı tarafından belirtilen sınırlara karşı doğrulamak yerine çıkarır. - quantizer ([~exporters.quantizers.ExportQuantizer], opsiyonel) — Dışa aktarma sırasında uygulanan eğitim sonrası nicelleştirme: tüm arka uçlar için FX grafiğinde [~exporters.quantizers.PT2EQuantizer] veya [~exporters.quantizers.NNCFTorchFXQuantizer], dönüştürülmüş ONNX modelinde [~exporters.quantizers.OnnxRuntimeQuantizer] veya dönüştürülmüş OpenVINO / ONNX modelinde [~exporters.quantizers.NNCFOpenVINOQuantizer] / [~exporters.quantizers.NNCFOnnxQuantizer].
torch.export ile modelleri dışa aktarmak için yapılandırma sınıfı.
OnnxConfig
sınıf 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 )
Parametreler
- opset_version (
int, isteğe bağlı) — Hedeflenecek ONNX opset sürümü. Varsayılan olarak, yüklüonnxscriptsürümünün desteklediği en son opset kullanılır. - optimize (
bool, isteğe bağlı, varsayılanTrue) — Dışa aktarılan grafik üzerindeonnxscriptoptimizasyon geçişlerini (sabit katlama, ölü kod eleme, …) çalıştırır. Yalnızcaonnxscriptoptimizasyoncusundaki yukarı akış hatalarına takılan modeller için devre dışı bırakın. - ort_fusions (
str, isteğe bağlı) — Grafiği, çalıştığı execution provider için ONNX Runtime’ın op’larına birleştirir:"cpu","cuda","webgpu"veya"dml". Birleştirilmiş grafik yalnızca ONNX Runtime üzerinde çalışır.optimize=Truegerektirir.
torch.onnx.export üzerinden modelleri ONNX'e dışa aktarmak için yapılandırma sınıfı.
DynamoConfig sınıfından tüm alanları devralır (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).
ExecutorchConfig
sınıf 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 )
Parametreler
- backend (
str, isteğe bağlı, varsayılan olarak"xnnpack") — Hedef ExecuTorch arka ucu. Desteklenen değerler:"xnnpack"— XNNPACK kütüphanesi üzerinden CPU çıkarımı (varsayılan; her yerde çalışır)."cuda"— ExecuTorch CUDA arka ucu üzerinden GPU çıkarımı."mlx"— Apple Silicon üzerinde ExecuTorch MLX arka ucu üzerinden GPU çıkarımı.
- alloc_graph_input (
bool, isteğe bağlı, varsayılanTrue) — Hafıza planlama adımının, grafik girdileri için arena hafızası ayırıp ayırmadığını belirtir.Falseolduğunda, çalışma zamanı girdi tamponlarını arena'ya kopyalamak yerine çağıran tarafından sağlanan girdi tamponlarını doğrudan kullanır — böylece yerindeUSER_INPUT_MUTATION(ör. birStaticCacheyazması) arena kopyasında değil, çağıranın tensöründe gerçekleşir. - alloc_graph_output (
bool, isteğe bağlı, varsayılanTrue) — Hafıza planlama geçişinin, grafik çıktıları için arena hafızası ayırıp ayırmadığını belirtir.Falseolduğunda, çağıran tarafın çıktı tamponlarını çalışma zamanında bağlaması gerekir (Method::set_output_data_ptr); bir çıktıyı, değiştirilmiş girdisinin tamponuna bağlamak, kopyalama-dışa aktarma gidiş-dönüşünü önler. - alloc_mutable_buffers (
bool, isteğe bağlı, varsayılanTrue) — Hafıza planlama adımının, değişken tamponlar (modelde barındırılan durum) için arena hafızası ayırıp ayırmadığını belirtir.MemoryPlanningPassbileşenine aktarılır.
ExecuTorch formatına model dışa aktarma için yapılandırma sınıfı.
DynamoConfig sınıfından tüm alanları devralır (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).
OpenVINOConfig
sınıf 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 )
Parametreler
- compress_to_fp16 (bool, opsiyonel, varsayılan False) — Dönüştürülen modelin float32 ağırlıklarını float16'ya sıkıştırarak boyutunu yarıya indirir. Daha dar aralık nedeniyle varsayılan olarak kapalıdır.
- stateful (bool, optional, defaults to True) —
Fold round-tripped state tensors (KV cache, SSM states, …) into internal OV
variables (
ReadValue/Assign`). The runtime then carries state across `infer()` calls instead of marshalling cache tensors through inputs/outputs on every step, and a fused `beam_idxinput reorders state in-graph for beam search. No-op for models without round-tripped state (encoders, prefill-only exports). Set it to False for targets that take no stateful model, such as the NPU plugin.
openvino.convert_model aracılığıyla modelleri OpenVINO IR formatına dışa aktarmak için yapılandırma sınıfı.
[DynamoConfig] sınıfından tüm alanları devralır (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).
Kantlayıcılar
sınıf transformers.exporters.ExportQuantizer
< source >( calibration_dataset: Iterable[dict[str, Any]] | None = None )
Parametreler
- calibration_dataset (
Iterable[dict], isteğe bağlı) — Kantlayıcının kalibrasyonunu yaptığı girdi sözlükleri: bir liste veya partileri model girdilerine toplayan birDataLoader.~HfExporter.export_for_generationiçin bunlar generate argümanlarıdır ve her bileşen için bir kalibrasyon setine alınır.Noneolduğunda, veriye ihtiyaç duyan bir kantlayıcı, uyarı vererek dışa aktarımın kendi örnek girdileri üzerinde kalibrasyon yapar.
Dışa aktarma sırasında uygulanan eğitim sonrası niceliklendiriciler için temel sınıf.
Bir quantizer, desteklediği dışa aktarma biçimlerini ve ihtiyaç duyduğu paketleri (exporter'lar gibi, test edildiği sürümlerle birlikte) ve herhangi bir dönüştürme işleminden önce torch.export FX grafiğini mi (böylece her backend sonucu alır) yoksa bir backendin dönüştürdüğü modeli mi (onnx_ir.Model, openvino.Model) kuantize ettiğini bildirir. Exporter, bunu baştan dışa aktarma ile doğrular, ardından o model ve dışa aktarmanın örnek girdileriyle ~ExportQuantizer.quantize çağrısını yapar. Yeni bir kuantizasyon yöntemi eklemek için bunu alt sınıflandırın ve quantize uygulayın; bir CalibrationSet, kalibrasyon örneklerini modelin kendi girdilerine eşler.
model (eğer quantizes_fx_graph ise FX grafiği, aksi halde backend modeli) kuantize edin ve sonucu, calibration_dataset üzerinde veya yoksa dışa aktarımın sample_inputs üzerinde kalibre edilmiş olarak döndürün.
FX-graflı kuantizatörler için izlenen kwargs olarak kalibrasyon örnekleri.
Bu kuantizatörün export_format dışa aktarımında çalışamaması veya gerekli bir paketin eksik ya da çok eski olması durumunda hata fırlatır; test edildiği sürümden farklıysa uyarı verir.
calibration_dataset üzerinde kalibrasyon yapan bu kuantizatörün bir kopyası.
sınıf transformers.exporters.quantizers.CalibrationSet
< source >( calibration_dataset: Iterable[dict[str, Any]] | Nonesample_inputs: dict[str, Any]transform: Callable[[dict[str, Any]], Any] )
Model girdileri olarak kalibrasyon örneklerinin yeniden yinelebilir görünümü.
Örnekler, kuantizatörün calibration_dataset değeridir; yoksa dışa aktarımın kendi sample_inputs değeridir (okunduklarında bir kez uyarı verilir). Bunlar, bir tokenizer’ın BatchEncoding gibi herhangi bir eşleme olabilir. transform, her geçişte, örnekleri tek tek ve tembel (lazy) bir şekilde, her forward-kwarg örneğini kuantize edilmiş modelin kabul ettiği biçime (izlenen kwargs, ONNX beslemeleri, OpenVINO port beslemeleri) eşler.
sınıf transformers.exporters.PT2EQuantizer
< source >( quantizer: Anycalibration_dataset: Iterable[dict[str, Any]] | None = None )
Parametreler
- quantizer (
torchao.quantization.pt2e.quantizer.Quantizer) — Grafiği işaretleyen PT2E quantizer'ı. quantize/dequantize işlemleri, hedef backend'in desteklediği türden olmalıdır: inductor içinX86InductorQuantizer, ONNX (QDQ) veya OpenVINO, ExecuTorch içinXNNPACKQuantizer. - calibration_dataset (
Iterable[dict], isteğe bağlı) — Gözlemcilerin kalibrasyon için kullandığı girdi sözlükleri (bkz.ExportQuantizer), her biri için bir ileri geçiş. Kalibrasyonu toplu (batch) veriler üzerinde yapmak için, tekil örneklerin listesini yerine örnekleri toplu girdi sözlüklerine birleştiren birDataLoaderiletin.
FX grafiğini PyTorch 2 Export (PT2E) kuantizasyonu ile kuantize edin: prepare_pt2e gözlemcileri (observers) ekler, kalibrasyon seti bunları yönlendirir ve convert_pt2e bunları quantize/dequantize işlemleriyle değiştirir. Tüm dışa aktarma (export) arka uçlarıyla çalışır.
Örnek:
>>> 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))sınıf transformers.exporters.OnnxRuntimeQuantizer
< source >( config: OnnxRuntimeStaticConfig | OnnxRuntimeDynamicConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )
Dönüştürülen ONNX modelini ONNX Runtime'ın kendi araçları (onnxruntime.quantization) ile kuantize edin: OnnxRuntimeStaticConfig (varsayılan) ile quantize_static veya OnnxRuntimeDynamicConfig ile quantize_dynamic.
Örnek:
>>> from transformers.exporters import (
... OnnxConfig,
... OnnxRuntimeDynamicConfig,
... OnnxRuntimeQuantizer,
... OnnxRuntimeStaticConfig,
... )
>>> static = OnnxRuntimeStaticConfig(per_channel=True)
>>> OnnxConfig(quantizer=OnnxRuntimeQuantizer(static, calibration_dataset=samples))
>>> OnnxConfig(quantizer=OnnxRuntimeQuantizer(OnnxRuntimeDynamicConfig()))sınıf transformers.exporters.OnnxRuntimeStaticConfig
< source >( quant_format: Any = Noneop_types_to_quantize: list[str] | None = Noneper_channel: bool | None = Nonereduce_range: bool | None = Noneactivation_type: Any = Noneweight_type: Any = Nonenodes_to_quantize: list[str] | None = Nonenodes_to_exclude: list[str] | None = Nonecalibrate_method: Any = Nonecalibration_providers: list[str] | None = Noneextra_options: dict[str, Any] | None = None )
onnxruntime.quantization.quantize_static argümanları: int8 aktivasyonlar ve ağırlıklar (varsayılan olarak QDQ), kuantizörün calibration_dataset üzerinde kalibre edilir. None olarak bırakılan bir alan, ONNX Runtime varsayılanını korur. Her biri için quantize_static dokümantasyonuna bakın.
sınıf transformers.exporters.OnnxRuntimeDynamicConfig
< source >( op_types_to_quantize: list[str] | None = Noneper_channel: bool | None = Nonereduce_range: bool | None = Noneweight_type: Any = Nonenodes_to_quantize: list[str] | None = Nonenodes_to_exclude: list[str] | None = Noneextra_options: dict[str, Any] | None = None )
onnxruntime.quantization.quantize_dynamic argümanları: int8 ağırlıklar, çalışma zamanında kuantize edilen aktivasyonlar, kalibrasyon yok. None olarak bırakılan bir alan, ONNX Runtime varsayılanını korur. Her biri için bkz. quantize_dynamic.
sınıf transformers.exporters.NNCFOpenVINOQuantizer
< source >( config: NNCFQuantizationConfig | NNCFWeightCompressionConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )
Dönüştürülen OpenVINO modelini NNCF ile kuantize edin: nncf.quantize bir NNCFQuantizationConfig (varsayılan) ile veya nncf.compress_weights bir NNCFWeightCompressionConfig ile.
Örnek:
>>> import nncf
>>> from transformers.exporters import NNCFOpenVINOQuantizer, NNCFWeightCompressionConfig, OpenVINOConfig
>>> OpenVINOConfig(quantizer=NNCFOpenVINOQuantizer(calibration_dataset=samples))
>>> OpenVINOConfig(
... quantizer=NNCFOpenVINOQuantizer(NNCFWeightCompressionConfig(mode=nncf.CompressWeightsMode.INT4_SYM))
... )sınıf transformers.exporters.NNCFOnnxQuantizer
< source >( config: NNCFQuantizationConfig | NNCFWeightCompressionConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )
Dönüştürülen ONNX modelini NNCF aracılığıyla ONNX arka ucu üzerinden kuantize edin: nncf.quantize ile NNCFQuantizationConfig (varsayılan, int8 QDQ) veya nncf.compress_weights ile NNCFWeightCompressionConfig (ONNX Runtime'ın MatMulNBits olarak int4).
Örnek:
>>> import nncf
>>> from transformers.exporters import NNCFOnnxQuantizer, NNCFWeightCompressionConfig, OnnxConfig
>>> OnnxConfig(quantizer=NNCFOnnxQuantizer(calibration_dataset=samples))
>>> OnnxConfig(quantizer=NNCFOnnxQuantizer(NNCFWeightCompressionConfig(mode=nncf.CompressWeightsMode.INT4_SYM)))sınıf transformers.exporters.NNCFTorchFXQuantizer
< source >( config: NNCFQuantizationConfig | NNCFWeightCompressionConfig | None = Nonecalibration_dataset: Iterable[dict[str, Any]] | None = None )
torch.export FX grafiğini, TorchFX arka ucu üzerinden NNCF ile kuantize edin: NNCFQuantizationConfig ile nncf.quantize (varsayılan, quantize/dequantize işlemleri) veya NNCFWeightCompressionConfig ile nncf.compress_weights. PT2EQuantizer gibi, herhangi bir dönüştürmeden önce çalıştığından, tüm arka uçlar sonucunu alır. ExecuTorch yalnızca ağırlık-kuantize edilmiş sonucu düşürür: XNNPACK, quantize/dequantize işlemlerini devretmez ve ExecuTorch için bunlara ait çekirdekler yoktur.
sınıf transformers.exporters.NNCFQuantizationConfig
< source >( mode: Any = Nonepreset: Any = Nonetarget_device: Any = Nonesubset_size: int | None = Nonefast_bias_correction: bool | None = Nonemodel_type: Any = Noneignored_scope: Any = Noneadvanced_parameters: Any = None )
nncf.quantize argümanları: int8 aktivasyonlar ve ağırlıklar, quantizer’ın calibration_dataset üzerinde kalibre edilmiştir.
None olarak bırakılan bir alan, model_type hariç olmak üzere NNCF varsayılanını korur; model_type varsayılan olarak nncf.ModelType.TRANSFORMER değerini alır.
Her biri için nncf.quantize dokümantasyonuna bakın.
sınıf transformers.exporters.NNCFWeightCompressionConfig
< source >( mode: Any = Noneratio: float | None = Nonegroup_size: int | None = Noneignored_scope: Any = Noneall_layers: bool | None = Nonesensitivity_metric: Any = Nonesubset_size: int | None = Noneawq: bool | None = Nonescale_estimation: bool | None = Nonegptq: bool | None = Nonelora_correction: bool | None = Nonebackup_mode: Any = Nonecompression_format: Any = Noneadvanced_parameters: Any = None )
nncf.compress_weights argümanları: veriye duyarlı yöntemler (AWQ, ölçek tahmini, GPTQ) içeren int4 modları için yalnızca ağırlıklı int8 veya int4. int8 modları verisizdir; diğerleri ise kuantizörün calibration_dataset üzerinde kalibre eder. gptq ve lora_correction yalnızca OpenVINO içindir. None olarak bırakılan bir alan, NNCF varsayılanını korur. Her biri için bkz. nncf.compress_weights.
Yardımcılar
export_for_generation işlevini destekleyen alt düzey işlevler; bir modeli ayrıştırma ile her bileşeni dışa aktarma arasında müdahale etmeniz gerektiğinde kullanışlıdır.
transformers.exporters.utils.get_leaf_tensors
< source >( obj: Any ) → dict[str, torch.Tensor]
Olası olarak iç içe geçmiş bir yapıdan tüm yaprak tensörleri özyinelemeli olarak getirir.
transformers.exporters.utils.prepare_for_export
< source >( model: PreTrainedModel | torch.nn.Moduleinputs: MutableMapping[str, Any] )
Dışa aktarma için model ve girdileri yapılandırır. Hem model hem de inputs yerinde değiştirilir ve output_flags, inputs içinden use_cache, return_dict vb. için alınan değerleri tutan (model, inputs, output_flags) döndürülür (izleme sırasında patch_model_config tarafından model.config üzerine geri döndürülebilir şekilde uygulanacak).
- Etiket girdilerini (
labels,future_values) ayıklar — kayıp hesabı desteklenmez. - Çıktı bayraklarını (
use_cache,return_dict, …)inputsiçinden çıkarır, böylece izlenen kwargs olarak görünmezler; değerler,model.configüzerine uygulanması için izleme bloğuna döndürülür. @register_export_input_preparerile kayıtlı veriye bağımlı görme/ses kwargs'larını önceden hesaplar ve bunlarıinputsiçine yazar.- Girdi tensörlerini modelin
dtype/devicedeğerleriyle eşleşecek şekilde dönüştürür.
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]]
Dönüş değeri
dict[str, tuple[torch.nn.Module, dict]]
{"prefill": (model, prefill_inputs), "decode": (model, decode_inputs)}.
model.generate() çalıştırın ve prefill ile decode girdilerini yakalayın.
Tüm üretim mekanizmasını yeniden kullanır; böylece her mimari (yalnızca çözücü, SSM, kodlayıcı-çözücü, çok modlu, …) döngüyü yeniden uygulamaya gerek kalmadan doğru girdileri alır.
generation_config, generate() işlevine iletilir (varsayılan olarak modelin kendi ayarları kullanılır); bu nedenle yakalanan girdiler, generate() işlevinin oluşturacağı önbelleği kullanır. cache_implementation="static" ve max_cache_len=N değerlerini içeren bir yapılandırma iletirseniz, çözümleme girdilerinde statik boyutlu bir önbellek yakalanır; bu, statik önbellek dışa aktarımının temelini oluşturur. max_cache_len, yakalama işleminden bağımsız olarak önbelleğin boyutunu belirler; böylece dışa aktarılan çözümleme, büyüyen bir önbellek yerine sabit bir [..., N, ...] önbelleği alır.
multi_token_decode olduğunda, decode bileşeni çoklu token olarak yakalanır — iki ardışık decode adımı birleştirilir (_merge_decode_calls bkz.) böylece sorgu dizisi ekseni sembolik kalır (tek token'lı bir decode, bu ekseni 1'e özelleştirirdi). Ardından hem tek token'ı (sıradan çözümleme) hem de birçok token'ı (geçmişten devam veya önbellek boşken düz bir prefill) işler. Aksi halde decode, klasik tek token'lı decode'dur.
transformers.exporters.utils.decompose_multimodal
< source >( model: PreTrainedModelinputs: dict[str, Any] ) → dict[str, tuple[torch.nn.Module, dict]]
Dönüş değeri
dict[str, tuple[torch.nn.Module, dict]]
Her algılanan alt modül (görsel/ses kodlayıcı, projeksiyon, dil modeli, lm_head) için bir name: (module, inputs)
girdisi.
Yükseltilen
ValueError
ValueError— modelde bilinen çok modüllü alt modüller bulunamazsa.
Her çok modlu alt modülün girdilerini tek bir ileri geçişle yakalayın.
Öznitelik adına göre (görüntü kulesi, projeksiyoncu, dil modeli, lm_head, …) bilinen tüm çok modlu alt modülleri algılar ve tek bir model(**inputs) çağrısı sırasında ileri yönlü (forward) anahtar kelime argümanlarını yakalar.
Her alt modül, bağımsız dışa aktarım için ayrı bir name: (module, inputs) girdisi olarak döndürülür. Token birleştirme adımı (ör. çok modlu modeller için masked_scatter), bilinçli olarak dışa aktarılan grafiklerin dışında bırakılır — inputs_embeds'i decoder'ı çalıştırmadan önce kodlayıcı çıktılarından bir araya getirmek çağırıcının sorumluluğundadır.
transformers.exporters.utils.decompose_for_generation
< source >( model: PreTrainedModelinputs: dict[str, Any]generation_config: Any = Nonemulti_token_decode: bool = False ) → `{component_name
Parametreler
- model — Üretken model.
model.generate(**inputs)desteklemelidir. - inputs — Generate kwargs —
model.generate(**inputs)çağrısına ileteceğiniz parametreler. - generation_config — Yakalama sırasında
generate()çağrısına iletilen isteğe bağlıGenerationConfig. Statik boyutlu bir önbelleğe karşı dışa aktarmak içincache_implementation="static"+max_cache_len=Niçeren bir tane geçin (bkz.decompose_prefill_decode). - multi_token_decode —
Trueolduğunda,decodebileşeni çoklu token decode olarak yakalanır (dinamik sorgu dizisi ekseni: birden fazla token aynı anda — geçmişten devam veya önbellek boşken düz prefill); tekli token decode dinamik kalamaz (bkz.decompose_prefill_decode).
Dönüş değeri
`{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.
Üretken bir modeli bağımsız olarak dışa aktarılabilir (model, forward_inputs) çiftlerine ayırın.
decompose_prefill_decode çalıştırılarak gerçek bir model.generate(**inputs, max_new_tokens=2) çağrısından prefill ve decode forward kwargs'ları yakalanır. Prefill çok modluysa (is_multimodal göre), decompose_multimodal aracılığıyla her alt modül için (görüntü/ses kodlayıcı, projeksiyon, dil modeli, lm_head) birer giriş olacak şekilde daha da bölünür.
Model, modal kodlayıcılar ve bir dil modeline sahip çok modluysa True döndürür.
PreTrainedModel olmayan bir model (ör. çıplak bir nn.Module) standart get_encoder/get_decoder erişimcilerine sahip değildir ve açıkça çok modallı değildir, bu nedenle False değerine kısaltılır.