text: Title: [BUG] The learning rate scheduler is being ignored in the first optimization step.
  Body: **Describe the bug**
  
  It appears that no matter how the learning rate scheduler is configured, during the first training step a learning rate of `1e-3` is always used. My understanding is that this happens because `lr_scheduler.step()` is always called after `optimizer.step()` and there is no initialization for the initial step learning rate. I'm currently using `optimizer.set_lr(0)` explicitly to work around this issue. It can be quite detrimental to full fine-tuning of LLMs (as opposed to just LoRA/PEFT training) as it throws the model off completely in the first training step.
  
  Is this intentional? If so, should this be fixed inside DeepSpeed or are we supposed to just use `optimizer.set_lr(0)` like I'm currently doing. In either case, I think this should be documented somewhere as it is somewhat surprising behavior.
  
  **To Reproduce**
  
  It's pretty easy to reproduce with any configuration you already have. I was using this when debugging and finding this out:
  
  ```
  "optimizer": {
      "type": "AdamW",
      "params": {
          "betas": [0.9, 0.98],
          "eps": 1e-6,
          "weight_decay": 3e-6,
      },
  },
  "scheduler": {
      "type": "WarmupDecayLR",
      "params": {
          "warmup_min_lr": 0,
          "warmup_max_lr": 1e-4,
          "warmup_num_steps": 100,
          "total_num_steps": 1000,
      },
  }
  ```