@@ -490,9 +490,7 @@ def __call__(self, state, group, update, grad, param, *args, **kwargs):
490490 eccs = [getattr (v , "_ecc" , None ) for v in views ]
491491 stacked_corr = None
492492 if eccs [0 ] is not None :
493- stacked_corr = (
494- eccs [0 ].correction [None ] if n == 1 else torch .stack ([e .correction for e in eccs ], 0 )
495- )
493+ stacked_corr = eccs [0 ].correction [None ] if n == 1 else torch .stack ([e .correction for e in eccs ], 0 )
496494 slab_p ._ecc = utils ._ULPState (stacked_corr , eccs [0 ].smax )
497495
498496 bucket_state = states [indices [0 ]].setdefault (bucket_key , {})
@@ -1185,8 +1183,9 @@ def _init_soap(state, group, update, grad, param):
11851183 )
11861184
11871185
1188- def _apply_soap_preconditioner (group , update , Q , GG , * exp_avgs , use_kl : bool = False , eps = 1e-8 ,
1189- exp_avg_sq = None , heavy : bool = False ):
1186+ def _apply_soap_preconditioner (
1187+ group , update , Q , GG , * exp_avgs , use_kl : bool = False , eps = 1e-8 , exp_avg_sq = None , heavy : bool = False
1188+ ):
11901189 beta = utils .beta_debias (group ["shampoo_beta" ], group ["step" ])
11911190 max_dim , p1d = group ["max_precond_dim" ], group ["precondition_1d" ]
11921191 eas = exp_avg_sq or [None ] * len (update )
@@ -1208,8 +1207,13 @@ def _apply_soap_preconditioner(group, update, Q, GG, *exp_avgs, use_kl: bool = F
12081207def scale_by_soap (group , update , grad , param , exp_avg , exp_avg_sq , Q , GG ):
12091208 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
12101209 precond = utils .adam_ (
1211- exp_avg , exp_avg_sq , grad_projected ,
1212- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 , group ["eps" ],
1210+ exp_avg ,
1211+ exp_avg_sq ,
1212+ grad_projected ,
1213+ utils .get_beta1 (group ),
1214+ utils .get_beta2 (group ),
1215+ group ["step" ] - 1 ,
1216+ group ["eps" ],
12131217 )
12141218 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
12151219 _apply_soap_preconditioner (group , update , Q , GG , exp_avg )
@@ -1224,8 +1228,13 @@ def scale_by_soap(group, update, grad, param, exp_avg, exp_avg_sq, Q, GG):
12241228def scale_by_kl_soap (group , update , grad , param , exp_avg , exp_avg_sq , Q , GG ):
12251229 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
12261230 precond = utils .adam_ (
1227- exp_avg , exp_avg_sq , grad_projected ,
1228- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 , group ["eps" ],
1231+ exp_avg ,
1232+ exp_avg_sq ,
1233+ grad_projected ,
1234+ utils .get_beta1 (group ),
1235+ utils .get_beta2 (group ),
1236+ group ["step" ] - 1 ,
1237+ group ["eps" ],
12291238 )
12301239 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
12311240 _apply_soap_preconditioner (group , update , Q , GG , exp_avg , use_kl = True , eps = group ["eps" ])
@@ -1259,9 +1268,18 @@ def scale_by_kl_shampoo(group, update, grad, param, exp_avg, Q, GG):
12591268def scale_by_soap_nadam (group , update , grad , param , exp_avg , exp_avg_sq , mu_product , Q , GG ):
12601269 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
12611270 precond = utils .nadam_ (
1262- grad_projected , exp_avg , exp_avg_sq , mu_product , grad_projected ,
1263- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 ,
1264- group ["momentum_decay" ], group ["eps" ], 0.0 , False ,
1271+ grad_projected ,
1272+ exp_avg ,
1273+ exp_avg_sq ,
1274+ mu_product ,
1275+ grad_projected ,
1276+ utils .get_beta1 (group ),
1277+ utils .get_beta2 (group ),
1278+ group ["step" ] - 1 ,
1279+ group ["momentum_decay" ],
1280+ group ["eps" ],
1281+ 0.0 ,
1282+ False ,
12651283 )
12661284 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
12671285 _apply_soap_preconditioner (group , update , Q , GG , exp_avg )
@@ -1276,8 +1294,12 @@ def scale_by_soap_nadam(group, update, grad, param, exp_avg, exp_avg_sq, mu_prod
12761294def scale_by_soap_laprop (group , update , grad , param , exp_avg , exp_avg_sq , Q , GG ):
12771295 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
12781296 precond = utils .laprop_ (
1279- exp_avg , exp_avg_sq , grad_projected ,
1280- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 ,
1297+ exp_avg ,
1298+ exp_avg_sq ,
1299+ grad_projected ,
1300+ utils .get_beta1 (group ),
1301+ utils .get_beta2 (group ),
1302+ group ["step" ] - 1 ,
12811303 )
12821304 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
12831305 _apply_soap_preconditioner (group , update , Q , GG , exp_avg )
@@ -1292,9 +1314,16 @@ def scale_by_soap_laprop(group, update, grad, param, exp_avg, exp_avg_sq, Q, GG)
12921314def scale_by_soap_ademamix (group , update , grad , param , exp_avg_fast , exp_avg_slow , exp_avg_sq , Q , GG ):
12931315 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
12941316 precond = utils .ademamix_ (
1295- exp_avg_fast , exp_avg_slow , exp_avg_sq , grad_projected ,
1296- group ["betas" ], group ["step" ] - 1 , group ["eps" ], group ["alpha" ],
1297- group .get ("beta3_warmup" ), group .get ("alpha_warmup" ),
1317+ exp_avg_fast ,
1318+ exp_avg_slow ,
1319+ exp_avg_sq ,
1320+ grad_projected ,
1321+ group ["betas" ],
1322+ group ["step" ] - 1 ,
1323+ group ["eps" ],
1324+ group ["alpha" ],
1325+ group .get ("beta3_warmup" ),
1326+ group .get ("alpha_warmup" ),
12981327 )
12991328 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
13001329 _apply_soap_preconditioner (group , update , Q , GG , exp_avg_slow , exp_avg_fast )
@@ -1309,8 +1338,13 @@ def scale_by_soap_ademamix(group, update, grad, param, exp_avg_fast, exp_avg_slo
13091338def scale_by_heavy_soap (group , update , grad , param , exp_avg , exp_avg_sq , Q , GG ):
13101339 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
13111340 precond = utils .adam_ (
1312- exp_avg , exp_avg_sq , grad_projected ,
1313- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 , group ["eps" ],
1341+ exp_avg ,
1342+ exp_avg_sq ,
1343+ grad_projected ,
1344+ utils .get_beta1 (group ),
1345+ utils .get_beta2 (group ),
1346+ group ["step" ] - 1 ,
1347+ group ["eps" ],
13141348 )
13151349 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
13161350 _apply_soap_preconditioner (group , update , Q , GG , exp_avg , exp_avg_sq = exp_avg_sq , heavy = True )
@@ -1325,12 +1359,18 @@ def scale_by_heavy_soap(group, update, grad, param, exp_avg, exp_avg_sq, Q, GG):
13251359def scale_by_heavy_kl_soap (group , update , grad , param , exp_avg , exp_avg_sq , Q , GG ):
13261360 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
13271361 precond = utils .adam_ (
1328- exp_avg , exp_avg_sq , grad_projected ,
1329- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 , group ["eps" ],
1362+ exp_avg ,
1363+ exp_avg_sq ,
1364+ grad_projected ,
1365+ utils .get_beta1 (group ),
1366+ utils .get_beta2 (group ),
1367+ group ["step" ] - 1 ,
1368+ group ["eps" ],
13301369 )
13311370 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
1332- _apply_soap_preconditioner (group , update , Q , GG , exp_avg , use_kl = True , eps = group ["eps" ],
1333- exp_avg_sq = exp_avg_sq , heavy = True )
1371+ _apply_soap_preconditioner (
1372+ group , update , Q , GG , exp_avg , use_kl = True , eps = group ["eps" ], exp_avg_sq = exp_avg_sq , heavy = True
1373+ )
13341374 return precond
13351375
13361376
@@ -1361,9 +1401,18 @@ def scale_by_heavy_kl_shampoo(group, update, grad, param, exp_avg, Q, GG):
13611401def scale_by_heavy_soap_nadam (group , update , grad , param , exp_avg , exp_avg_sq , mu_product , Q , GG ):
13621402 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
13631403 precond = utils .nadam_ (
1364- grad_projected , exp_avg , exp_avg_sq , mu_product , grad_projected ,
1365- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 ,
1366- group ["momentum_decay" ], group ["eps" ], 0.0 , False ,
1404+ grad_projected ,
1405+ exp_avg ,
1406+ exp_avg_sq ,
1407+ mu_product ,
1408+ grad_projected ,
1409+ utils .get_beta1 (group ),
1410+ utils .get_beta2 (group ),
1411+ group ["step" ] - 1 ,
1412+ group ["momentum_decay" ],
1413+ group ["eps" ],
1414+ 0.0 ,
1415+ False ,
13671416 )
13681417 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
13691418 _apply_soap_preconditioner (group , update , Q , GG , exp_avg , exp_avg_sq = exp_avg_sq , heavy = True )
@@ -1378,8 +1427,12 @@ def scale_by_heavy_soap_nadam(group, update, grad, param, exp_avg, exp_avg_sq, m
13781427def scale_by_heavy_soap_laprop (group , update , grad , param , exp_avg , exp_avg_sq , Q , GG ):
13791428 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
13801429 precond = utils .laprop_ (
1381- exp_avg , exp_avg_sq , grad_projected ,
1382- utils .get_beta1 (group ), utils .get_beta2 (group ), group ["step" ] - 1 ,
1430+ exp_avg ,
1431+ exp_avg_sq ,
1432+ grad_projected ,
1433+ utils .get_beta1 (group ),
1434+ utils .get_beta2 (group ),
1435+ group ["step" ] - 1 ,
13831436 )
13841437 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
13851438 _apply_soap_preconditioner (group , update , Q , GG , exp_avg , exp_avg_sq = exp_avg_sq , heavy = True )
@@ -1394,13 +1447,19 @@ def scale_by_heavy_soap_laprop(group, update, grad, param, exp_avg, exp_avg_sq,
13941447def scale_by_heavy_soap_ademamix (group , update , grad , param , exp_avg_fast , exp_avg_slow , exp_avg_sq , Q , GG ):
13951448 grad_projected = [utils .project (utils .promote (u ), q , False ) for u , q in zip (update , Q )]
13961449 precond = utils .ademamix_ (
1397- exp_avg_fast , exp_avg_slow , exp_avg_sq , grad_projected ,
1398- group ["betas" ], group ["step" ] - 1 , group ["eps" ], group ["alpha" ],
1399- group .get ("beta3_warmup" ), group .get ("alpha_warmup" ),
1450+ exp_avg_fast ,
1451+ exp_avg_slow ,
1452+ exp_avg_sq ,
1453+ grad_projected ,
1454+ group ["betas" ],
1455+ group ["step" ] - 1 ,
1456+ group ["eps" ],
1457+ group ["alpha" ],
1458+ group .get ("beta3_warmup" ),
1459+ group .get ("alpha_warmup" ),
14001460 )
14011461 precond = [utils .project (p , q , True ) for p , q in zip (precond , Q )]
1402- _apply_soap_preconditioner (group , update , Q , GG , exp_avg_slow , exp_avg_fast ,
1403- exp_avg_sq = exp_avg_sq , heavy = True )
1462+ _apply_soap_preconditioner (group , update , Q , GG , exp_avg_slow , exp_avg_fast , exp_avg_sq = exp_avg_sq , heavy = True )
14041463 return precond
14051464
14061465
0 commit comments