Improve DLRM utilization on CUDA (#534)
Summary:
Increase the complexity of the DLRM benchmark to improve
the utilization on GPU. DLRM's structure needs to be more complex
for the random inputs to be larger, this improves the profile
collected on the benchmark, and matches closer to real world
examples.
## Traces Collected
Here is the trace collected before any modifications on A100:

Here is the eval trace collected using settings described in the paper on A100:
```
--arch-embedding-size=1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000 --arch-sparse-feature-size=64 --arch-mlp-bot=512-512-64 --arch-mlp-top=1024-1024-1024-1 --mini-batch-size=2048 --num-batches=1000 --num-indices-per-lookup=100
```

Here is the eval trace upon further tweaking the complexity beyond the paper on A100:
```
--arch-embedding-size=1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000-1000000 --arch-sparse-feature-size=128 --arch-mlp-bot=1024-1024-1024-1024-128 --arch-mlp-top=2048-2048-2048-2048-2048-2048-2048-1 --mini-batch-size=2048 --num-batches=1000 --num-indices-per-lookup=100
```

Same arguments on Tesla T4:

Note: the DLRM forward pass splits into several sections in the image:
- Bottom MLP (dense features - green)
- EmbeddingBag (sparse features - blue)
- Interact Features (both dense and sparse - too small to see)
- Top MLP (probability of a click - green)
## Idleness Evaluation
To increase utilization of the DLRM model, it is not a batch size search, but instead a model structural search. Increasing the model complexity will increase the GPU utilization, since the random data loader is dependent on the model. Therefore, the more layers and features in each bottom, embedding and top models, the better the GPU utilization.
Pull Request resolved: https://github.com/pytorch/benchmark/pull/534
Reviewed By: xuzhao9
Differential Revision: D32036232
Pulled By: aaronenyeshi
fbshipit-source-id: 2135b8d9f747d742609eccb455a0dca83f140493