inoryQwQ's picture
Upload folder using huggingface_hub
76aca0a verified
Raw
History Blame Contribute Delete
1.76 kB
# Sherpa Punctuation Inference Engine
#
# Uses pyaxengine's AxEngineExecutionProvider to run the compiled AXMODEL
# on AX650 NPU.
import os
from typing import Optional
import numpy as np
class PunctInference:
"""Inference wrapper for sherpa punct CT Transformer AXMODEL."""
def __init__(
self,
model_path: str,
provider: Optional[str] = None,
):
"""Initialize the inference engine.
Args:
model_path: Path to compiled model.axmodel.
provider: Execution provider (default: AxEngineExecutionProvider).
"""
if not os.path.exists(model_path):
raise FileNotFoundError(f"Model not found: {model_path}")
self.model_path = model_path
self.provider = provider or "AxEngineExecutionProvider"
self._session = None
def _create_session(self):
"""Create AX Engine inference session."""
import axengine
available = axengine.get_available_providers()
if self.provider in available:
return axengine.InferenceSession(
self.model_path,
providers=[self.provider],
)
return axengine.InferenceSession(
self.model_path,
providers=available,
)
def __call__(self, inputs: np.ndarray) -> np.ndarray:
"""Run inference.
Args:
inputs: (1, 64) int32 numpy array of token IDs.
Returns:
logits: (1, 64, 6) float32 numpy array.
"""
if self._session is None:
self._session = self._create_session()
input_name = self._session.get_inputs()[0].name
results = self._session.run(None, {input_name: inputs})
return results[0]