in optimum/neuron/configuration_utils.py [0:0]
def from_dict(cls, config_dict: Dict[str, Any]) -> "NeuronConfig":
"""
Instantiates a [`NeuronConfig`] from a Python dictionary of parameters.
Args:
config_dict (`Dict[str, Any]`):
Dictionary that will be used to instantiate the configuration object.
Returns:
[`NeuronConfig`]: The configuration object instantiated from those parameters.
"""
for key in ["optimum_neuron_version", "_serialized_key", "neuronxcc_version"]:
if key not in config_dict:
raise ValueError(f"Invalid neuron configuration: missing mandatory {key} attribute.")
# Check versions
version = config_dict.pop("optimum_neuron_version")
if version != __version__:
raise ValueError(
f"This neuron configuration file was generated with optimum-neuron version {version}, but this version is {__version__}."
)
cfg_neuronxcc_version = config_dict.pop("neuronxcc_version")
neuronxcc_version = get_neuronxcc_version()
if cfg_neuronxcc_version != neuronxcc_version:
raise RuntimeError(
"This neuron configuration corresponds to a model exported using version"
f" {cfg_neuronxcc_version} of the neuronxcc compiler, but {neuronxcc_version} is installed."
)
# Retrieve neuron config class from serialized key
_serialized_key = config_dict.pop("_serialized_key")
if cls is NeuronConfig:
# Force the registration of the neuron configuration classes
from .models import neuron_config # noqa F401
# We need to identify the actual neuron configuration class for this serialized key
if _serialized_key is None:
raise ValueError("Neuron configuration is invalid: unable to identify the serialized key")
cls = _NEURON_CONFIG_FOR_KEY.get(_serialized_key, None)
if cls is None:
raise ValueError(f"No neuron configuration registered for the {_serialized_key} serialized key")
else:
assert _KEY_FOR_NEURON_CONFIG[cls] == _serialized_key
config = cls(**{**config_dict})
logger.info(f"Neuron config {config}")
return config