Order of scheduler/optimizer calls
**Describe the bug**

PyTorch is warning about the order at which is the scheduler is being called.

**Steps/Code to reproduce bug**

Any training script will generate this warning:
```
[...]/lib/python3.10/site-packages/torch/optim/lr_scheduler.py:139: UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and later, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`.  Failure to do this will result in PyTorch skipping the first value of the learning rate schedule. See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
      warnings.warn("Detected call of `lr_scheduler.step()` before `optimizer.step()`. "
```



**Expected behavior**

Reorder the calls.

**Environment overview (please complete the following information)**

 - Environment location: Bare metal
 - Method of NeMo install: `pip isntall nemo_toolkit[asr]`

**Environment details**

- NeMo: 1.18.1
- OS version: Ubuntu 22.04
- PyTorch version: '2.0.1+cu117'
- Python version: Python 3.10.6

**Additional context**


GPUs: A100 40G (8x)
