Adapt the model with QLoRA rather than full-weight fine-tuning.
Full fine-tuning carries optimizer state proportional to the model, which did not fit the available hardware.
Confining updates to adapters made the run possible at all. The costs are a quantized base and an adapter the deployment has to carry alongside it. With a smaller model or a larger memory budget, full fine-tuning would have been a viable option; here it was not.

