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