Distributed Training Module

I think a good idea would be to implement training functions that allow you to specify your model, your optimizer, and your dataset object (and whatever else), then allow you to do a distributed single/multi-node optimization…this would be nice because it would prevent boilerplate code that may come with working with large datasets and make the framework more attractive for practical use. Does anyone know of something related to this that has already been done?