<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def model_definition_factory(base_model_definition, **kwargs):
 """ Provides an iterator over passed-in configuration values, allowing for easy exploration of models. Parameters: ___________ base_model_definition: The base `ModelDefinition` to augment kwargs: Can be any keyword accepted by `ModelDefinition`. Values should be iterables. """

    if not kwargs:
        yield config
    else:
        for param in kwargs:
            if not hasattr(base_model_definition, param):
                raise ValueError("'%s' is not a valid configuration parameter" % param)

        for raw_params in itertools.product(*kwargs.values()):
            new_definition = copy.copy(base_model_definition)
            new_definition.update(dict(zip(kwargs.keys(), raw_params)))
            yield new_definition