title: How to run single-node, multi-device data-parallel training with Keras?
body: <p>Keras used to feature a <code>multi_gpu_model</code> that made it very easy to do data-parallel training on a single node with multiple GPUs. I see that this function will unfortunately be deprecated - <a href="https://www.tensorflow.org/api_docs/python/tf/keras/utils/multi_gpu_model" rel="nofollow noreferrer">its doc</a> saying that <em>"Warning: THIS FUNCTION IS DEPRECATED. It will be removed after 2020-04-01. Instructions for updating: Use tf.distribute.MirroredStrategy instead."</em></p>
  
  <p>This warning points to the <a href="https://www.tensorflow.org/api_docs/python/tf/distribute/MirroredStrategy" rel="nofollow noreferrer"><code>tf.distributed.MirroredStrategy</code></a> page which shows something much more verbose that what Keras users are used to and with zero mention to keras. </p>
  
  <p>Hence the question: <strong>What is the compact and intuitive way to do single-node, multi-device data-parallel training with Keras, if any?</strong></p>
  
  <p>I'm looking for something as simple as <code>multi_gpu_model</code> was, or as intuitive as <a href="https://gluon.mxnet.io/chapter07_distributed-learning/multiple-gpus-gluon.html" rel="nofollow noreferrer">gluon's multi-device SGD is</a></p>