Tally: Non-Intrusive Performance Isolation for Concurrent Deep Learning Workloads
<|reference_start|>Tally: Non-Intrusive Performance Isolation for Concurrent Deep Learning Workloads: GPU underutilization is a significant concern in many production deep learning clusters, leading to prolonged job queues and increased operational expenses. A promising solution to this inefficiency is GPU sharing, which improves resource utilization by allowing multiple workloads to execute concurrently on a single GPU. However, the practical deployment of GPU sharing in production settings faces critical obstacles due to the limitations of existing mechanisms, such as high integration costs, inadequate performance isolation, and limited application compatibility. To address these issues, we introduce \emph{Tally}, a non-intrusive GPU sharing mechanism that provides robust performance isolation and comprehensive workload compatibility. Tally operates as a virtualization layer between applications and GPUs, transparently orchestrating the device execution of concurrent workloads. The key to Tally's robust performance isolation capability lies in its fine-grained thread-block level GPU kernel scheduling strategy, which allows the system to effectively mitigate interference caused by workload co-execution. Our evaluation, conducted on a diverse set of workload combinations, demonstrates that Tally on average incurs a mere $7.2\%$ overhead on the $99^{th}$-percentile latency of high-priority inference tasks when executed concurrently with best-effort training workloads compared to $188.9\%$ overhead exhibited by the state-of-the-art GPU sharing systems like TGS, while achieving over $80\%$ of TGS's system throughput.<|reference_end|>
@article{zhao2024tally:,
    title={Tally: Non-Intrusive Performance Isolation for Concurrent Deep Learning
  Workloads},
    author={Wei Zhao, Anand Jayarajan, Gennady Pekhimenko},
    journal={arXiv preprint arXiv:2410.07381},
    year={2024},
    archivePrefix={arXiv},
    eprint={2410.07381},
    primaryClass={cs.DC}
}