Transformers documentation

Exportadores

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

and get access to the augmented documentation experience

to get started

Exportadores

Se pueden agregar nuevos backends de exportación a Transformers mediante la herencia de HfExporter.

Aprende a usar los exportadores integrados en la guía Exporters.

AutoHfExporter

clase transformers.exporters.AutoHfExporter

< >

( )

La clase exportadora Auto-HF que se encarga de instanciar automáticamente el HfExporter correcto a partir de la ExportConfig.

from_pretrained

< >

( pretrained_model_name_or_path**kwargs )

Cargue una instancia de exportador desde un modelo/punto de control preentrenado que incluye una configuración de exportación.

Aún no implementado — marcador de posición para un flujo de trabajo de “receta de exportación” de primera clase.

La idea: los propietarios de los modelos publican un export_config.json (o un campo export_config en config.json) junto a sus pesos en el Hub. Ese archivo captura la configuración que el propietario ya ha validado para su arquitectura: el formato de destino (dynamo / onnx / executorch), las especificaciones exactas de formas dinámicas (p. ej. text_ids dinámico hasta 4096, mosaicos de imagen fijos en 448, batch=1 para despliegue en el borde), la bandera strict, el opset de ONNX, el diseño de prefill frente a decode, la elección del backend de ExecuTorch y cualquier otro parámetro que hoy en día existe como conocimiento tribal en un README o en un cuaderno privado.

Los consumidores obtienen la exportación validada por el propietario en una sola llamada:

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

Se compone con el registro [register_export_input_preparer]: el propietario proporciona la especificación de forma mediante export_config.json, mientras que transformers proporciona las precomputaciones dependientes de los datos (cu_seqlens, ids de posición de visión, índices de ventana, …) para esa arquitectura. Juntos, cubren las dos partes difíciles de exportar nuevos modelos: conocer el contrato de forma correcto y preparar las entradas correctas, de modo que los usuarios aguas abajo no tengan que derivar ninguno de los dos desde cero (y no se rompan en producción si lo hacen mal).

soporta_export_format

< >

( export_config_dict: dict )

Devuelve True si el dict proporcionado describe un export_format que tiene tanto una clase de configuración registrada como una clase de exportador registrada. Emite una advertencia con un mensaje accionable cuando el formato está completamente ausente, es desconocido o solo está registrado a medias.

AutoExportConfig

clase transformers.exporters.AutoExportConfig

< >

( )

La clase de configuración de exportación Auto-HF que se encarga de enrutar automáticamente a la configuración de exportación correcta a partir de una configuración de exportación almacenada en un diccionario.

HfExporter

clase transformers.exporters.HfExporter

< >

( )

Clase base abstracta para todos los exportadores de Transformers.

Subclase e implementa ~HfExporter.export para añadir un nuevo backend de exportación.

export

< >

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

Parámetros

  • model (PreTrainedModel) — El modelo a exportar.
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Forward kwargs — lo que pasarías a model(**sample_inputs). Se usan directamente como entradas de ejemplo durante el trazado. Para una exportación de un paso de decodificación autoregresiva, esto significa que debes incluir past_key_values, cache_position, etc. Si solo tienes entradas de estilo generación, usa ~HfExporter.export_for_generation en su lugar: ejecuta model.generate por ti y exporta cada etapa.
  • config (ExportConfigMixin) — Configuración específica del backend.

Exporta el modelo y devuelve el objeto de programa específico del backend.

export_for_generation

< >

( model: PreTrainedModelsample_inputs: MutableMapping[str, torch.Tensor | Cache]config: ExportConfigMixin | dict[str, ExportConfigMixin]generation_config: GenerationConfig | None = Nonemulti_token_decode: bool = False ) → dict[str, Any]

Parámetros

  • model (PreTrainedModel) — El modelo generativo a exportar. Debe admitir model.generate(**sample_inputs).
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Generate kwargs — lo que se pasaría a model.generate(**sample_inputs) (típicamente input_ids + attention_mask, más cualquier entrada de modalidad como pixel_values / input_features para modelos multimodales). Los kwargs de forward por etapa se capturan internamente.
  • config (ExportConfigMixin o dict[str, ExportConfigMixin]) — Configuración específica del backend. Pasa una única configuración para aplicarla a cada componente, o un dict con claves por nombre de componente (p. ej. "image_encoder", "language_model", "lm_head", "decode") para sobrescribir por componente — todos los nombres de componentes deben estar presentes en el dict.
  • generation_config (GenerationConfig, opcional) — Se reenvía a la captura de generate() (por defecto, la propia del modelo). Pasa una con cache_implementation="static" para exportar contra un StaticCache de tamaño fijo.
  • multi_token_decode (bool, opcional, valor predeterminado False) — Indica si el componente decode procesa varios tokens de consulta a la vez —un eje de consulta dinámico (prefill con una caché vacía, o continuación desde el pasado en caso contrario)— frente al paso clásico de un solo token (ver decompose_for_generation()). Solo permanece dinámico bajo una exportación de forma dinámica (config.dynamic=True).

Devuelve

dict[str, Any]

{component_name: backend_specific_artifact} — mismas claves que decompose_for_generation(). Los valores son lo que devuelve ~HfExporter.export para el backend concreto (ExportedProgram, ONNXProgram, ExecutorchProgramManager).

Descomponga un modelo generativo y exporte cada componente de forma independiente.

Envoltorio fino alrededor de decompose_for_generation() que llama a ~HfExporter.export en cada par (submodel, forward_inputs) devuelto. Si necesitas los pares intermedios (submodel, forward_inputs) (para verificación, entradas personalizadas, omitir una etapa, …), llama directamente a decompose_for_generation().

validate_environment

< >

( *args**kwargs )

Comprueba que required_packages están instalados y emite una advertencia si hay una desviación de versión respecto a tested_versions.

DynamoExporter

clase transformers.exporters.DynamoExporter

< >

( )

Exportador que convierte un PreTrainedModel en un ExportedProgram.

Ejemplo:

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

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

export

< >

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

OnnxExporter

clase transformers.exporters.OnnxExporter

< >

( )

Exportador que convierte un PreTrainedModel en un ONNXProgram de ONNX.

Ejemplo:

>>> from transformers.exporters.exporter_onnx import OnnxExporter, OnnxConfig

>>> exporter = OnnxExporter()
>>> onnx_program = exporter.export(model, inputs, config=OnnxConfig(dynamic=True))
>>> outputs = onnx_program(**inputs)  # run in-memory
>>> exporter.export(model, inputs, config=OnnxConfig(output_path="model.onnx"))  # save to disk

export

< >

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

ExecutorchExporter

clase transformers.exporters.ExecutorchExporter

< >

( )

Exportador que convierte un PreTrainedModel en un ExecutorchProgramManager de ExecuTorch.

Ejemplo:

>>> from transformers.exporters.exporter_executorch import ExecutorchExporter, ExecutorchConfig

>>> exporter = ExecutorchExporter()
>>> et_program = exporter.export(model, inputs, config=ExecutorchConfig(backend="xnnpack"))
>>> et_program.write_to_file("model.pte")

export

< >

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

Exporta un modelo a ExecuTorch, aplicando la preparación del backend y parches de operaciones de torch.

DynamoConfig

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

Parámetros

  • dynamic (bool, opcional, valor predeterminado False) — Si se exporta con formas dinámicas (simbólicas). Cuando True y dynamic_shapes no está establecido, todas las dimensiones de los tensores se configuran en Dim.AUTO automáticamente.
  • strict (bool, opcional, valor predeterminado False) — Si se habilita el modo estricto en torch.export. Ejecuta la trazada simbólica completa y detecta más errores, pero es más lento y tiene más probabilidades de fallar en modelos complejos.
  • dynamic_shapes (dict[str, Any], opcional) — Especificaciones explícitas de formas dinámicas por entrada pasadas a torch.export. Tiene prioridad sobre dynamic.
  • prefer_deferred_runtime_asserts_over_guards (bool, opcional, valor predeterminado False) — Cuando True, las guardas de forma dependientes de los datos se emiten como asserts de tiempo de ejecución en el grafo exportado, en lugar de hacer que la exportación falle en el momento del trazado si una guarda no se cumple en todo el rango de formas simbólicas. La mayoría de los LLMs transformer necesitan establecer esto en True cuando se usan límites de Dim(min=, max=) de grano fino. No es necesario con dynamic=True / Dim.AUTO, donde torch.export infiere las relaciones de forma en lugar de verificarlas contra los límites declarados por el usuario.
  • quantizer ([~exporters.quantizers.ExportQuantizer], opcional) — Cuantización posterior al entrenamiento aplicada durante la exportación: [~exporters.quantizers.PT2EQuantizer] o [~exporters.quantizers.NNCFTorchFXQuantizer] en el grafo FX para cada backend, [~exporters.quantizers.OnnxRuntimeQuantizer] en el modelo ONNX convertido, o [~exporters.quantizers.NNCFOpenVINOQuantizer] / [~exporters.quantizers.NNCFOnnxQuantizer] en el modelo OpenVINO / ONNX convertido.

Clase de configuración para exportar modelos mediante torch.export.

OnnxConfig

clase transformers.exporters.OnnxConfig

< >

( export_format: ExportFormat = <ExportFormat.ONNX: 'onnx'>dynamic: bool = Falsestrict: bool = Falsedynamic_shapes: dict[str, Any] | None = Noneprefer_deferred_runtime_asserts_over_guards: bool = Falsequantizer: ExportQuantizer | None = Noneoutput_path: str | PathLike | None = Noneopset_version: int | None = Noneexternal_data: bool = Trueoptimize: bool = Trueexport_params: bool = Truekeep_initializers_as_inputs: bool = False )

Parámetros

  • output_path (str o PathLike, opcional) — Ruta de salida para el archivo .onnx. Cuando es None (valor predeterminado), el modelo exportado se mantiene en memoria como un ONNXProgram y no se escribe en el disco.
  • opset_version (int, opcional) — Versión de opset de ONNX a la que apuntar. Por defecto, es la última versión de opset soportada por la versión de onnxscript instalada.
  • external_data (bool, opcional, valor predeterminado True) — Almacena los tensores de pesos grandes en un archivo lateral .onnx_data separado en lugar de incrustarlos en el protobuf. Es obligatorio para modelos cuyos pesos superan el límite de protobuf de 2 GB.
  • optimize (bool, opcional, valor predeterminado True) — Ejecuta las pasadas de optimización de onnxscript (plegado de constantes, eliminación de código muerto, …) en el grafo exportado. Desactívalo para modelos que se encuentren con errores del optimizador de onnxscript de origen.
  • export_params (bool, opcional, valor predeterminado True) — Incorpora los pesos del modelo en el grafo ONNX. Establece False para exportar un grafo sin pesos (los pesos deben proporcionarse en tiempo de ejecución).
  • keep_initializers_as_inputs (bool, opcional, valor predeterminado False) — Expone los inicializadores de pesos como entradas explícitas del grafo. Es requerido por algunos runtimes de ONNX más antiguos (opset < 9).

Clase de configuración para exportar modelos a ONNX mediante torch.onnx.export.

Hereda todos los campos de DynamoConfig (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

ExecutorchConfig

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

Parámetros

  • backend (str, opcional, por defecto "xnnpack") — Backend de ExecuTorch objetivo. Valores admitidos:
    • "xnnpack" — Inferencia en CPU a través de la biblioteca XNNPACK (predeterminado; se ejecuta en cualquier lugar).
    • "cuda" — Inferencia en GPU a través del backend CUDA de ExecuTorch.
    • "mlx" — Inferencia en GPU a través del backend MLX de ExecuTorch en Apple Silicon.
  • alloc_graph_input (bool, opcional, valor predeterminado True) — Si la pasada de planificación de memoria reserva memoria del área para las entradas del grafo. Cuando es False, el tiempo de ejecución utiliza directamente los búferes de entrada proporcionados por el llamador en lugar de copiarlos en el área, por lo que una USER_INPUT_MUTATION in situ (p. ej., una escritura en StaticCache) se realiza en el tensor del llamador y no en una copia del área.
  • alloc_graph_output (bool, opcional, valor predeterminado True) — Si la pasada de planificación de memoria reserva memoria de arena para las salidas del grafo. Cuando es False, el llamador debe vincular los búferes de salida en tiempo de ejecución (Method::set_output_data_ptr); vincular una salida al búfer de su entrada mutada evita el viaje de ida y vuelta de la copia de salida.
  • alloc_mutable_buffers (bool, opcional, valor predeterminado True) — Si el paso de planificación de memoria reserva memoria de arena para buffers mutables (estado residente en el modelo). Se transmite a MemoryPlanningPass.

Clase de configuración para exportar modelos al formato ExecuTorch.

Hereda todos los campos de DynamoConfig (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

OpenVINOConfig

clase transformers.exporters.OpenVINOConfig

< >

( export_format: ExportFormat = <ExportFormat.OPENVINO: 'openvino'>dynamic: bool = Falsestrict: bool = Falsedynamic_shapes: dict[str, Any] | None = Noneprefer_deferred_runtime_asserts_over_guards: bool = Falsequantizer: ExportQuantizer | None = Noneoutput_path: str | PathLike | None = Nonecompress_to_fp16: bool = Truestateful: bool = True )

Parámetros

  • output_path (str o PathLike, opcional) — Ruta de salida para el archivo .xml (el .bin correspondiente se escribe junto a él). Cuando None (valor predeterminado), el modelo convertido se mantiene en memoria como un openvino.Model.
  • compress_to_fp16 (bool, opcional, valor predeterminado True) — Comprime los pesos de punto flotante a FP16 al guardar, lo que reduce a la mitad el tamaño en disco con un impacto despreciable en la precisión para la mayoría de los modelos. Solo se aplica cuando se establece output_path.
  • 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.

Clase de configuración para exportar modelos a OpenVINO IR mediante openvino.convert_model.

Hereda todos los campos de [DynamoConfig] (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

Cuantizadores

clase transformers.exporters.ExportQuantizer

< >

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

Parámetros

  • calibration_dataset (Iterable[dict], opcional) — Diccionarios de entrada sobre los que el cuantizador realiza la calibración: una lista, o un DataLoader cuyos lotes se combinan en entradas del modelo. Para ~HfExporter.export_for_generation, son los argumentos de generate, capturados en un conjunto de calibración por componente. Cuando es None, un cuantizador que necesite datos calibra sobre las propias entradas de muestra de la exportación, con una advertencia.

Clase base para cuantificadores de pos-entrenamiento aplicados durante la exportación.

Un cuantizador declara los formatos de exportación que admite y los paquetes que necesita (con las versiones en las que se ha probado, al igual que los exportadores) y si cuantiza el grafo FX de torch.export, antes de cualquier conversión (de modo que cada backend tome el resultado), o el modelo en el que un backend lo convierte (onnx_ir.Model, openvino.Model). El exportador lo valida frente a la exportación de antemano y luego llama a ~ExportQuantizer.quantize con ese modelo y las entradas de ejemplo de la exportación. Subclásalo e implementa quantize para añadir un nuevo método de cuantización; un CalibrationSet mapea las muestras de calibración a las propias entradas del modelo.

quantize

< >

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

Cuantiza model (el grafo FX si quantizes_fx_graph, en caso contrario, el modelo del backend) y devuelve el resultado, calibrado con calibration_dataset o con sample_inputs de la exportación cuando no se proporciona ninguno.

validate_environment

< >

( export_format: ExportFormat )

Lanza una excepción si este cuantizador no puede ejecutarse en una exportación de export_format, o si falta un paquete necesario o su versión es demasiado antigua; emite una advertencia cuando una versión difiere de la con la que se ha probado.

with_calibration

< >

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

Una copia de este cuantizador que calibra en calibration_dataset.

clase transformers.exporters.quantizers.CalibrationSet

< >

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

Vista re-iterable de las muestras de calibración como entradas del modelo.

Las muestras son el calibration_dataset del cuantizador, o las propias sample_inputs de la exportación (con una advertencia, una vez que se leen) cuando no tiene ninguna. Pueden ser cualquier mapeo, como un BatchEncoding de un tokenizador. transform mapea cada muestra de forward-kwarg a lo que toma el modelo cuantizado (kwargs trazados, feeds de ONNX, feeds de puertos de OpenVINO), de forma perezosa, una muestra a la vez, en cada pasada.

clase transformers.exporters.PT2EQuantizer

< >

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

Parámetros

  • quantizer (torchao.quantization.pt2e.quantizer.Quantizer) — El cuantizador PT2E que anota el grafo. Sus operaciones de cuantizar/descuantizar deben ser las que el backend de destino soporta: X86InductorQuantizer para inductor, ONNX (QDQ) o OpenVINO, XNNPACKQuantizer para ExecuTorch.
  • calibration_dataset (Iterable[dict], opcional) — Diccionarios de entrada sobre los que los observadores realizan la calibración (ver ExportQuantizer), uno por cada paso de propagación hacia adelante. Para calibrar con lotes, pase un DataLoader que agrupe las muestras en diccionarios de entrada por lotes, en lugar de una lista de muestras individuales.

Cuantice el grafo FX con cuantización de PyTorch 2 Export (PT2E): prepare_pt2e inserta observadores, el conjunto de calibración los dirige y convert_pt2e los reemplaza con operaciones de cuantizar/des-cuantizar. Funciona con todos los backends de exportación.

Ejemplo:

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

clase transformers.exporters.OnnxRuntimeQuantizer

< >

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

Cuantice el modelo ONNX convertido con las propias herramientas de ONNX Runtime (onnxruntime.quantization): quantize_static con una OnnxRuntimeStaticConfig (el valor predeterminado) o quantize_dynamic con una OnnxRuntimeDynamicConfig.

Ejemplo:

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

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

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

Argumentos de onnxruntime.quantization.quantize_static: activaciones y pesos int8 (QDQ por defecto), calibrados en el calibration_dataset del cuantizador. Un campo dejado en None mantiene el valor predeterminado de ONNX Runtime. Consulte quantize_static para cada uno.

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

Argumentos de onnxruntime.quantization.quantize_dynamic: pesos int8, activaciones cuantizadas en tiempo de ejecución, sin calibración. Un campo dejado en None mantiene el valor predeterminado de ONNX Runtime. Consulte quantize_dynamic para cada uno.

clase transformers.exporters.NNCFOpenVINOQuantizer

< >

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

Cuantice el modelo de OpenVINO convertido con NNCF: nncf.quantize con una NNCFQuantizationConfig (el valor predeterminado), o nncf.compress_weights con una NNCFWeightCompressionConfig.

Ejemplo:

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

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

clase transformers.exporters.NNCFOnnxQuantizer

< >

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

Cuantice el modelo ONNX convertido con NNCF a través de su backend ONNX: nncf.quantize con una NNCFQuantizationConfig (el valor predeterminado, int8 QDQ), o nncf.compress_weights con una NNCFWeightCompressionConfig (int4 como MatMulNBits de ONNX Runtime).

Ejemplo:

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

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

clase transformers.exporters.NNCFTorchFXQuantizer

< >

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

Cuantice el grafo FX de torch.export con NNCF a través de su backend TorchFX: nncf.quantize con una NNCFQuantizationConfig (el valor predeterminado, operaciones quantize/dequantize), o nncf.compress_weights con una NNCFWeightCompressionConfig. Al igual que PT2EQuantizer, se ejecuta antes de cualquier conversión, por lo que cada backend toma su resultado. ExecuTorch solo reduce el resultado solo de pesos: XNNPACK no delega las operaciones quantize/dequantize, y ExecuTorch no tiene kernels para ellas.

Ejemplo:

>>> from transformers.exporters import DynamoConfig, NNCFTorchFXQuantizer

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

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

Argumentos de nncf.quantize: activaciones y pesos int8, calibrados en el calibration_dataset del cuantizador. Un campo dejado en None conserva el valor predeterminado de NNCF, excepto model_type, cuyo valor predeterminado es nncf.ModelType.TRANSFORMER. Consulte nncf.quantize para cada uno.

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

Argumentos de nncf.compress_weights: int8 o int4 solo de pesos, con métodos conscientes de los datos (AWQ, estimación de escala, GPTQ) para los modos int4. Los modos int8 son independientes de los datos; los demás calibran con el calibration_dataset del cuantizador. gptq y lora_correction son exclusivos de OpenVINO. Un campo dejado en None conserva el valor predeterminado de NNCF. Consulte nncf.compress_weights para cada uno.

Utilidades

Funciones de bajo nivel que impulsan export_for_generation, útiles cuando necesitas intervenir entre la descomposición de un modelo y la exportación de cada componente.

transformers.exporters.utils.get_leaf_tensors

< >

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

Parámetros

  • obj (Any) — Un tensor, dataclass, dict, list, tuple o cualquier anidación de estos.

Devuelve

dict[str, torch.Tensor]

Mapeo plano de cadenas de ruta con puntos a tensores.

Recupera recursivamente todos los tensores hoja de una estructura potencialmente anidada.

transformers.exporters.utils.prepare_for_export

< >

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

Configura el modelo y las entradas para la exportación. Modifica model y inputs in situ, devolviendo (model, inputs, output_flags), donde output_flags contiene los valores extraídos de inputs para use_cache, return_dict, etc. (para aplicarse de forma reversible sobre model.config mediante patch_model_config durante la traza).

  • Elimina las entradas de etiquetas (labels, future_values); no se admite el cálculo de la pérdida.
  • Extrae las banderas de salida (use_cache, return_dict, …) de inputs para que no aparezcan como kwargs trazados; los valores se devuelven para que el bloque de trazado los aplique en model.config.
  • Precomputa los kwargs de visión/áudio dependientes de los datos registrados mediante @register_export_input_preparer y los escribe en inputs.
  • Convierte los tensores de entrada para que coincidan con el dtype / device del modelo.

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

Devuelve

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

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

Ejecuta model.generate() y captura las entradas de prefill y decode.

Reutiliza el mecanismo completo de generación para que cada arquitectura (solo decodificador, SSM, codificador-decodificador, multimodal, …) reciba las entradas correctas sin reimplementar el bucle.

generation_config se reenvía a generate() (por defecto, la del propio modelo), por lo que las entradas capturadas utilizan la caché que generate() construiría. Pasa una con cache_implementation="static" y max_cache_len=N para capturar una caché de tamaño estático en las entradas de decodificación, la base para una exportación con caché estática. max_cache_len dimensiona la caché de forma independiente a la captura, por lo que la decodificación exportada toma una caché fija de [..., N, ...] en lugar de una que crece.

Cuando multi_token_decode, el componente decode se captura como un decodificado multi-token: dos pasos de decodificado consecutivos fusionados (ver _merge_decode_calls) para que su eje de secuencia de consulta se mantenga simbólico (un decodificado de un solo token especializaría ese eje a 1). A continuación, maneja tanto un solo token (decodificado ordinario) como muchos (continuación desde el pasado, o un prefill simple cuando la caché está vacía). En caso contrario, decode es el decodificado clásico de un solo token.

transformers.exporters.utils.decompose_multimodal

< >

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

Devuelve

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

Una entrada name: (module, inputs) por cada submódulo detectado (codificador de imagen/audios, proyector, modelo de lenguaje, lm_head).

Lanza

ValueError

  • ValueError — si no se encuentran submódulos multimodales conocidos en el modelo.

Captura las entradas de cada submódulo multimodal mediante una única pasada hacia adelante.

Detecta todos los submódulos multimodales conocidos por nombre de atributo (torre de visión, proyector, modelo de lenguaje, lm_head, …) y captura sus kwargs de forward durante una llamada a model(**inputs).

Cada submódulo se devuelve como una entrada separada name: (module, inputs) para su exportación independiente. El paso de fusión de tokens (p. ej. masked_scatter para modelos multimodales) se deja deliberadamente fuera de los grafos exportados: es responsabilidad del llamador ensamblar inputs_embeds a partir de las salidas del codificador antes de ejecutar el decodificador.

transformers.exporters.utils.decompose_for_generation

< >

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

Parámetros

  • model — Modelo generativo. Debe admitir model.generate(**inputs).
  • inputs — argumentos de Generate — lo que pasarías a model.generate(**inputs).
  • generation_config — GenerationConfig opcional que se reenvía a generate() durante la captura. Pasa uno con cache_implementation="static" + max_cache_len=N para exportar contra una caché de tamaño estático (ver decompose_prefill_decode).
  • multi_token_decode — Cuando True, captura el componente decode como un decodificado de múltiples tokens (eje de secuencia de consulta dinámica: varios tokens a la vez — continuación desde el pasado, o un prefill simple cuando la caché está vacía); un decodificado de un solo token no puede mantenerse dinámico (ver decompose_prefill_decode).

Devuelve

`{component_name

(submodel, forward_inputs)}. Keys are “prefill”/“decode”for plain generative models and”_encoder”/“multi_modal_projector”/“language_model”/“lm_head”/“decode”` for multi-modal generative models.

Descomponer un modelo generativo en pares (model, forward_inputs) exportables de forma independiente.

Ejecuta decompose_prefill_decode para capturar los kwargs de prefill y decode de una llamada real a model.generate(**inputs, max_new_tokens=2). Si el prefill es multimodal (según is_multimodal), se divide además en una entrada por submódulo (codificador de visión/audios, proyector, modelo de lenguaje, lm_head) mediante decompose_multimodal.

transformers.exporters.utils.is_multimodal

< >

( model: PreTrainedModel | torch.nn.Module )

Devuelve True si el modelo es multimodal con codificadores modales y un modelo de lenguaje.

Un modelo que no es PreTrainedModel (por ejemplo, un nn.Module simple) no tiene los accesores canónicos get_encoder/get_decoder y no es multimodal de forma trivial, por lo que devuelve False directamente.

Update on GitHub