Data Exchange Object (DXO)

The Data Exchange Format (nvflare.apis.dxo.DXO) in NVIDIA FLARE standardizes the data passed between the communicating parties.

class DXO(object):
    def __init__(self, data_kind: str, data: dict, meta: dict = None):
        """Init the DXO.

        The Data Exchange Object standardizes the data passed between communicating parties.

        Args:
            data_kind: kind of data
            data: clear-text data
            meta: None or dict for any additional properties
        """
        if data is None:
            data = {}
        if meta is None:
            meta = {}

        self.data_kind = data_kind
        self.data = data
        self.meta = meta

        err = self.validate()
        if err:
            raise ValueError("invalid DXO: {}".format(err))

data_kind keeps track of the kind of data for example “WEIGHTS” or “WEIGHT_DIFF”.

meta is a dict that can contain additional properties.

The method to_shareable() produces a Shareable, and a DXO can be retrieved from a Shareable with nvflare.apis.dxo.from_shareable().

It is recommended to use DXO to maintain consistency in managing the data throughout the FL system.