The scheduler manipulates and thus defines the learning rate of the passed optimizer as seen here:
model = nn.Linear(3*224*224, 10)
optimizer = optim.SGD(model.parameters(), lr=1.)
print(optimizer.param_groups[0]['lr'])
scheduler = optim.lr_scheduler.CyclicLR(
    optimizer, base_lr=1e-3, max_lr=1e-2, step_size_up=5)


for epoch in range(10):
    print('Epoch {}, optim.lr {}, scheduler.lr {}'.format(
        epoch, optimizer.param_groups[0]['lr'], scheduler.get_last_lr()))
    optimizer.step()
    scheduler.step()