QLoRA
# What does this PR do ?

Add QLoRA

## Current Results
### Convergence
Llama 7b, Squad, packed seq 2k, LoRA on all layers
gbs4, 2e-4, 2k iterations
`exact_match 89.199      f1 94.791       rougeL 94.400   total 6064.000`

Normal LoRA (qkv only)
`exact_match 88.819      f1 94.415       rougeL 94.084   total 6064.000`

### Memory Usage
Llama 13b, Alpaca, seq len 512, LoRA on all layers, gbs256
Peak memory reserved (GB): 
| Batch Size | LoRA | QLoRA | % Reduction |
|--------|--------|--------|--------|
| 2 | 37.5 | 18.3 | 51% |
| 4 | 46.7 | 27.4 | 41% |
| 8 | 65.4 | 46.4 | 29% |

### Performance
Llama 13b, Alpaca, seq len 512, LoRA on all layers, gbs256
Global batch step timing (s):
| Batch Size | LoRA | QLoRA | % Increase |
|--------|--------|--------|--------|
| 2 | 2.7 | 6.7 | 148% |
| 4 | 2.3 | 4.4 | 91% |
| 8 | 2.2 | 3.2 | 46% |

**Collection**: NLP

# Changelog 
- Add specific line by line info of high level changes in this PR.

# Usage
Set this flag in `megatron_gpt_finetuning_config.yaml` to enable QLoRA
```bash
model.peft.peft_scheme=qlora
```
To get the maximum memory savings, also set these flags
```bash
++model.dist_ckpt_load_on_device=False         # load checkpoint on CPU
++model.use_cpu_initialization=True            # initialize model on CPU
++model.peft.lora_tuning.target_modules=[all]  # quantize all linear layers in the model
```

# GitHub Actions CI

The Jenkins CI system has been replaced by GitHub Actions self-hosted runners.

The GitHub Actions CI will run automatically when the "Run CICD" label is added to the PR.
To re-run CI remove and add the label again.
To run CI on an untrusted fork, a NeMo user with write access must first click "Approve and run".

# Before your PR is "Ready for review"
**Pre checks**:
- [ ] Make sure you read and followed [Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md)
- [ ] Did you write any new necessary tests?
- [ ] Did you add or update any necessary documentation?
- [ ] Does the PR affect components that are optional to install? (Ex: Numba, Pynini, Apex etc)
  - [ ] Reviewer: Does the PR have correct import guards for all optional libraries?
  
**PR Type**:
- [x] New Feature
- [ ] Bugfix
- [ ] Documentation

If you haven't finished some of the above items you can still open "Draft" PR.


## Who can review?

Anyone in the community is free to review the PR once the checks have passed. 
[Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md) contains specific people who can review PRs to various areas.

# Additional Information
* Related to # (issue)
