What are the primary bottlenecks in distributed training over high-performance interconnects like InfiniBand or NVLink, and how do you mitigate them?