@winglian
In Axolotl, we’ve addressed this with merge-aware LoRA training: we merge the LoRA into the base weights and cast to BF16 inside the forward pass, so the model trains on exactly the weights vLLM serves. Gradients pass straight through the rounding to the LoRA weights, so they keep learning even when a single step is too small to change a BF16 weight. While there are still gaps in this method (support for various distributed parallelisms, ZeRO-3, etc), we hope we can help ensure that you aren't left wondering why what you deployed is underperforming.