Engineering Journey: Fine-Tuning LLMs from Laptop to Production An engineer detailed a journey fine-tuning LLMs from a local Apple Silicon setup to production on AWS SageMaker, reporting that moving training from an M4 Mac Mini to a SageMaker ml.g4dn.xlarge spot instance cut a 14-hour MLX run to 3.3 hours with roughly 60% cost savings. The project used MLX, MLflow, DVC, and SageMaker Pipelines V2 to achieve reproducible, auditable training, with a ConditionStep promoting models only when test loss improved. The project started simply. I needed a fine-tuned math reasoning model and wanted to prove it was possible. I reached for MLX — Apple’s ML framework for Silicon — because my M4 Mac Mini was the fastest thing I had. mlx lm Made LoRA fine-tuning straightforward: load the model, freeze everything except the adapter layers, run a training loop. I had a Qwen2.5-1.5B adapter with val loss dropping from 1.8 to 0.9 on MathInstruct. The next problem was immediate: I ran six experiments and lost track of which adapter came from which hyperparameters. So I added MLflow for experiment tracking and DVC for data versioning. DVC turned out to be the most important early decision. The core idea is simple — instead of tracking dataset files in git, DVC stores a content hash in dvc.lock and keeps the actual bytes in a remote cache S3 . That hash, combined with the git commit SHA, becomes a permanent fingerprint for every training run: git sha + dvc.lock MD5 → "e90324a9-dvc3f2a1b7c" This string became the dvc.commit tag on every MLflow run. From it, I can always reconstruct the exact state: git checkout