diffusers
                                
                                 diffusers copied to clipboard
                                
                                    diffusers copied to clipboard
                            
                            
                            
                        Handle `kwargs` and not serializable values as configuration attributes
Context: #655.
A kwargs argument was added to schedulers in https://github.com/huggingface/diffusers/commit/d7dcba4a130a2eeecd46fc1d2ed244f54fd2a8f6 just to display a deprecation warning. kwargs was interpreted as a configurable attribute, but it could not be serialized. This broke:
- Pipeline loading, via __repr__in the warning message.
- Pipeline saving.
We just added a quick fix, but there were other ideas to address it. @anton-l proposed the following in https://github.com/huggingface/diffusers/blob/534512bedb70ab6074fd4399a3ce15afc4394a37/src/diffusers/configuration_utils.py#L408
ignore = getattr(self, "ignore_for_config", [])
ignore.append("kwargs")
There is also another check in https://github.com/huggingface/diffusers/blob/534512bedb70ab6074fd4399a3ce15afc4394a37/src/diffusers/configuration_utils.py#L283
Perhaps we should do this in a more general way and prevent accepting attributes that cannot be serialized, informing the user about the problem. A similar thing happened for dtype and is bound to happen again.
My first approach would be to attempt a JSON serialization in register_to_config and go from there, but I'm not fully familiar with the details of the code. Any thoughts?
I think the solution we have for now is good enough actually - what do you think @pcuenca ?
This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.
Please note that issues that do not follow the contributing guidelines are likely to be ignored.
Sounds good.