This seems to be related to this issue 19.
If you print the optimizer’s learning rate, you should see that it’s behaving as expected:
model = nn.Linear(1, 1) # 'Net' is a simple MLP
optimizer = torch.optim.SGD(model.parameters(), lr=1e-2)
schedular = torch.optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.1)

print('Initial LR : {0:.8f}'.format(schedular.get_lr()[0]))
for e in range(8):
    schedular.step()
    print('Epoch {0}, LR: {1:.8f}, opt LR {2:.8f}'.format(e, schedular.get_lr()[0],
          optimizer.param_groups[0]['lr']))