def to_dict()

in optimum/neuron/configuration_utils.py [0:0]


    def to_dict(self) -> Dict[str, Any]:
        """
        Serializes this instance to a Python dictionary.

        Returns:
            `Dict[str, Any]`: Dictionary of all the attributes that make up this configuration instance.
        """
        output = copy.deepcopy(self)

        serializable_types = (str, int, float, bool)

        def _to_dict(obj):
            if obj is None or isinstance(obj, serializable_types):
                return obj
            elif isinstance(obj, enum.Enum):
                return obj.value
            elif isinstance(obj, torch.Tensor):
                return obj.tolist()
            elif isinstance(obj, list):
                return [_to_dict(e) for e in obj]
            elif isinstance(obj, dict):
                return {_to_dict(k): _to_dict(v) for k, v in obj.items()}
            elif isinstance(obj, tuple):
                return str(tuple(_to_dict(e) for e in obj))
            elif isinstance(obj, torch.dtype):
                return str(obj).split(".")[1]
            else:
                as_dict = obj.__dict__
                return _to_dict(as_dict)

        output = _to_dict(output)

        # Add serialized key as it is required to identify the NeuronConfig class when deserializing the file
        cls = self.__class__
        _serialized_key = _KEY_FOR_NEURON_CONFIG.get(cls, None)
        if _serialized_key is None:
            raise ValueError(f"Unable to identify the serialized key for {cls.__name__}. Did you register it ?")
        output["_serialized_key"] = _serialized_key
        # Add optimum-neuron version to check compatibility
        output["optimum_neuron_version"] = __version__
        # Also add compiler version
        output["neuronxcc_version"] = get_neuronxcc_version()

        return output