Module furiosa.runtime.furiosa_sdk_runtime.model
Model and its methods to access model metadata
Expand source code
"""Model and its methods to access model metadata"""
from abc import ABC, abstractmethod
from ctypes import c_void_p
from ._api import LIBNUX
from .tensor import TensorDesc, TensorArray
from ._util import list_to_dict
class Model(ABC):
"""NPU model binary compiled by Renegade compiler"""
@abstractmethod
def _get_model_ref(self) -> c_void_p:
"""
Returns a raw model pointer
:return: a raw pointer of a Model
"""
def input_num(self) -> int:
"""Number of input tensors of Model"""
return LIBNUX.nux_input_num(self._get_model_ref())
def output_num(self) -> int:
"""Number of output tensors of Model"""
return LIBNUX.nux_output_num(self._get_model_ref())
def input(self, idx) -> TensorDesc:
"""Return tensor description of i-th input tensor of Model"""
return TensorDesc(LIBNUX.nux_input_desc(self._get_model_ref(), idx))
def inputs(self) -> [TensorDesc]:
"""Tensor descriptions of all input tensors of Model"""
inputs = []
for idx in range(self.input_num()):
inputs.append(self.input(idx))
return inputs
def output(self, idx) -> TensorDesc:
"""Returns tensor description of i-th output tensor of Model"""
return TensorDesc(LIBNUX.nux_output_desc(self._get_model_ref(), idx))
def outputs(self) -> [TensorDesc]:
"""Tensor descriptions of all output tensors of Model"""
outputs = []
for idx in range(self.output_num()):
outputs.append(self.output(idx))
return outputs
def allocate_inputs(self) -> TensorArray:
"""Creates an array of input tensors with allocated buffers"""
return TensorArray(LIBNUX.nux_tensor_array_create_inputs(self._get_model_ref()),
self.inputs(), allocated=True)
def allocate_outputs(self) -> TensorArray:
"""Creates an array of output tensors with allocated buffers"""
return TensorArray(LIBNUX.nux_tensor_array_allocate_outputs(self._get_model_ref()),
self.outputs(), allocated=True)
def create_outputs(self) -> TensorArray:
"""Creates an array of output tensors without allocated buffers"""
return TensorArray(LIBNUX.nux_tensor_array_create_outputs(self._get_model_ref()),
self.outputs(), allocated=True)
def summary(self) -> str:
"""Returns the summary of this model"""
return "Inputs:\n{}\nOutputs:\n{}".format(
list_to_dict(self.inputs()).__repr__(), list_to_dict(self.outputs()).__repr__())
def print_summary(self):
"""Prints the summary of this model"""
print(self.summary())
Classes
class Model
-
NPU model binary compiled by Renegade compiler
Expand source code
class Model(ABC): """NPU model binary compiled by Renegade compiler""" @abstractmethod def _get_model_ref(self) -> c_void_p: """ Returns a raw model pointer :return: a raw pointer of a Model """ def input_num(self) -> int: """Number of input tensors of Model""" return LIBNUX.nux_input_num(self._get_model_ref()) def output_num(self) -> int: """Number of output tensors of Model""" return LIBNUX.nux_output_num(self._get_model_ref()) def input(self, idx) -> TensorDesc: """Return tensor description of i-th input tensor of Model""" return TensorDesc(LIBNUX.nux_input_desc(self._get_model_ref(), idx)) def inputs(self) -> [TensorDesc]: """Tensor descriptions of all input tensors of Model""" inputs = [] for idx in range(self.input_num()): inputs.append(self.input(idx)) return inputs def output(self, idx) -> TensorDesc: """Returns tensor description of i-th output tensor of Model""" return TensorDesc(LIBNUX.nux_output_desc(self._get_model_ref(), idx)) def outputs(self) -> [TensorDesc]: """Tensor descriptions of all output tensors of Model""" outputs = [] for idx in range(self.output_num()): outputs.append(self.output(idx)) return outputs def allocate_inputs(self) -> TensorArray: """Creates an array of input tensors with allocated buffers""" return TensorArray(LIBNUX.nux_tensor_array_create_inputs(self._get_model_ref()), self.inputs(), allocated=True) def allocate_outputs(self) -> TensorArray: """Creates an array of output tensors with allocated buffers""" return TensorArray(LIBNUX.nux_tensor_array_allocate_outputs(self._get_model_ref()), self.outputs(), allocated=True) def create_outputs(self) -> TensorArray: """Creates an array of output tensors without allocated buffers""" return TensorArray(LIBNUX.nux_tensor_array_create_outputs(self._get_model_ref()), self.outputs(), allocated=True) def summary(self) -> str: """Returns the summary of this model""" return "Inputs:\n{}\nOutputs:\n{}".format( list_to_dict(self.inputs()).__repr__(), list_to_dict(self.outputs()).__repr__()) def print_summary(self): """Prints the summary of this model""" print(self.summary())
Ancestors
- abc.ABC
Subclasses
Methods
def allocate_inputs(self) ‑> TensorArray
-
Creates an array of input tensors with allocated buffers
Expand source code
def allocate_inputs(self) -> TensorArray: """Creates an array of input tensors with allocated buffers""" return TensorArray(LIBNUX.nux_tensor_array_create_inputs(self._get_model_ref()), self.inputs(), allocated=True)
def allocate_outputs(self) ‑> TensorArray
-
Creates an array of output tensors with allocated buffers
Expand source code
def allocate_outputs(self) -> TensorArray: """Creates an array of output tensors with allocated buffers""" return TensorArray(LIBNUX.nux_tensor_array_allocate_outputs(self._get_model_ref()), self.outputs(), allocated=True)
def create_outputs(self) ‑> TensorArray
-
Creates an array of output tensors without allocated buffers
Expand source code
def create_outputs(self) -> TensorArray: """Creates an array of output tensors without allocated buffers""" return TensorArray(LIBNUX.nux_tensor_array_create_outputs(self._get_model_ref()), self.outputs(), allocated=True)
def input(self, idx) ‑> TensorDesc
-
Return tensor description of i-th input tensor of Model
Expand source code
def input(self, idx) -> TensorDesc: """Return tensor description of i-th input tensor of Model""" return TensorDesc(LIBNUX.nux_input_desc(self._get_model_ref(), idx))
def input_num(self) ‑> int
-
Number of input tensors of Model
Expand source code
def input_num(self) -> int: """Number of input tensors of Model""" return LIBNUX.nux_input_num(self._get_model_ref())
def inputs(self) ‑> [
TensorDesc'>] -
Tensor descriptions of all input tensors of Model
Expand source code
def inputs(self) -> [TensorDesc]: """Tensor descriptions of all input tensors of Model""" inputs = [] for idx in range(self.input_num()): inputs.append(self.input(idx)) return inputs
def output(self, idx) ‑> TensorDesc
-
Returns tensor description of i-th output tensor of Model
Expand source code
def output(self, idx) -> TensorDesc: """Returns tensor description of i-th output tensor of Model""" return TensorDesc(LIBNUX.nux_output_desc(self._get_model_ref(), idx))
def output_num(self) ‑> int
-
Number of output tensors of Model
Expand source code
def output_num(self) -> int: """Number of output tensors of Model""" return LIBNUX.nux_output_num(self._get_model_ref())
def outputs(self) ‑> [
TensorDesc'>] -
Tensor descriptions of all output tensors of Model
Expand source code
def outputs(self) -> [TensorDesc]: """Tensor descriptions of all output tensors of Model""" outputs = [] for idx in range(self.output_num()): outputs.append(self.output(idx)) return outputs
def print_summary(self)
-
Prints the summary of this model
Expand source code
def print_summary(self): """Prints the summary of this model""" print(self.summary())
def summary(self) ‑> str
-
Returns the summary of this model
Expand source code
def summary(self) -> str: """Returns the summary of this model""" return "Inputs:\n{}\nOutputs:\n{}".format( list_to_dict(self.inputs()).__repr__(), list_to_dict(self.outputs()).__repr__())