morpheus.messages.multi_tensor_message.MultiTensorMessage

class MultiTensorMessage(*, meta, mess_offset=0, mess_count=- 1, memory, offset=0, count=- 1, id_tensor_name='seq_ids')[source]

Bases: morpheus.messages.multi_message.MultiMessage

This class contains several inference responses as well as the cooresponding message metadata.

Parameters:
memoryTensorMemory

Container holding generic tensor data in cupy arrays

offsetint

Offset of each message into the TensorMemory block.

countint

Number of rows in the TensorMemory block.

Attributes:
id

Returns ID column values from morpheus.pipeline.messages.MessageMeta.df as list.

id_col

Returns ID column values from morpheus.pipeline.messages.MessageMeta.df.

tensors

Get tensors stored in the TensorMemory container sliced according to offset and count.

timestamp

Returns timestamp column values from morpheus.messages.MessageMeta.df as list.

Methods

copy_meta_ranges(ranges[, mask])

Perform a copy of the underlying dataframe for the given ranges of rows.

copy_ranges(ranges)

Perform a copy of the current message, dataframe and tensors for the given ranges of rows.

copy_tensor_ranges(ranges[, mask])

Perform a copy of the underlying tensor tensors for the given ranges of rows.

from_message(message, *[, meta, ...])

Creates a new instance of a derived class from MultiMessage using an existing message as the template.

get_id_tensor()

Get the tensor that holds message ID information.

get_meta([columns])

Return column values from morpheus.pipeline.messages.MessageMeta.df.

get_meta_list([col_name])

Return a column values from morpheus.messages.MessageMeta.df as a list.

get_slice(start, stop)

Perform a slice of the current message from start:stop (excluding stop)

get_tensor(name)

Get tensor stored in the TensorMemory container.

set_meta(columns, value)

Set column values to morpheus.pipelines.messages.MessageMeta.df.

copy_meta_ranges(ranges, mask=None)[source]

Perform a copy of the underlying dataframe for the given ranges of rows.

Parameters:
rangestyping.List[typing.Tuple[int, int]]

Rows to include in the copy in the form of [(`start_row, stop_row),…]` The stop_row isn’t included. For example to copy rows 1-2 & 5-7 ranges=[(1, 3), (5, 8)]

masktyping.Union[None, cupy.ndarray, numpy.ndarray]

Optionally specify rows as a cupy array (when using cudf Dataframes) or a numpy array (when using pandas Dataframes) of booleans. When not-None ranges will be ignored. This is useful as an optimization as this avoids needing to generate the mask on it’s own.

Returns:
Dataframe

copy_ranges(ranges)[source]

Perform a copy of the current message, dataframe and tensors for the given ranges of rows.

Parameters:
rangestyping.List[typing.Tuple[int, int]]

Rows to include in the copy in the form of [(`start_row, stop_row),…]` The stop_row isn’t included. For example to copy rows 1-2 & 5-7 ranges=[(1, 3), (5, 8)]

——-

`MultiTensorMessage`

copy_tensor_ranges(ranges, mask=None)[source]

Perform a copy of the underlying tensor tensors for the given ranges of rows.

Parameters:
rangestyping.List[typing.Tuple[int, int]]

Rows to include in the copy in the form of [(`start_row, stop_row),…]` The stop_row isn’t included. For example to copy rows 1-2 & 5-7 ranges=[(1, 3), (5, 8)]

masktyping.Union[None, cupy.ndarray, numpy.ndarray]

Optionally specify rows as a cupy array (when using cudf Dataframes) or a numpy array (when using pandas Dataframes) of booleans. When not-None ranges will be ignored. This is useful as an optimization as this avoids needing to generate the mask on it’s own.

Returns:
typing.Dict[str, cupy.ndarray]

classmethod from_message(message, *, meta=None, mess_offset=- 1, mess_count=- 1, memory=None, offset=- 1, count=- 1, **kwargs)[source]

Creates a new instance of a derived class from MultiMessage using an existing message as the template. This is very useful when a new message needs to be created with a single change to an existing MessageMeta.

When creating the new message, all required arguments for the class specified by cls will be pulled from message unless otherwise specified in the kwargs. Special handling is performed depending on whether or not a new meta object is supplied. If one is supplied, the offset and count defaults will be 0 and meta.count respectively. Otherwise offset and count will be pulled from the input message.

Parameters:
clstyping.Type[Self]

The class to create

messageMultiMessage

An existing message to use as a template. Can be a base or derived from cls as long as all arguments can be pulled from message or proveded in kwargs

metaMessageMeta, optional

A new MessageMeta to use, by default None

mess_offsetint, optional

A new mess_offset to use, by default -1

mess_countint, optional

A new mess_count to use, by default -1

memoryTensorMemory, optional

A new TensorMemory to use. If supplied, offset and count default to 0 and memory.count respectively. By default None

offsetint, optional

A new offset to use, by default -1

countint, optional

A new count to use, by default -1

**kwargsdict

Keyword arguments to use when creating the new instance.

Returns:
Self

A new instance of type cls

Raises:
ValueError

If the incoming message is None

get_id_tensor()[source]

Get the tensor that holds message ID information. Equivalent to get_tensor(id_tensor_name)

Returns:
cupy.ndarray

Array containing the ID information

Raises:
KeyError

If self.id_tensor_name is not found in the tensors

get_meta(columns=None)[source]

Return column values from morpheus.pipeline.messages.MessageMeta.df.

Parameters:
columnstyping.Union[None, str, typing.List[str]]

Input column names. Returns all columns if None is specified. When a string is passed, a Series is returned. Otherwise a Dataframe is returned.

Returns:
Series or Dataframe

Column values from the dataframe.

get_meta_list(col_name=None)[source]

Return a column values from morpheus.messages.MessageMeta.df as a list.

Parameters:
col_namestr

Column name in the dataframe.

Returns:
List[str]

Column values from the dataframe.

get_slice(start, stop)[source]

Perform a slice of the current message from start:stop (excluding stop)

For example to slice from rows 1-3 use m.get_slice(1, 4). The returned MultiTensorMessage will contain references to the same underlying Dataframe and tensor tensors, and this calling this method is reletively low cost compared to MultiTensorMessage.copy_ranges

Parameters:
startint

Starting row of the slice

stopint

Stop of the slice

——-

`MultiTensorMessage`

get_tensor(name)[source]

Get tensor stored in the TensorMemory container.

Parameters:
namestr

tensor key name.

Returns:
cupy.ndarray

Inference tensor.

property id: List[int]

Returns ID column values from morpheus.pipeline.messages.MessageMeta.df as list.

Returns:
List[int]

ID column values from the dataframe as list.

property id_col

Returns ID column values from morpheus.pipeline.messages.MessageMeta.df.

Returns:
pandas.Series

ID column values from the dataframe.

id_tensor_name: ClassVar[str] = 'seq_ids'

Name of the tensor that correlates tensor rows to message IDs

required_tensors: ClassVar[List[str]] = []

The tensor names that are required for instantiation

set_meta(columns, value)[source]

Set column values to morpheus.pipelines.messages.MessageMeta.df.

Parameters:
columnstyping.Union[None, str, typing.List[str]]

Input column names. Sets the value for the corresponding column names. If None is specified, all columns will be used. If the column does not exist, a new one will be created.

valueAny

Value to apply to the specified columns. If a single value is passed, it will be broadcast to all rows. If a Series or Dataframe is passed, rows will be matched by index.

property tensors

Get tensors stored in the TensorMemory container sliced according to offset and count.

Returns:
cupy.ndarray

Inference tensors.

property timestamp: List[int]

Returns timestamp column values from morpheus.messages.MessageMeta.df as list.

Returns:
List[int]

Timestamp column values from the dataframe as list.

© Copyright 2023, NVIDIA. Last updated on Oct 12, 2023.