MCPcopy Create free account
hub / github.com/apple/ml-pointersect / TestTFOptimizer

Class TestTFOptimizer

tests/cdslib/optim/test_tf_optim.py:11–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10
11class TestTFOptimizer(unittest.TestCase):
12 def _test(self, use_amp):
13 batch, in_features, out_features = 10, 20, 30
14 net = nn.Linear(in_features, out_features, bias=True)
15 if use_amp:
16 device = torch.device('cuda')
17 else:
18 device = torch.device('cpu')
19 net.to(device=device)
20 parameters = net.parameters()
21
22 # Create a pytorch optimizer
23 # (it will handle everything other than learning rate,
24 # e.g., normalization, momentum, etc)
25 _optimizer = torch.optim.Adam(
26 parameters, # parameters to optimize
27 lr=1e-3, # this will be overwritten by our optimzier
28 betas=(0.9, 0.98),
29 eps=1e-9)
30
31 # wrap our learning rate scheduler
32 optimizer = TFOptimizer(
33 optimizer=_optimizer,
34 model_size=30,
35 factor=1.0,
36 warmup=4000,
37 init_step=0)
38
39 if use_amp:
40 scaler = torch.cuda.amp.GradScaler() # only if using amp
41 else:
42 scaler = None
43
44 for iter in range(10):
45
46 # create a random input
47 x = torch.randn(batch, in_features).to(device=device)
48
49 with torch.cuda.amp.autocast(enabled=use_amp): # only if using amp
50 loss = net(x).sum()
51
52 # zero grad
53 optimizer.zero_grad()
54
55 # compute gradient
56 if use_amp:
57 scaler.scale(loss).backward()
58 optimizer.unscale(scaler=scaler) #
59 else:
60 loss.backward()
61
62 # if gradient clipping
63 nn.utils.clip_grad_norm_(parameters, 1e-3)
64
65 # update parameters
66 optimizer.step(scaler=scaler)
67
68 # update scaler

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected