Skip to content

executorch_xnnpack

executorch_xnnpack

ExecuTorch XNNPACK deployment backend for .pte artifacts, to deploy policies on mobile Arm and x86 CPUs, ref. https://docs.pytorch.org/executorch/main/backends/xnnpack/xnnpack-overview.html.

ExecutorchXNNPACKBackend

ExecutorchXNNPACKBackend(max_batch_size)

Bases: DeploymentBackend

Backend that lowers exported programs to ExecuTorch XNNPACK.

Initialize XNNPACK deployment settings.

Parameters:

Name Type Description Default
max_batch_size int

Upper bound for dynamic batch execution in the serialized ExecuTorch program.

required
Source code in src/versatil/post_training_compression/deployment_backends/executorch_xnnpack.py
def __init__(self, max_batch_size: int) -> None:
    """Initialize XNNPACK deployment settings.

    Args:
        max_batch_size: Upper bound for dynamic batch execution in the
            serialized ExecuTorch program.
    """
    if max_batch_size < 1:
        raise ValueError("max_batch_size must be >= 1.")
    self.max_batch_size = max_batch_size

export

export(model, example_inputs)

Lower a PyTorch module into an ExecuTorch .pte buffer.

Source code in src/versatil/post_training_compression/deployment_backends/executorch_xnnpack.py
def export(
    self,
    model: nn.Module,
    example_inputs: tuple[torch.Tensor, ...],
) -> DeploymentArtifact:
    """Lower a PyTorch module into an ExecuTorch .pte buffer."""
    exported_program = _export_with_dynamic_batch(
        model=model,
        example_inputs=example_inputs,
        max_batch_size=self.max_batch_size,
    )
    model_bytes = self._lower_to_pte_buffer(exported_program=exported_program)
    return DeploymentArtifact(
        converted_model=None,
        example_inputs=example_inputs,
        model_filename=self.model_filename,
        artifact_format=self.artifact_format,
        backend_name=self.name,
        model_bytes=model_bytes,
    )