32B Model Fine-Tuning and Serving

Two QwQ-32B LoRA fine-tunes trained on four H200 GPUs

Private work at InteroRole Lead engineer and primary authorWhen 2024 to 2026

Scope

The use case and dataset content are private. This page covers the model training and serving work.

I trained two separate LoRA fine-tunes of Qwen's QwQ-32B model. Both were trained with Axolotl, evaluated on data that was kept out of training and then deployed behind APIs that the application could call.

Training data

I prepared 171,031 labelled examples for supervised fine-tuning. The data was formatted for the model's chat template and split into separate training and evaluation sets for each fine-tune.

The dataset itself is private, including the input content, annotation scheme and target classes.

Training configuration

SettingValue
Base modelQwen/QwQ-32B
Fine-tuning methodLoRA with Axolotl
GPUs4 × NVIDIA H200 80GB
LoRA rank128
LoRA alpha128
Learning rate5e-5
Weight decay0.05
Global batch size12
Training length4 epochs
Selected checkpointEpoch 2

I compared the checkpoints after each epoch. Performance started to drop after epoch two, so I selected that checkpoint instead of taking the final epoch by default.

Evaluation

I kept a separate 100-example benchmark out of training. The two-stage system reached 93% on that set. I also checked the individual errors when comparing checkpoints so the final decision did not depend on one aggregate number.

Serving

I served the selected weights with vLLM on Modal through OpenAI-compatible endpoints. Model serving stayed separate from the application, so I could change a checkpoint or GPU configuration without rebuilding the rest of the system.

A FastAPI application handled the request boundary around the model endpoints. The deployment kept model loading, application logic and GPU scaling separate.

Built with

  • LoRA
  • Axolotl
  • rank 128
  • alpha 128
  • supervised fine-tuning
  • held-out evaluation
  • OpenAI-compatible API
NextCopy URL ShortcutBuilt for myself