training-benchmark.py 1.72 KB
Newer Older
1
import sys
Xiang Gao's avatar
Xiang Gao committed
2
import torch
3
import ignite
Xiang Gao's avatar
Xiang Gao committed
4
5
import torchani
import timeit
6
import model
7
import tqdm
Xiang Gao's avatar
Xiang Gao committed
8

9
10
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

11
12
13
14
15
chunk_size = 256
batch_chunks = 4
dataset_path = sys.argv[1]
shift_energy = torchani.EnergyShifter()
dataset = torchani.data.ANIDataset(
16
    dataset_path, chunk_size, device=device,
17
18
    transform=[shift_energy.dataset_subtract_sae])
dataloader = torchani.data.dataloader(dataset, batch_chunks)
19
nnp = model.get_or_create_model('/tmp/model.pt', True, device=device)
20
batch_nnp = torchani.models.BatchModel(nnp)
21
22
container = torchani.ignite.Container({'energies': batch_nnp})
optimizer = torch.optim.Adam(nnp.parameters())
Xiang Gao's avatar
Xiang Gao committed
23

24
25
trainer = ignite.engine.create_supervised_trainer(
    container, optimizer, torchani.ignite.energy_mse_loss)
Xiang Gao's avatar
Xiang Gao committed
26

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

@trainer.on(ignite.engine.Events.EPOCH_STARTED)
def init_tqdm(trainer):
    trainer.state.tqdm = tqdm.tqdm(total=len(dataloader), desc='epoch')


@trainer.on(ignite.engine.Events.ITERATION_COMPLETED)
def update_tqdm(trainer):
    trainer.state.tqdm.update(1)


@trainer.on(ignite.engine.Events.EPOCH_COMPLETED)
def finalize_tqdm(trainer):
    trainer.state.tqdm.close()


Xiang Gao's avatar
Xiang Gao committed
43
start = timeit.default_timer()
44
trainer.run(dataloader, max_epochs=1)
Xiang Gao's avatar
Xiang Gao committed
45
elapsed = round(timeit.default_timer() - start, 2)
46
47
48
49
50
51
52
53
54
print('Radial terms:', nnp[1].timers['radial terms'])
print('Angular terms:', nnp[1].timers['angular terms'])
print('Terms and indices:', nnp[1].timers['terms and indices'])
print('Combinations:', nnp[1].timers['combinations'])
print('Mask R:', nnp[1].timers['mask_r'])
print('Mask A:', nnp[1].timers['mask_a'])
print('Assemble:', nnp[1].timers['assemble'])
print('Total AEV:', nnp[1].timers['total'])
print('NN:', nnp[2].timers['forward'])
Xiang Gao's avatar
Xiang Gao committed
55
print('Epoch time:', elapsed)