Faynt: Scaling and Optimizing Policies for Competitive Melee
Organizations: Frisson Labs
Abstract
We introduce Faynt, a family of 10M- and 75M-parameter Transformer policies for Super Smash Bros. Melee, each controlling all 26 characters with a single checkpoint. After reinforcement learning (RL), the 10M wins 240 of 244 same-character games (98.4%) against fourteen specialist and multi-character releases on their supported rosters, with a winning record against every release. These opponents retain 21- or 24-frame action delays; Faynt uses no added delay, and we have not isolated the effect of this difference. In a separate evaluation against a privately supplied zero-delay Slippi-AI model, the 10M wins all 68 games across two conditioning settings. We study architecture, optimization, scaling, and hyperparameter transfer to guide pretraining on approximately 840,000 human replays. Post-training combines rank- and outcome-based curricula, 75M-to-10M distillation, and RL restricted to Fox mirror matches. On the initial 152-game benchmark, the supervised 10M wins 69.7% of games, compared with 45.4% for the pretrained 75M, despite higher overall held-out controller-prediction loss. The weighted validation loss used for supervised checkpoint selection agrees with the win-rate ordering of all four pretrained and supervised policies. After supervised post-training, both models take less damage per minute, build larger early leads, and win more often after losing the first life. Optimized inference on recorded game states averages 5.2 ms per decision for the 10M and 8.7 ms for the 75M on an NVIDIA T4, excluding emulator execution and communication. We open-source the weights, both benchmark suites, and a platform for automated model tournaments.
Figures & tables
| Configuration | Faynt-10M | Faynt-75M |
|---|---|---|
| Trainable parameters | 10,163,629 | 75,305,709 |
| Model width | 384 | 768 |
| Transformer blocks | 5 | 11 |
| Query / key-value heads | 6 / 2 | 12 / 3 |
| Head dimension | 64 | 64 |
| Feed-forward width | 768 | 1,920 |
| Setting | 75M | 10M, run 1 | 10M, leash run |
|---|---|---|---|
| Starting policy | supervised 75M | supervised 10M | run 1, step 1,318 |
| Self-play share of policy loss | 50% | 50% | 100% |
| Learning rate, policy and value | |||
| Policy-gradient weight | 1 | 1 | 3 |
| Reference KL weight | 0.1 | 0.1 | 0.003 |
| Reference KL weight | 0 | 0 | 0.003 |
Appendix figures & tables47 assets
Supplementary material from the paper’s appendix.
Appendix
| Calibration | Final corpus | |
|---|---|---|
| Accepted replays | 67,129 | 839,942 |
| Training replays | 65,824 | 823,083 |
| Validation replays | 659 | 8,483 |
| Test replays | 646 | 8,376 |
| All valid targets | 1,500,000,244 | 17,839,509,998 |
| Training targets | 1,470,952,166 | 17,481,727,198 |
| AdamW | ||
|---|---|---|
| Learning rate | Batch | NLL |
| 0.0010 | 65,536 | 0.860504 |
| 0.0003 | 65,536 | 0.870815 |
| 0.0030 | 65,536 | 0.875388 |
| 0.0001 | 65,536 | 0.914326 |
| 0.0010 | 262,144 | 0.914411 |
| Size | Setting varied | |||
|---|---|---|---|---|
| 5M | Muon rate | 0.943590 | 0.941835 | 0.939627 |
| 5M | Auxiliary rate | 0.950677 | 0.941835 | 0.926854 |
| 5M | Weight decay | 0.939114 | 0.941835 | 0.937286 |
| 50M | Muon rate | 0.915042 | 0.912638 | 0.927680 |
| 50M | Auxiliary rate | 0.920879 | 0.912638 | 0.914731 |
| 50M | Weight decay | 0.924369 | 0.912638 | 0.917862 |
| Profile | Parameters | |
|---|---|---|
| 3M | 3,003,373 | 12,847,328 |
| 5M | 5,053,805 | 29,304,944 |
| 10M | 10,163,629 | 72,262,720 |
| 20M | 20,040,877 | 151,385,600 |
| 50M | 50,127,021 | 394,013,760 |
| 75M | 75,305,709 | 596,823,632 |
| Recipe | Multipliers | R1 | R2 | R3 | R4 | R5 |
|---|---|---|---|---|---|---|
| 10M | ||||||
| wd-low | 0.81019 | 0.80431 | 0.801534 | 0.99334 | 0.94213 | |
| muon-low | 0.81022 | 0.80387 | 0.801560 | |||
| aux-low | 0.81252 | 0.80572 | ||||
| center | 0.81220 | 0.80635 | ||||
| aux-high | 0.81294 | |||||
| 10M | 75M | |||
|---|---|---|---|---|
| Rung | Updates | Active | Updates | Active |
| 1 | 38,730 | 8 | 7,526 | 16 |
| 2 | 77,461 | 4 | 15,052 | 8 |
| 3 | 116,192 | 2 | 22,579 | 4 |
| 4 | 154,923 | 1 | 30,105 | 2 |
| 5 | 193,654 | 1 | 37,631 | 1 |
| Recipe | Best step | Validation | Test | Stop targets |
|---|---|---|---|---|
| 10M Muon-low | 122,064 | 0.796817 | 0.797658 | 11,811,160,064 |
| 10M WD-low | 122,064 | 0.797050 | 9,663,676,416 | |
| 75M Muon-low | 86,016 | 0.764821 | 0.765435 | 7,516,192,768 |
| Model (M) | CPU cores | Microbatch / accumulation | Workers / prefetch | Targets/s, thousands (95% interval) | USD / 1B targets |
| RTX PRO 6000 | |||||
| 20.04 | 8 | 64/4 | 6/2 | 165.0 [160.3, 170.8] | 6.60 |
| 20.04 | 16 | 64/4 | 12/1 | 146.8 [142.9, 150.1] | 8.14 |
| 20.04 | 32 | 64/4 | 0/2 | 187.1 [179.1, 195.5] | 7.51 |
| 50.13 | 8 | 64/4 | 0/2 | 131.3 [125.4, 136.3] | 8.30 |
| 50.13 | 16 | 64/4 | 8/2 | 139.2 [136.3, 142.4] | 8.58 |
| GPU | CPU cores | (k/s) | Max. residual | ||
|---|---|---|---|---|---|
| Fixed-core fits | |||||
| RTX PRO 6000 | 8 | 139.9 | 0.159 | 0.785 | 6.2% |
| RTX PRO 6000 | 16 | 133.2 | 0.121 | 0.815 | 4.5% |
| RTX PRO 6000 | 32 | 128.7 | 0.371 | 0.870 | 10.4% |
| H100 SXM | 8 | 180.7 | 0.751 | 0.952 | 13.8% |
| H100 SXM | 16 | 138.6 | 0.477 | 0.652 | 30.5% |
| Model (M) | GPU (8 CPU cores) | Hours | Targets/s | Targets (B) | Pred. NLL |
|---|---|---|---|---|---|
| Compact-policy candidates, $100 | |||||
| 5.054 | A100 | 29.50 | 1,545,647 E | 164.148 | 0.763553 |
| 7 | A100 | 29.50 | 1,071,942 E | 113.840 | 0.756780 |
| 8 | A100 | 29.50 | 922,620 E | 97.982 | 0.754180 |
| 10.164 | A100 | 29.50 | 705,074 E | 74.879 | 0.749773 |
| Larger-policy candidates, $200 | |||||
| Pool | Replays | Eligible perspective |
|---|---|---|
| Natural distribution | 823,083 | Both players |
| All decided games | 823,057 | Winner |
| Master or diamond winners | 471,316 | Winner |
| Master winners | 256,532 | Winner |
| Diamond winners | 214,784 | Winner |
| Diamond subset in later mixture | 28,504 | Winner |
| Slice | Perspectives | Targets |
|---|---|---|
| Master won | 2,635 | 674,560 |
| Master lost | 1,932 | 494,592 |
| Diamond won | 2,235 | 572,160 |
| Diamond lost | 2,208 | 565,248 |
| Platinum won | 3,612 | 924,672 |
| Platinum lost | 4,342 | 1,111,552 |
| Model | Stage | Frames | Master-won | ||
|---|---|---|---|---|---|
| 10M | Natural | 270 | 0.77510 | 0.79191 | 0.79024 |
| 10M | All winners | 270 | 0.77233 | 0.78693 | 0.78543 |
| 10M | Master + diamond winners | 360 | 0.77166 | 0.77798 | 0.77708 |
| 10M | Master winners | 900 | 0.77282 | 0.77078 | 0.77080 |
| 75M | Natural | 180 | 0.74519 | 0.75550 | 0.75426 |
| 75M | All winners | 180 | 0.74230 | 0.74977 | 0.74873 |
| Round | Model | Horizon | Schedule | Objective |
|---|---|---|---|---|
| 1 | 10M / 75M | 1.8B / 1.2B | Cosine | NLL |
| 2 | 10M / 75M | 1.2B / 1.5B | Hold | NLL |
| 3 | 10M | 900M | Hold | KD, , |
| 3, stopped | 75M | Hold | NLL | |
| 4 | 10M | 900M | Hold | KD, , |
| 4, control | 10M | 300M | Hold | KD, , |
| Targets (M) | Main | ||||
|---|---|---|---|---|---|
| 0 | 0.75990 | 0.75984 | 0.77071 | 0.75982 | 0.77070 |
| 50 | 0.76086 | 0.76075 | 0.77074 | 0.76268 | 0.77257 |
| 100 | 0.76106 | 0.76085 | 0.77042 | 0.76230 | 0.77175 |
| 150 | 0.76075 | 0.76041 | 0.77141 | 0.76289 | 0.77362 |
| 200 | 0.76053 | 0.76025 | 0.76993 | 0.76289 | 0.77246 |
| Step | Targets (M) | Overall NLL | Gradient median | |
|---|---|---|---|---|
| 127,214 | 0 | 0.72492 | 0.74149 | |
| 127,976 | 50 | 0.72756 | 0.74431 | 0.1205 |
| 128,738 | 100 | 0.72734 | 0.74400 | 0.1255 |
| 129,500 | 150 | 0.72771 | 0.74383 | 0.1263 |
| 130,262 | 200 | 0.72771 | 0.74504 | 0.1304 |
| 131,024 | 250 | 0.72790 | 0.74235 | 0.1350 |
| Model | Checkpoint | Step | Overall | Master-won | Diamond-won | |
|---|---|---|---|---|---|---|
| 10M | Pretrained | 122,064 | 0.79682 | 0.81315 | 0.79691 | 0.81152 |
| 10M | Round 1 | 149,512 | 0.77281 | 0.77076 | 0.77094 | 0.77078 |
| 10M | Round 2 | 167,800 | 0.77220 | 0.76381 | 0.77001 | 0.76443 |
| 10M | Round 3 | 181,516 | 0.77071 | 0.75889 | 0.76825 | 0.75983 |
| 10M | Round 4 | 195,248 | 0.76896 | 0.75647 | 0.76641 | 0.75746 |
| 75M | Pretrained | 86,016 | 0.76481 | 0.77617 | 0.76467 | 0.77502 |
| Model | Checkpoint | Overall | Master-won | Diamond-won | |
|---|---|---|---|---|---|
| 10M | Pretrained | 0.79766 | 0.79694 | 0.79928 | 0.79717 |
| 10M | Round 1 | 0.77356 | 0.75469 | 0.77223 | 0.75644 |
| 10M | Round 2 | 0.77291 | 0.74758 | 0.77119 | 0.74994 |
| 10M | Round 3 | 0.77137 | 0.74280 | 0.76886 | 0.74541 |
| 10M | Round 4 | 0.76974 | 0.74044 | 0.76722 | 0.74312 |
| 75M | Pretrained | 0.76543 | 0.75915 | 0.76714 | 0.75995 |
| 10M | 75M | |||
|---|---|---|---|---|
| Slice | Pretrained | Round 1 | Pretrained | Round 1 |
| Master won | 0.81315 | 0.77078 | 0.77617 | 0.73566 |
| Master lost | 0.79648 | 0.76365 | 0.76250 | 0.73142 |
| Diamond won | 0.79691 | 0.77098 | 0.76467 | 0.73810 |
| Diamond lost | 0.79777 | 0.77552 | 0.76672 | 0.74479 |
| Platinum won | 0.79945 | 0.78122 | 0.76855 | 0.75292 |
| Model | Checkpoint | Button NLL | Stick NLL | Button | Stick |
|---|---|---|---|---|---|
| 10M | Pretrained | 0.26732 | 0.52950 | 0.2612 | 0.5300 |
| 10M | Round 4 | 0.25502 | 0.51394 | 0.2498 | 0.5178 |
| 75M | Pretrained | 0.25287 | 0.51194 | 0.2521 | 0.5127 |
| 75M | Round 2 | 0.24311 | 0.49835 | 0.2367 | 0.5001 |
| Model | Targets (M) | ||
|---|---|---|---|
| 10M | 799 | 0.77472 | 0.76962 |
| 10M | 849 | 0.77552 | 0.76960 |
| 10M | 899 | 0.77423 | 0.76979 |
| 10M | 949 | 0.77441 | 0.76973 |
| 75M | 1049 | 0.74495 | 0.72936 |
| 75M | 1099 | 0.74367 | 0.72905 |
| Size | Stage | Checkpoint step | Original run designation |
|---|---|---|---|
| 75M | Pretrained | 86,016 | Final pretraining |
| 75M | Supervised post-training | 127,214 | cur-3 |
| 10M | Pretrained | 122,064 | Final pretraining v2 |
| 10M | Supervised post-training | 195,248 | cur-6-kd |
| 75M | RL | 980 | RL run |
| 10M | RL | 632 | RL leash run |
| Block | Games | Assignment |
|---|---|---|
| MIMIC Master Fox | 10 | Fox mirrors against fox-master |
| CPU9 Fox | 10 | Fox mirrors against the level-9 controller |
| MIMIC core mirrors | 12 | Six native characters, two games each |
| Slippi-AI core mirrors | 24 | Twelve native characters, two games each |
| Roster extension | 96 | Allocation in Table F.3 |
| Opponent | Games | Character and checkpoint assignment |
|---|---|---|
| CPU9 | 28 | All fourteen fighters in |
| MIMIC native | 34 | Seventeen native fighters outside the common core |
| MIMIC forced | 6 | fox-master on Kirby, Zelda, and Pichu |
| Slippi specialists | 4 | Donkey Kong: dk_d18_imitation_v2 ; Dr. Mario: doc_d18_imitation_v3 |
| Slippi forced | 24 | medium-v2 on except Donkey Kong and Dr. Mario |
| All 26 characters | Common native core | ||||
|---|---|---|---|---|---|
| Policy | Opponent | W–L | Margin | W–L | Margin |
| Faynt 10M | MIMIC | 35–17 | 8–4 | ||
| Faynt 10M | Slippi-AI | 34–18 | 4–8 | ||
| Faynt 75M | MIMIC | 46–6 | 10–2 | ||
| Faynt 75M | Slippi-AI | 40–12 | 7–5 | ||
| Slippi-AI | MIMIC | 34–18 | 11–1 | ||
| Release | Roster | Delay | Conditioning |
|---|---|---|---|
| SFIL | 1 | 21 | SFAT |
| diamond | 12 | 21 | Master Player |
| falco_d21_ditto_v4 | 1 | 21 | Ginger |
| fox_d21_ditto_hax_v3 | 1 | 21 | Hax |
| fox_d21_ditto_v4 | 1 | 21 | Cody |
| fox_d24_ditto_v4 | 1 | 24 | Cody |
| Pretrained | Supervised | |||
|---|---|---|---|---|
| Block | W–L | Stocks | W–L | Stocks |
| MIMIC Fox | 1–9 | 20–39 | 3–7 | 32–32 |
| CPU9 Fox | 8–2 | 38–22 | 10–0 | 40–7 |
| MIMIC core | 2–10 | 33–46 | 10–2 | 45–32 |
| Slippi-AI core | 2–22 | 55–93 | 15–9 | 82–75 |
| Extension | 56–40 | 320–278 | 85–11 | 373–195 |
| Pretrained | Supervised | |||
|---|---|---|---|---|
| Block | W–L | Stocks | W–L | Stocks |
| MIMIC Fox | 1–9 | 15–38 | 5–5 | 33–32 |
| CPU9 Fox | 8–2 | 38–23 | 10–0 | 40–7 |
| MIMIC core | 2–10 | 24–45 | 8–4 | 40–32 |
| Slippi-AI core | 1–23 | 38–95 | 8–16 | 71–87 |
| Extension | 37–59 | 274–316 | 75–21 | 355–219 |
| MIMIC : block | Games | W–L | Stocks |
|---|---|---|---|
| Faynt Fox | 10 | 7–3 | 32–32 |
| CPU9 Fox | 10 | 10–0 | 40–15 |
| Faynt mirrors | 12 | 2–10 | 32–45 |
| Slippi-AI mirrors | 24 | 2–22 | 59–93 |
| Roster extension | 96 | 24–72 | 232–337 |
| Total | 152 | 45–107 | 395–522 |
| Slippi-AI : block | Games | W–L | Stocks |
|---|---|---|---|
| MIMIC Master Fox | 10 | 8–2 | 37–27 |
| CPU9 Fox | 10 | 10–0 | 40–4 |
| MIMIC mirrors | 12 | 11–1 | 46–29 |
| Faynt mirrors | 24 | 9–15 | 75–82 |
| Roster extension | 96 | 34–62 | 233–322 |
| Total | 152 | 72–80 | 431–464 |
| 75M RL | 10M RL | ||||
|---|---|---|---|---|---|
| Opponent release | Games | W–L | Stocks | W–L | Stocks |
| fox_d21_ditto_v4 | 12 | 2–10 | 20–46 | 12–0 | 48–4 |
| fox_d24_ditto_v4 | 12 | 3–9 | 33–45 | 12–0 | 48–6 |
| SFIL | 12 | 9–3 | 44–32 | 12–0 | 48–1 |
| fox_d21_ditto_hax_v3 | 12 | 12–0 | 48–23 | 12–0 | 48–2 |
| falco_d21_ditto_v4 | 12 | 1–11 | 22–47 | 11–1 | 47–22 |
| 75M RL | 10M RL | ||||
|---|---|---|---|---|---|
| Opponent release | Games | W–L | Stocks | W–L | Stocks |
| fox_d21_ditto_v4 | 50 | 7–43 | 106–191 | 35–15 | 177–127 |
| fox_d24_ditto_v4 | 50 | 17–33 | 135–174 | 43–7 ∗ | 188–100 |
| SFIL | 50 | 15–35 | 146–174 | 41–9 | 188–98 |
| fox_d21_ditto_hax_v3 | 50 | 30–20 | 173–148 | 46–4 | 193–72 |
| falco_d21_ditto_v4 | 50 | 4–46 | 97–193 | 35–15 | 175–128 |
| 75M RL | 10M RL | ||||
|---|---|---|---|---|---|
| Opponent release | Games | W–L | Stocks | W–L | Stocks |
| fox_d21_ditto_v4 | 50 | 50–0 | 200–18 | 50–0 ∗ | 200–13 |
| fox_d24_ditto_v4 | 50 | 50–0 ∗ | 200–19 | 50–0 ∗ | 200–9 |
| SFIL | 50 | 50–0 | 200–20 | 50–0 | 200–17 |
| fox_d21_ditto_hax_v3 | 50 | 50–0 | 200–11 | 50–0 ∗ | 200–7 |
| falco_d21_ditto_v4 | 50 | 50–0 | 200–16 | 50–0 | 200–16 |
| Opponent release | Games | 75M RL | 10M RL |
|---|---|---|---|
| fox_d21_ditto_v4 | 62 | 52–10 | 62–0 |
| fox_d24_ditto_v4 | 62 | 53–9 | 62–0 |
| SFIL | 62 | 59–3 | 62–0 |
| fox_d21_ditto_hax_v3 | 62 | 62–0 | 62–0 |
| falco_d21_ditto_v4 | 62 | 51–11 | 61–1 |
| gm | 52 | 34–18 | 52–0 |
| 10M RL 632 | 75M RL 222 | 75M RL 980 | ||||
| Opponent | FD | Six stages | FD | Six stages | FD | Six stages |
| delay0/FoxFD | 16–0 | 18–0 | 15–1 | 18–0 | 14–2 | 18–0 |
| delay0/FalcoFD | 16–0 | 18–0 | 16–0 | 18–0 | 14–2 | 18–0 |
| FoxFD0 | 16–0 | 18–0 | 16–0 | 18–0 | 16–0 | 18–0 |
| MarthFD0 | 16–0 | 18–0 | 15–1 | 18–0 | 16–0 | 18–0 |
| PeachFD | 16–0 | 18–0 | 16–0 | 18–0 | 16–0 | 18–0 |
| Master Player | Cody | ||||
|---|---|---|---|---|---|
| Faynt checkpoint | FD | Six stages | FD | Six stages | Total |
| 10M supervised | 6–10 | 9–9 | 3–13 | 5–13 | 23–45 |
| 10M RL step 632 | 16–0 | 18–0 | 16–0 | 18–0 | 68–0 |
| 75M supervised | 9–7 | 8–10 | 5–11 | 3–15 | 25–43 |
| 75M RL step 980 | 16–0 | 17–1 | 13–3 | 12–6 | 58–10 |
| Model | Stage | Games | Wins | Duration | Faynt dmg/min | Opp. dmg/min | Lead |
|---|---|---|---|---|---|---|---|
| 75M | Pretrained | 145 | 65 | 193.2 | 106.4 | 122.1 | |
| Supervised | 145 | 117 | 184.5 | 95.8 | 151.4 | ||
| 10M | Pretrained | 139 | 46 | 177.1 | 118.2 | 110.2 | |
| Supervised | 139 | 95 | 186.5 | 98.7 | 144.6 |
| Model | Stage | Win after taking first | Win after conceding first |
|---|---|---|---|
| 75M | Pretrained | 42/65 (64.6%) | 23/80 (28.8%) |
| Supervised | 96/107 (89.7%) | 19/36 (52.8%) | |
| 10M | Pretrained | 40/57 (70.2%) | 6/82 (7.3%) |
| Supervised | 76/93 (81.7%) | 19/46 (41.3%) |
| Model | Stage | Low-percent / all losses | Share | Mean loss percent |
|---|---|---|---|---|
| 75M | Pretrained | 86/456 | 18.9% | 99.6 |
| Supervised | 51/325 | 15.7% | 108.9 | |
| 10M | Pretrained | 98/469 | 20.9% | 92.2 |
| Supervised | 47/348 | 13.5% | 106.4 |
| Model | Stage | Neutral | Changed | Damage | Shield |
|---|---|---|---|---|---|
| 75M | Pretrained | 26.08 | 23.25 | 11.37 | 4.61 |
| Supervised | 25.90 | 24.02 | 10.22 | 3.19 | |
| 10M | Pretrained | 22.83 | 23.12 | 12.39 | 4.00 |
| Supervised | 25.67 | 23.73 | 10.46 | 3.15 |
| Model | Stage | Wins | Taken | Conceded | Margin | Remaining |
|---|---|---|---|---|---|---|
| 75M | Pretrained | 69 | 3.066 | 3.145 | 1.884 | |
| Supervised | 123 | 3.763 | 2.243 | 2.171 | ||
| 10M | Pretrained | 49 | 2.559 | 3.401 | 1.857 | |
| Supervised | 106 | 3.546 | 2.480 | 2.179 |
| Per frame | Reference | Optimized |
|---|---|---|
| Cache write | A loop over the batch in Python reads each row’s validity flag and write position to the host, in every layer | One indexed write each for keys and values per layer; positions stay on the device |
| Cache read | Each layer’s 256-frame window is copied into chronological order, reading each row’s length and next write position to the host | Attention runs over the ring in storage order through a validity mask, which is exact because rotary phases are applied when keys are written |
| Grouped-query attention [ 8 ] | PyTorch’s scaled dot-product attention on FP32 inputs expands keys and values to every query head | Batched matrix products per key-value head, without expansion |
| Checks | Eleven encoder range checks, three cache checks, a reset check, and the controller head’s label checks, each a device-to-host read | None; inputs are valid by construction |
| Input transfer | One host-to-device copy per input tensor | One copy per data type into static buffers (GPU) |
| Dispatch | Every kernel launched from Python | One CUDA-graph replay, with sampling and the stick head outside the graph (GPU) |
| Model | Device | Pair | Max | Mean KL | Max KL | Top-1 | Play |
|---|---|---|---|---|---|---|---|
| 10M | CPU | Reference vs. sync-free | 0 of 4,800 | none in 1,200 | |||
| 10M | GPU | Reference vs. sync-free | 0 of 4,800 | none in 1,200 | |||
| 10M | GPU | Sync-free vs. optimized | 0 | 0 | 0 | 0 of 4,800 | none in 1,200 |
| 75M | CPU | Reference vs. sync-free | 0 of 4,800 | none in 1,200 | |||
| 75M | GPU | Reference vs. sync-free | 0 of 4,800 | none in 1,200 | |||
| 75M | GPU | Sync-free vs. optimized | 0 | 0 | 0 | 0 of 4,800 | none in 1,200 |
| 10M | 75M | |||||||
|---|---|---|---|---|---|---|---|---|
| Play | Watch | Play | Watch | |||||
| GPU | Time | p99 | Time | p99 | Time | p99 | Time | p99 |
| NVIDIA T4 | 5.2 | 6.8 | 6.8 | 8.9 | 8.7 | 12.1 | 9.5 | 11.9 |
| NVIDIA L4 | 3.2 | 4.7 | 4.0 | 5.5 | 5.4 | 6.4 | 6.2 | 7.5 |
| NVIDIA A10G | 3.1 | 4.6 | 3.7 | 5.1 | 4.6 | 5.9 | 5.6 | 6.9 |