23.2  Sharded Data Parallelism at Scale