Transformers documentation

Trình xuất

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

Trình xuất

Các backend xuất mới có thể được thêm vào Transformers bằng cách kế thừa từ HfExporter.

Tìm hiểu cách sử dụng các trình xuất có sẵn trong hướng dẫn Exporters.

AutoHfExporter

lớp transformers.exporters.AutoHfExporter

< >

( )

Lớp Auto-HF exporter chịu trách nhiệm tự động khởi tạo thành HfExporter phù hợp dựa trên ExportConfig được cung cấp.

from_pretrained

< >

( pretrained_model_name_or_path**kwargs )

Tải một instance exporter từ một model/checkpoint được huấn luyện trước có kèm theo cấu hình xuất.

Chưa được triển khai — phần giữ chỗ cho quy trình “công thức xuất” cấp một.

Ý tưởng: các chủ sở hữu mô hình công bố một export_config.json (hoặc một trường export_config trong config.json) cùng với trọng số của họ trên Hub. Tệp đó ghi lại các cài đặt mà chủ sở hữu đã xác thực cho kiến trúc của họ — định dạng đích (dynamo / onnx / executorch), các thông số hình dạng động chính xác (ví dụ: text_ids động đến 4096, các ô ảnh cố định ở 448, batch=1 cho triển khai trên thiết bị biên), cờ strict, opset ONNX, bố cục prefill so với decode, lựa chọn backend ExecuTorch, và bất kỳ tùy chỉnh nào khác mà hiện nay chỉ tồn tại như kiến thức truyền miệng trong một README hoặc một notebook riêng tư.

Người dùng sau đó nhận được bản xuất đã được chủ sở hữu xác thực chỉ trong một lần gọi:

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

Kết hợp với registry [register_export_input_preparer]: bên sở hữu cung cấp shape spec thông qua export_config.json, trong khi transformers cung cấp các phép tính trước phụ thuộc vào dữ liệu (cu_seqlens, vision position ids, window indices, …) cho kiến trúc đó. Cùng nhau, chúng bao phủ hai phần khó khăn khi xuất các mô hình mới — biết đúng shape contract và chuẩn bị đúng các input — để người dùng phía sau không phải tự suy ra lại từ đầu (và không bị lỗi trong môi trường production khi làm sai).

supports_export_format

< >

( export_config_dict: dict )

Trả về True nếu dict được cung cấp mô tả một export_format có cả lớp config đã đăng ký và lớp exporter đã đăng ký. Cảnh báo với thông điệp có thể hành động khi định dạng bị thiếu hoàn toàn, không xác định, hoặc chỉ được đăng ký một phần.

AutoExportConfig

lớp transformers.exporters.AutoExportConfig

< >

( )

Lớp cấu hình xuất Auto-HF chịu trách nhiệm tự động chuyển hướng đến cấu hình xuất chính xác dựa trên cấu hình xuất được lưu trong một từ điển.

HfExporter

class transformers.exporters.HfExporter

< >

( )

Lớp trừu tượng cơ sở cho tất cả các trình xuất của Transformers.

Tạo lớp con và triển khai ~HfExporter.export để thêm một backend xuất mới.

export

< >

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

Tham số

  • model (PreTrainedModel) — Mô hình cần xuất.
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Forward kwargs — những gì bạn sẽ truyền vào model(**sample_inputs). Chúng được sử dụng trực tiếp làm đầu vào mẫu trong quá trình tracing. Đối với xuất khẩu bước giải mã tự hồi quy, điều này có nghĩa là bạn cần bao gồm past_key_values, cache_position, v.v. Nếu bạn chỉ có các đầu vào kiểu generation, hãy sử dụng ~HfExporter.export_for_generation thay thế — nó sẽ chạy model.generate cho bạn và xuất khẩu từng giai đoạn.
  • config (ExportConfigMixin) — Cấu hình cụ thể cho backend.

Xuất mô hình và trả về đối tượng chương trình cụ thể của 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]

Tham số

  • model (PreTrainedModel) — Mô hình sinh cần xuất. Phải hỗ trợ model.generate(**sample_inputs).
  • sample_inputs (dict[str, torch.Tensor | Cache]) — Generate kwargs — những gì bạn sẽ truyền vào model.generate(**sample_inputs) (thường là input_ids + attention_mask, cùng với các đầu vào đa giác quan như pixel_values / input_features cho các mô hình đa phương tiện). Các forward kwargs cho từng giai đoạn được ghi nhận bên trong.
  • config (ExportConfigMixin hoặc dict[str, ExportConfigMixin]) — Cấu hình cụ thể cho backend. Truyền một cấu hình duy nhất để áp dụng cho mọi thành phần, hoặc một dict có khóa là tên thành phần (ví dụ "image_encoder", "language_model", "lm_head", "decode") để ghi đè theo từng thành phần — tất cả tên thành phần phải có mặt trong dict.
  • generation_config (GenerationConfig, optional) — Được chuyển tiếp đến capture generate() (mặc định là của chính model). Truyền một cấu hình có cache_implementation="static" để xuất đối với StaticCache có kích thước cố định.
  • multi_token_decode (bool, tùy chọn, mặc định là False) — Xác định xem thành phần decode có xử lý nhiều token truy vấn cùng lúc — một trục truy vấn động (prefill trên cache trống, hoặc tiếp nối từ quá khứ trong các trường hợp khác) — hay là bước đơn token cổ điển (xem decompose_for_generation()). Chỉ giữ trạng thái động khi xuất với hình dạng động (config.dynamic=True).

Trả về

dict[str, Any]

{component_name: backend_specific_artifact} — các khóa giống với decompose_for_generation(). Giá trị là những gì ~HfExporter.export trả về cho backend cụ thể (ExportedProgram, ONNXProgram, ExecutorchProgramManager).

Phân tách một mô hình sinh và xuất từng thành phần một cách độc lập.

Lớp bọc mỏng quanh decompose_for_generation(), gọi ~HfExporter.export trên mỗi cặp (submodel, forward_inputs) được trả về. Nếu bạn cần các cặp (submodel, forward_inputs) trung gian (để xác minh, đầu vào tùy chỉnh, bỏ qua một giai đoạn, …), hãy gọi trực tiếp decompose_for_generation().

validate_environment

< >

( *args**kwargs )

Kiểm tra required_packages đã được cài đặt và cảnh báo khi có sự lệch phiên bản so với tested_versions.

DynamoExporter

lớp transformers.exporters.DynamoExporter

< >

( )

Trình xuất chuyển đổi PreTrainedModel thành ExportedProgram.

Ví dụ:

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

lớp transformers.exporters.OnnxExporter

< >

( )

Trình xuất chuyển đổi PreTrainedModel thành ONNXProgram của ONNX.

Ví dụ:

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

lớp transformers.exporters.ExecutorchExporter

< >

( )

Trình xuất chuyển đổi PreTrainedModel thành ExecutorchProgramManager của ExecuTorch.

Ví dụ:

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

Xuất mô hình sang ExecuTorch, áp dụng chuẩn bị backend và vá torch op.

DynamoConfig

lớp 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 )

Tham số

  • dynamic (bool, optional, mặc định là False) — Có xuất với các hình dạng động (symbolic) hay không. Khi True và dynamic_shapes không được đặt, tất cả các chiều tensor sẽ được đặt thành Dim.AUTO một cách tự động.
  • strict (bool, tuỳ chọn, mặc định là False) — Có bật chế độ nghiêm ngặt trong torch.export hay không. Chạy quá trình truy vết biểu tượng đầy đủ và bắt được nhiều lỗi hơn, nhưng chậm hơn và dễ thất bại hơn trên các mô hình phức tạp.
  • dynamic_shapes (dict[str, Any], optional) — Quy định hình dạng động cụ thể cho từng đầu vào được truyền vào torch.export. Có ưu tiên cao hơn dynamic.
  • prefer_deferred_runtime_asserts_over_guards (bool, optional, mặc định là False) — Khi True, các guard hình dạng phụ thuộc vào dữ liệu sẽ được phát ra dưới dạng runtime asserts trong đồ thị đã xuất thay vì khiến quá trình xuất thất bại tại thời điểm trace nếu guard không được giữ nguyên trên toàn bộ phạm vi hình dạng biểu tượng. Hầu hết các LLM transformer cần đặt giá trị này thành True khi sử dụng các ràng buộc Dim(min=, max=) chi tiết. Không cần thiết khi dùng dynamic=True / Dim.AUTO, nơi torch.export suy luận các quan hệ hình dạng thay vì kiểm chứng chúng với các ràng buộc do người dùng khai báo.
  • quantizer ([~exporters.quantizers.ExportQuantizer], optional) — Lượng tử hóa sau huấn luyện được áp dụng trong quá trình xuất: [~exporters.quantizers.PT2EQuantizer] hoặc [~exporters.quantizers.NNCFTorchFXQuantizer] trên đồ thị FX cho mọi backend, [~exporters.quantizers.OnnxRuntimeQuantizer] trên mô hình ONNX đã chuyển đổi, hoặc [~exporters.quantizers.NNCFOpenVINOQuantizer] / [~exporters.quantizers.NNCFOnnxQuantizer] trên mô hình OpenVINO / ONNX đã chuyển đổi.

Lớp cấu hình để xuất mô hình thông qua torch.export.

OnnxConfig

lớp 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 )

Tham số

  • output_path (str hoặc PathLike, tùy chọn) — Đường dẫn đầu ra cho tệp .onnx. Khi None (mặc định), mô hình được xuất sẽ được giữ trong bộ nhớ dưới dạng ONNXProgram và không được ghi xuống đĩa.
  • opset_version (int, tùy chọn) — Phiên bản opset ONNX cần nhắm tới. Mặc định là phiên bản opset mới nhất được hỗ trợ bởi phiên bản onnxscript đã cài đặt.
  • external_data (bool, tùy chọn, mặc định là True) — Lưu các tensor trọng lượng lớn trong một tệp phụ .onnx_data riêng biệt thay vì nhúng chúng vào protobuf. Bắt buộc đối với các mô hình có trọng lượng vượt quá giới hạn 2 GB của protobuf.
  • optimize (bool, tùy chọn, mặc định là True) — Chạy các bước tối ưu hóa của onnxscript (gấp hằng số, loại bỏ mã chết, …) trên đồ thị đã xuất. Tắt đối với các mô hình gặp lỗi của trình tối ưu hóa onnxscript ở thượng nguồn.
  • export_params (bool, tùy chọn, mặc định là True) — Nhúng trọng số mô hình vào đồ thị ONNX. Đặt thành False để xuất một đồ thị không có trọng số (trọng số phải được cung cấp khi chạy).
  • keep_initializers_as_inputs (bool, tùy chọn, mặc định là False) — Hiển thị các bộ khởi tạo trọng số dưới dạng các đầu vào đồ thị rõ ràng. Bắt buộc đối với một số runtime ONNX cũ hơn (opset < 9).

Lớp cấu hình để xuất mô hình sang ONNX thông qua torch.onnx.export.

Kế thừa tất cả các trường từ DynamoConfig (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

ExecutorchConfig

lớp 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 )

Tham số

  • backend (str, tùy chọn, mặc định là "xnnpack") — Backend ExecuTorch đích. Các giá trị được hỗ trợ:
    • "xnnpack" — suy luận CPU thông qua thư viện XNNPACK (mặc định; chạy ở mọi nơi).
    • "cuda" — suy luận GPU thông qua backend CUDA của ExecuTorch.
    • "mlx" — suy luận GPU thông qua backend ExecuTorch MLX trên Apple Silicon.
  • alloc_graph_input (bool, tuỳ chọn, mặc định là True) — Xác định xem bước lập kế hoạch bộ nhớ có dành vùng nhớ arena cho các đầu vào của đồ thị hay không. Khi False, thời gian chạy sẽ sử dụng trực tiếp các bộ đệm đầu vào do người gọi cung cấp thay vì sao chép vào arena — do đó, một thao tác USER_INPUT_MUTATION tại chỗ (ví dụ: ghi vào StaticCache) sẽ được thực hiện trên tensor của người gọi thay vì trên bản sao trong arena.
  • alloc_graph_output (bool, tuỳ chọn, mặc định là True) — Xác định xem bước lập kế hoạch bộ nhớ có dành trước bộ nhớ arena cho các đầu ra của đồ thị hay không. Khi False, người gọi phải liên kết các bộ đệm đầu ra vào thời điểm thực thi (Method::set_output_data_ptr); việc liên kết một đầu ra với bộ đệm của đầu vào đã bị thay đổi sẽ tránh được vòng lặp sao chép ra ngoài.
  • alloc_mutable_buffers (bool, tuỳ chọn, mặc định là True) — Xác định xem bước lập kế hoạch bộ nhớ có dành vùng nhớ arena cho các bộ đệm có thể thay đổi (trạng thái nằm trong mô hình) hay không. Giá trị này được truyền qua cho MemoryPlanningPass.

Lớp cấu hình để xuất mô hình sang định dạng ExecuTorch.

Kế thừa tất cả các trường từ DynamoConfig (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

OpenVINOConfig

lớp 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 )

Tham số

  • output_path (str hoặc PathLike, tùy chọn) — Đường dẫn đầu ra cho tệp .xml (tệp .bin tương ứng được ghi cùng vị trí). Khi None (mặc định), mô hình đã chuyển đổi sẽ được giữ trong bộ nhớ dưới dạng openvino.Model.
  • compress_to_fp16 (bool, optional, mặc định là True) — Nén trọng số dạng số dấu phẩy động sang FP16 khi lưu — giảm một nửa kích thước trên đĩa với tác động không đáng kể đến độ chính xác trên hầu hết các mô hình. Chỉ được áp dụng khi output_path được đặt.
  • 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.

Lớp cấu hình để xuất mô hình sang OpenVINO IR thông qua openvino.convert_model.

Kế thừa tất cả các trường từ [DynamoConfig] (dynamic, strict, dynamic_shapes, prefer_deferred_runtime_asserts_over_guards).

Bộ lượng tử hóa

lớp transformers.exporters.ExportQuantizer

< >

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

Tham số

  • calibration_dataset (Iterable[dict], tùy chọn) — Các dict đầu vào mà bộ lượng tử hóa dùng để hiệu chuẩn: một danh sách, hoặc một DataLoader có các batch được collate thành đầu vào của model. Đối với ~HfExporter.export_for_generation, chúng là các kwargs của generate, được thu thập thành một tập hiệu chuẩn cho mỗi thành phần. Khi None, một bộ lượng tử hóa cần dữ liệu sẽ hiệu chuẩn trên các đầu vào mẫu của chính quá trình xuất, kèm theo một cảnh báo.

Lớp cơ sở cho các bộ lượng tử hóa sau huấn luyện được áp dụng trong quá trình xuất.

Bộ lượng tử hóa khai báo các định dạng xuất mà nó hỗ trợ và các gói cần thiết (kèm theo các phiên bản đã được kiểm thử, tương tự như các bộ xuất) cũng như việc nó lượng tử hóa đồ thị FX của torch.export trước bất kỳ bước chuyển đổi nào (để mọi backend đều nhận kết quả) hay lượng tử hóa mô hình mà một backend chuyển đổi nó thành (onnx_ir.Model, openvino.Model). Bộ xuất xác thực nó với quá trình xuất ngay từ đầu, sau đó gọi ~ExportQuantizer.quantize với mô hình đó và các đầu vào mẫu của quá trình xuất. Hãy kế thừa lớp này và triển khai quantize để thêm một phương pháp lượng tử hóa mới; một CalibrationSet ánh xạ các mẫu hiệu chuẩn sang các đầu vào của chính mô hình.

quantize

< >

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

Lượng tử hóa model (đồ thị FX nếu quantizes_fx_graph, ngược lại là model backend) và trả về kết quả, được hiệu chuẩn trên calibration_dataset, hoặc trên sample_inputs của bản xuất khi không có bộ dữ liệu hiệu chuẩn.

validate_environment

< >

( export_format: ExportFormat )

Ném lỗi nếu quantizer này không thể chạy trên export export_format, hoặc một gói cần thiết bị thiếu hoặc quá cũ; cảnh báo khi một gói khác với phiên bản đã được kiểm thử.

with_calibration

< >

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

Một bản sao của bộ lượng tử hóa này, được hiệu chuẩn trên calibration_dataset.

lớp transformers.exporters.quantizers.CalibrationSet

< >

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

Xem lại có thể lặp lại các mẫu hiệu chuẩn dưới dạng đầu vào của mô hình.

Các mẫu là calibration_dataset của bộ lượng tử hóa, hoặc chính sample_inputs của bản xuất (kèm một cảnh báo, một lần duy nhất khi chúng được đọc) nếu không có bộ lượng tử hóa. Chúng có thể là bất kỳ ánh xạ nào, chẳng hạn như BatchEncoding của bộ mã hóa. transform ánh xạ từng mẫu forward-kwarg thành những gì mô hình đã lượng tử hóa nhận vào (các kwargs được theo dõi, các feed ONNX, các feed cổng OpenVINO), một cách lười biếng, từng mẫu một, trong mỗi lượt chạy.

lớp transformers.exporters.PT2EQuantizer

< >

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

Tham số

  • quantizer (torchao.quantization.pt2e.quantizer.Quantizer) — Bộ lượng tử hóa PT2E dùng để chú thích đồ thị. Các toán tử lượng tử hóa/giải lượng tử hóa của nó phải là những toán tử được backend đích hỗ trợ: X86InductorQuantizer cho inductor, ONNX (QDQ) hoặc OpenVINO, XNNPACKQuantizer cho ExecuTorch.
  • calibration_dataset (Iterable[dict], tùy chọn) — Các dict đầu vào mà các observer dùng để hiệu chuẩn (xem ExportQuantizer), mỗi dict tương ứng với một lần forward. Để hiệu chuẩn trên các batch, hãy truyền một DataLoader gộp các mẫu thành các dict đầu vào dạng batch thay vì một danh sách các mẫu đơn lẻ.

Thực hiện lượng hóa đồ thị FX bằng lượng hóa PyTorch 2 Export (PT2E): prepare_pt2e chèn các observer, tập hiệu chuẩn điều khiển chúng, và convert_pt2e thay thế chúng bằng các toán tử quantize/dequantize. Hoạt động với mọi backend xuất.

Ví dụ:

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

lớp transformers.exporters.OnnxRuntimeQuantizer

< >

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

Lượng tử hóa mô hình ONNX đã chuyển đổi bằng các công cụ riêng của ONNX Runtime (onnxruntime.quantization): quantize_static với OnnxRuntimeStaticConfig (mặc định), hoặc quantize_dynamic với OnnxRuntimeDynamicConfig.

Ví dụ:

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

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

lớp 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 )

Các tham số của onnxruntime.quantization.quantize_static: kích hoạt và trọng số int8 (mặc định là QDQ), được hiệu chuẩn trên calibration_dataset của bộ lượng tử hóa. Một trường được đặt thành None sẽ giữ nguyên giá trị mặc định của ONNX Runtime. Xem quantize_static cho từng tham số.

lớp 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 )

Các tham số của onnxruntime.quantization.quantize_dynamic: trọng số int8, kích hoạt được lượng tử hóa khi chạy, không hiệu chuẩn. Một trường được đặt thành None sẽ giữ nguyên giá trị mặc định của ONNX Runtime. Xem quantize_dynamic cho từng tham số.

lớp transformers.exporters.NNCFOpenVINOQuantizer

< >

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

Thực hiện lượng tử hóa mô hình OpenVINO đã chuyển đổi bằng NNCF: nncf.quantize với NNCFQuantizationConfig (mặc định), hoặc nncf.compress_weights với NNCFWeightCompressionConfig.

Ví dụ:

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

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

lớp transformers.exporters.NNCFOnnxQuantizer

< >

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

Thực hiện lượng tử hóa mô hình ONNX đã chuyển đổi bằng NNCF thông qua backend ONNX của nó: nncf.quantize với NNCFQuantizationConfig (mặc định, int8 QDQ), hoặc nncf.compress_weights với NNCFWeightCompressionConfig (int4 dưới dạng MatMulNBits của ONNX Runtime).

Ví dụ:

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

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

lớp transformers.exporters.NNCFTorchFXQuantizer

< >

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

Lượng tử hóa đồ thị FX của torch.export bằng NNCF thông qua backend TorchFX của nó: nncf.quantize với NNCFQuantizationConfig (mặc định, các op quantize/dequantize), hoặc nncf.compress_weights với NNCFWeightCompressionConfig. Giống như PT2EQuantizer, nó chạy trước bất kỳ bước chuyển đổi nào, nên mọi backend đều nhận kết quả của nó. ExecuTorch chỉ hạ thấp kết quả weight-only: XNNPACK không ủy quyền cho các op quantize/dequantize, và ExecuTorch không có kernel cho chúng.

Ví dụ:

>>> from transformers.exporters import DynamoConfig, NNCFTorchFXQuantizer

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

lớp 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 )

Các tham số của nncf.quantize: kích hoạt và trọng số int8, được hiệu chuẩn trên calibration_dataset của bộ lượng tử hóa. Một trường được đặt thành None sẽ giữ nguyên giá trị mặc định của NNCF, ngoại trừ model_type, có giá trị mặc định là nncf.ModelType.TRANSFORMER. Xem nncf.quantize cho từng tham số.

lớp 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 )

Các tham số của nncf.compress_weights: int8 hoặc int4 chỉ cho trọng số, với các phương pháp nhận thức dữ liệu (AWQ, ước lượng tỷ lệ, GPTQ) cho các chế độ int4. Các chế độ int8 không cần dữ liệu; các chế độ khác hiệu chuẩn trên calibration_dataset của bộ lượng tử hóa. gptq và lora_correction chỉ dành cho OpenVINO. Một trường được đặt thành None sẽ giữ nguyên giá trị mặc định của NNCF. Xem nncf.compress_weights cho từng tham số.

Công cụ tiện ích

Các hàm cấp thấp hơn hỗ trợ export_for_generation, hữu ích khi bạn cần can thiệp giữa việc phân rã mô hình và xuất từng thành phần.

transformers.exporters.utils.get_leaf_tensors

< >

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

Tham số

  • obj (Any) — Một tensor, dataclass, dict, list, tuple, hoặc bất kỳ sự lồng nhau nào của chúng.

Trả về

dict[str, torch.Tensor]

Ánh xạ phẳng từ các chuỗi đường dẫn có dấu chấm sang các tensor.

Lấy đệ quy tất cả các tensor lá từ một cấu trúc có thể lồng nhau.

transformers.exporters.utils.prepare_for_export

< >

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

Cấu hình model và inputs để xuất. Thay đổi cả model và inputs tại chỗ, trả về (model, inputs, output_flags) trong đó output_flags chứa các giá trị đã được lấy ra từ inputs cho use_cache, return_dict, v.v. (để được áp dụng một cách có thể đảo ngược lên model.config bởi patch_model_config trong quá trình trace).

  • Loại bỏ các đầu vào nhãn (labels, future_values) — không hỗ trợ tính toán loss.
  • Lấy các cờ đầu ra (use_cache, return_dict, …) ra khỏi inputs để chúng không xuất hiện dưới dạng kwargs được theo dõi; các giá trị này được trả về để khối trace áp dụng lên model.config.
  • Tiền xử lý các tham số kwargs của thị giác/âm thanh phụ thuộc vào dữ liệu đã được đăng ký thông qua @register_export_input_preparer và ghi chúng vào inputs.
  • Chuyển đổi các tensor đầu vào để khớp với dtype / device của mô hình.

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

Trả về

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

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

Chạy model.generate() và ghi nhận các đầu vào của prefill và decode.

Tái sử dụng toàn bộ cơ chế sinh để mọi kiến trúc (chỉ có decoder, SSM, encoder-decoder, đa phương thức, …) đều nhận được các đầu vào chính xác mà không cần cài đặt lại vòng lặp.

generation_config được chuyển tiếp đến generate() (mặc định là cấu hình của chính model), do đó các đầu vào được ghi lại sẽ sử dụng bất kỳ cache nào mà generate() sẽ xây dựng. Truyền một cấu hình có cache_implementation="static" và max_cache_len=N để ghi lại một cache có kích thước tĩnh trong các đầu vào decode — nền tảng cho việc xuất (export) cache tĩnh. max_cache_len xác định kích thước cache độc lập với quá trình ghi lại, nên bản decode được xuất sẽ nhận một cache cố định [..., N, ...] thay vì một cache tăng dần.

Khi multi_token_decode, thành phần decode được bắt giữ dưới dạng multi-token decode — hai bước decode liên tiếp được gộp lại (xem _merge_decode_calls) để trục query-sequence của nó vẫn ở dạng biểu tượng (một bước decode single-token sẽ đặc biệt hóa trục đó thành 1). Sau đó, nó xử lý cả trường hợp một token (giải mã thông thường) và nhiều token (tiếp nối từ quá khứ, hoặc prefill thông thường khi cache trống). Ngược lại, decode là bước decode single-token cổ điển.

transformers.exporters.utils.decompose_multimodal

< >

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

Trả về

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

Một mục name: (module, inputs) cho mỗi submodule được phát hiện (bộ mã hóa hình ảnh/âm thanh, bộ chiếu, mô hình ngôn ngữ, lm_head).

Gây ra

ValueError

  • ValueError — nếu không tìm thấy các module con đa phương thức đã biết nào trên model.

Thu thập đầu vào cho từng mô-đun con đa phương thức thông qua một lần truyền tiến duy nhất.

Phát hiện tất cả các module con đa phương thức đã biết theo tên thuộc tính (vision tower, projector, language model, lm_head, …) và ghi lại các tham số kwargs của forward trong một lần gọi model(**inputs).

Mỗi submodule được trả về dưới dạng một mục name: (module, inputs) riêng biệt để xuất độc lập. Bước hợp nhất token (ví dụ masked_scatter cho các model đa phương thức) được cố ý giữ bên ngoài các đồ thị đã xuất — trách nhiệm của người gọi là lắp ráp inputs_embeds từ đầu ra của encoder trước khi chạy decoder.

transformers.exporters.utils.decompose_for_generation

< >

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

Tham số

  • model — Mô hình tạo sinh. Phải hỗ trợ model.generate(**inputs).
  • inputs — Generate kwargs — những gì bạn sẽ truyền vào model.generate(**inputs).
  • generation_config — Tùy chọn GenerationConfig được chuyển đến generate() trong quá trình capture. Truyền một cấu hình có cache_implementation="static" + max_cache_len=N để xuất đối với cache có kích thước tĩnh (xem decompose_prefill_decode).
  • multi_token_decode — Khi True, bắt (capture) thành phần decode dưới dạng multi-token decode (trục query sequence động: nhiều token cùng lúc — tiếp nối từ quá khứ, hoặc prefill thông thường khi cache trống); single-token decode không thể giữ ở chế độ động (xem decompose_prefill_decode).

Trả về

`{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.

Phân tách một mô hình sinh thành thành các cặp (model, forward_inputs) có thể xuất độc lập.

Chạy decompose_prefill_decode để thu thập các kwargs của forward cho prefill và decode từ một model.generate(**inputs, max_new_tokens=2) thực tế. Nếu prefill là đa phương thức (theo is_multimodal), nó sẽ tách thêm thành một mục cho mỗi submodule (encoder thị giác/âm thanh, projector, mô hình ngôn ngữ, lm_head) thông qua decompose_multimodal.

transformers.exporters.utils.is_multimodal

< >

( model: PreTrainedModel | torch.nn.Module )

Trả về True nếu mô hình là đa phương thức với các bộ mã hóa phương thức và một mô hình ngôn ngữ.

Một mô hình không phải là PreTrainedModel (ví dụ: một nn.Module thuần túy) không có các bộ truy cập chuẩn get_encoder/get_decoder và rõ ràng không phải là đa phương thức, do đó nó sẽ trả về False ngay lập tức.

Update on GitHub