Weight for Robustness: A Comprehensive Approach towards Optimal Fault-Tolerant Asynchronous ML