Asynchronous Heavy-Tailed Optimization
Organizations: University of Chicago · Work done at Meta.
Abstract
Heavy-tailed stochastic gradient noise, commonly observed in transformer models, can destabilize the optimization process. Recent works mainly focus on developing and understanding approaches to address heavy-tailed noise in the centralized or distributed, synchronous setting, leaving the interactions between such noise and asynchronous optimization underexplored. In this work, we investigate two communication schemes that handle stragglers with asynchronous updates in the presence of heavy-tailed gradient noise. We propose and theoretically analyze algorithmic modifications based on delay-aware learning rate scheduling and delay compensation to enhance the performance of asynchronous algorithms. Our convergence guarantees under heavy-tailed noise match the rate of the synchronous counterparts and improve delay tolerance compared with existing asynchronous approaches. Empirically, our approaches outperform prior synchronous and asynchronous methods in terms of accuracy/runtime trade-offs and are more robust to hyperparameters in both image and language tasks.
Figures & tables
| Async Mode | MNLI | QNLI | QQP | RTE | SST-2 | MRPC | CoLA | STS-B | Avg | |
| Mild Straggler | Sync | 83.67 | 87.33 | 79.86 | 64.30 | 92.88 | 86.03 | 82.08 | 86.54 | 82.84 |
| Server | 83.54 | 84.72 | 86.33 | 60.29 | 92.66 | 86.03 | 81.11 | 88.14 | 82.85 | |
| Client | 81.87 | 86.86 | 85.37 | 70.04 | 91.63 | 87.01 | 81.02 | 87.14 | 81.70 | |
| Large Straggler | Sync | 83.30 | 87.22 | 83.03 | 64.30 | 92.78 | 85.05 | 79.77 | 86.43 | 81.45 |
| Server | 82.58 | 85.78 | 86.09 | 59.95 | 91.97 | 83.58 | 80.44 | 85.63 | 82.00 | |
| Client | 82.19 | 86.89 | 85.39 | 67.87 | 92.29 | 85.05 | 80.15 | 86.92 | 81.33 |
| Async Mode | Methods | MNLI | QNLI | QQP | RTE | SST-2 | MRPC | CoLA | STS-B | Avg | |
| Mild Straggler | Server | vanilla | 83.54 | 84.72 | 86.33 | 60.29 | 92.66 | 86.03 | 81.11 | 88.14 | 82.85 |
| SD | 82.18 | 87.24 | 84.48 | 64.32 | 93.11 | 82.11 | 80.47 | 87.33 | 82.66 | ||
| DC | 83.30 | 86.66 | 86.52 | 56.32 | 92.09 | 82.35 | 79.87 | 86.36 | 82.93 | ||
| Client | vanilla | 81.87 | 86.86 | 85.37 | 70.04 | 91.63 | 87.01 | 81.02 | 87.14 | 81.70 | |
| SD | 83.42 | 86.91 | 86.10 | 70.76 | 92.20 | 85.78 | 80.35 | 86.19 | 84.00 | ||
| DC | 81.56 | 86.53 | 86.57 | 70.40 | 92.09 | 86.76 | 81.88 | 88.37 | 84.27 |
Appendix figures & tables16 assets
Supplementary material from the paper’s appendix.
Appendix
| Assumptions | Sync w/ local updates | Async w/ local updates | Dependence on the delay |
| Bounded variance Non-convex & smooth | ( Wang et al., 2024a ) ( Nguyen et al., 2022 ) | ( Wang et al., 2024a ) or ( Nguyen et al., 2022 ) | |
| Heavy-tailed noise (unbounded variance) Non-convex & smooth | ( Lee et al., 2025 ) | This paper Vanilla async: SGDClip (Theorem 4 ): Clip 2 (Theorem 5 ): Staleness-aware downplaying: SGDClip (Theorem 1 ): Clip 2 (Theorem 2 ): , where | This paper Vanilla async: SGDClip (Theorem 4 ): or Clip 2 (Theorem 5 ): or Staleness-aware downplaying: SGDClip (Theorem 1 ): ; explicit dependence (Proposition 1 ): unrestricted by the largest delay Clip 2 (Theorem 2 ): ; explicit dependence (Proposition 2 ): unrestricted by the largest delay |
| Heavy-tailed noise (unbounded variance) Strongly-convex | ( Lee et al., 2025 ) | This paper Non-convex results naturally carry over Additionally: Delay Compensation (Theorem 3 ): | This paper Non-convex results naturally carry over Additionally: Delay Compensation (Theorem 3 ): ; explicit dependence: , with a constant improvement of relative to vanilla |
| Algorithm | Server-side LR | Client-side LR | Server-side U | Client-side U |
| SGDClip | (0.1, 0.01, 0.001, 0.0001) | (0.1, 0.01, 0.001, 0.0001) | - | np.linspace( , 1.5, 4) |
| (0.1, 0.01, 0.001, 0.0001) | (0.1, 0.01, 0.001, 0.0001) | np.linspace( , 1.5, 4) | np.linspace( , 1.5, 4) | |
| SD-SGDClip | (0.1, 0.01, 0.001, 0.0001) | (0.1, 0.01, 0.001, 0.0001) | - | np.linspace( , 1.5, 4) |
| SD- | (0.1, 0.01, 0.001, 0.0001) | (0.1, 0.01, 0.001, 0.0001) | np.linspace( , 1.5, 4) | np.linspace( , 1.5, 4) |
| DC-SGDClip | (0.1, 0.01, 0.001, 0.0001) | (0.1, 0.01, 0.001, 0.0001) | - | np.linspace( , 1.5, 4) |
| DC- | (0.1, 0.01, 0.001, 0.0001) | (0.1, 0.01, 0.001, 0.0001) | np.linspace( , 1.5, 4) | np.linspace( , 1.5, 4) |
| Algorithm | Straggler mode | Server-side LR | Client-side LR | Server-side U | Client-side U |
| Sync SGDClip | large | 0.0001 | 0.01 | - | 0.0001 |
| Sync SGDClip | mild | 0.0001 | 0.01 | - | 1.0 |
| SC Async SGDClip | large | 0.0001 | 0.0001 | - | 0.5 |
| SC Async SGDClip | mild | 0.0001 | 0.01 | - | 1.0 |
| CC Async SGDClip | large | 0.0001 | 0.0001 | - | 0.5 |
| CC Async SGDClip | mild | 0.0001 | 0.001 | - | 0.5 |
| Dataset | Algorithm | Straggler mode | Server-side LR | Client-side LR | Server-side U | Client-side U |
| MNLI | SGDClip | mild&large | 1 | 0.56 | - | 0.0001 |
| Sync | mild&large | 1 | 0.5 | 0.75 | 0.0001 | |
| Async | mild&large | 1 | 0.5 | 1 | 0.0001 | |
| QQP | SGDClip | mild&large | 1 | 0.56 | - | 0.0001 |
| mild&large | 1 | 0.5 | 1.5 | 0.0001 | ||
| SGDClip | mild&large | 1 | 0.5 | - | 0.0001 |
| Dataset | Algorithm | Straggler mode | Server-side LR | Client-side LR | Server-side U | Client-side U |
| QNLI | Sync SGDClip | mild&large | 1 | 0.44 | - | 0.0001 |
| Async SGDClip | mild&large | 1 | 0.5 | - | 0.0001 | |
| Sync | large | 0.5 | 0.5 | 0.001 | 0.0001 | |
| Sync | mild | 1 | 0.5 | 0.01 | 0.0001 | |
| SC Async | large | 0.5 | 0.5 | 0.001 | 0.0001 | |
| SC Async | mild | 0.5 | 0.5 | 0.01 | 0.0001 |
| Methods | CIFAR-10 | GLUE | ||
| Acc. | runtime | Acc. | runtime | |
| Sync SGDClip (mild straggler) | 98.6 | 818 | 82.5 | 93 |
| Server-centric Async SGDClip (mild straggler) | 97.7 | 40 | 83.4 | 21 |
| Client-centric Async SGDClip (mild straggler) | 98.4 | 36 | 83.0 | 20 |
| Sync SGDClip (large straggler) | 98.6 | 3170 | 82.5 | 445 |
| Server-centric Async SGDClip (large straggler) | 97.7 | 44 | 82.2 | 36 |
| Methods | CIFAR-10 | GLUE | ||
| Acc. | runtime | Acc. | runtime | |
| Sync (mild straggler) | 98.4 | 860 | 82.7 | 95 |
| Server-centric Async (mild straggler) | 98.3 | 40 | 82.9 | 23 |
| Client-centric Async (mild straggler) | 98.1 | 37 | 83.9 | 26 |
| Sync (large straggler) | 98.4 | 3139 | 82.6 | 380 |
| Server-centric Async (large straggler) | 98.2 | 42 | 82.0 | 21 |
| Async Mode | Methods | CIFAR-10 | GLUE | ||
| Acc. | runtime | Acc. | runtime | ||
| Server-centric | SGDClip (mild straggler) | 97.7 | 40 | 83.4 | 21 |
| SD-SGDClip (mild straggler) | 98.2 | 41 | 82.0 | 24 | |
| SGDClip (large straggler) | 97.7 | 44 | 82.2 | 36 | |
| SD-SGDClip (large straggler) | 98.2 | 44 | 81.9 | 22 | |
| Client-centric | SGDClip (mild straggler) | 98.4 | 36 | 83.0 | 20 |
| Async Mode | Methods | CIFAR-10 | GLUE | ||
| Acc. | runtime | Acc. | runtime | ||
| Server-centric | Clip 2 (mild straggler) | 98.3 | 40 | 82.9 | 23 |
| SD- Clip 2 (mild straggler) | 98.2 | 39 | 82.7 | 22 | |
| DC- Clip 2 (mild straggler) | 98.4 | 42 | 81.8 | 24 | |
| Clip 2 (large straggler) | 98.2 | 42 | 82.0 | 21 | |
| SD- Clip 2 (large straggler) | 98.2 | 43 | 81.6 | 18 | |
| Async Mode | Methods | Acc. |
| Server-centric | Clip 2 (mild straggler) | 98.3 |
| SD- Clip 2 (mild straggler) | 98.2 | |
| DC- Clip 2 (mild straggler) | 98.4 | |
| Clip 2 (large straggler) | 98.2 | |
| SD- Clip 2 (large straggler) | 98.2 | |
| DC- Clip 2 (large straggler) | 98.5 |
| Algorithm | Straggler | M=1 Acc. | M=1 Runtime | M=10 Acc. | M=10 Runtime | M=20 Acc. | M=20 Runtime | M=30 Acc. | M=30 Runtime |
| Sync SGDClip | large | 97.4 | 1328 | 97.0 | 4715 | 97.0 | 5163 | 96.9 | 5393 |
| Async SGDClip | large | 10.3 | 10 | 97.3 | 115 | 97.5 | 289 | 97.7 | 832 |
| SD SGDClip | large | 10.3 | 12 | 97.4 | 122 | 97.7 | 291 | 97.8 | 869 |
| Sync SGDClip | mild | 96.8 | 559 | 98.5 | 1036 | 98.3 | 1081 | 98.4 | 1090 |
| Async SGDClip | mild | 9.8 | 11 | 98.3 | 104 | 98.5 | 248 | 98.4 | 541 |
| SD SGDClip | mild | 9.8 | 12 | 97.1 | 98 | 97.6 | 248 | 97.9 | 541 |
| Mode | MNLI | QNLI | QQP | RTE | SST-2 | MPRC | CoLA | STS-B | ||||||||||
| Algorithm | Straggler | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Pearson | Runtime | |
| SGDClip | Mild | Sync. | 83.15 | 96 | 86.58 | 102 | 86.98 | 96 | 57.76 | 105 | 91.86 | 88 | 84.80 | 94 | 81.11 | 63 | 87.32 | 103 |
| Server | 82.50 | 19 | 84.72 | 18 | 86.33 | 23 | 69.26 | 26 | 92.09 | 16 | 82.11 | 24 | 81.59 | 19 | 88.92 | 22 | ||
| Client | 82.18 | 19 | 86.91 | 18 | 81.91 | 15 | 70.04 | 16 | 91.51 | 18 | 82.35 | 32 | 80.15 | 23 | 89.33 | 19 | ||
| Large | Sync. | 82.88 | 451 | 86.53 | 510 | 86.92 | 509 | 63.18 | 443 | 92.20 | 516 | 83.58 | 303 | 81.21 | 369 | 83.65 | 457 | |
| Server | 82.58 | 21 | 85.78 | 22 | 86.09 | 16 | 60.29 | 16 | 91.97 | 17 | 80.39 | 19 | 81.69 | 31 | 88.42 | 26 | ||
| Mode | MNLI | QNLI | QQP | RTE | SST-2 | MPRC | CoLA | STS-B | ||||||||||
| Algorithm | Straggler | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Pearson | Runtime | |
| SGDClip | Mild | Server | 81.57 | 23 | 84.40 | 26 | 85.35 | 23 | 61.39 | 20 | 91.17 | 25 | 83.82 | 24 | 82.07 | 22 | 86.36 | 25 |
| Client | 80.14 | 23 | 86.53 | 13 | 82.78 | 11 | 64.26 | 9 | 90.94 | 22 | 83.33 | 26 | 81.40 | 13 | 88.65 | 20 | ||
| Large | Server | 81.50 | 26 | 81.99 | 23 | 85.26 | 20 | 60.3 | 21 | 92.10 | 23 | 85.29 | 22 | 81.40 | 20 | 87.36 | 22 | |
| Client | 82.20 | 14 | 87.42 | 43 | 84.43 | 13 | 63.90 | 13 | 91.17 | 25 | 83.58 | 33 | 81.02 | 28 | 88.46 | 68 | ||
| Mild | Server | 82.18 | 21 | 87.24 | 26 | 84.48 | 17 | 64.32 | 21 | 93.11 | 20 | 82.11 | 20 | 80.47 | 22 | 87.33 | 25 | |
| Mode | MNLI | QNLI | QQP | RTE | SST-2 | MPRC | CoLA | STS-B | ||||||||||
| Algorithm | Straggler | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Acc. | Runtime | Pearson | Runtime | |
| Mild | Server | 83.30 | 30 | 86.66 | 31 | 86.52 | 31 | 56.32 | 19 | 93.23 | 22 | 82.35 | 21 | 79.87 | 17 | 86.36 | 20 | |
| Client | 81.56 | 29 | 86.53 | 23 | 86.57 | 36 | 70.40 | 33 | 92.09 | 21 | 86.76 | 31 | 81.88 | 53 | 88.37 | 38 | ||
| Large | Server | 83.50 | 30 | 86.47 | 27 | 86.92 | 34 | 58.14 | 19 | 92.78 | 19 | 77.45 | 26 | 80.57 | 21 | 85.60 | 22 | |
| Client | 82.29 | 23 | 86.36 | 36 | 84.44 | 59 | 66.43 | 48 | 91.63 | 25 | 86.03 | 42 | 81.78 | 370 | 87.91 | 113 | ||
| Algorithm | Straggler | Async Mode | MNLI | QNLI | QQP | RTE | SST-2 | MPRC | CoLA | STS-B | Avg |
| Large | Server | 82.58 | 85.78 | 86.09 | 59.95 | 91.97 | 83.58 | 80.44 | 85.63 | 82.00 | |
| Client | 82.19 | 86.89 | 85.39 | 67.87 | 92.29 | 85.05 | 80.15 | 86.92 | 81.33 | ||
| SD- | Large | Server | 82.50 | 87.59 | 84.47 | 54.51 | 92.78 | 84.31 | 81.40 | 85.60 | 81.65 |
| Client | 83.35 | 86.55 | 86.96 | 72.56 | 91.51 | 86.52 | 80.73 | 86.60 | 84.35 | ||
| DC- | Large | Server | 83.50 | 86.47 | 86.92 | 58.14 | 92.78 | 77.45 | 80.57 | 85.60 | 81.43 |
| Client | 82.29 | 86.36 | 84.44 | 66.43 | 91.63 | 86.03 | 81.78 | 87.91 | 83.36 |
Stochastic Optimization
Stochastic optimization studies how to find good decisions or model parameters when objectives, data, or feedback are random or noisy.
See all 210 papers