Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Principle:Huggingface Peft SFT Training

From Leeroopedia


Metadata

Overview

Supervised Fine-Tuning (SFT) is the process of training a pretrained language model on curated instruction-response pairs so that it learns to follow human instructions. SFT is typically the first alignment stage after pretraining and before reinforcement learning from human feedback (RLHF). When combined with PEFT methods like LoRA, SFT becomes highly efficient -- training only a small fraction of the model's parameters while achieving instruction-following capability comparable to full fine-tuning.

The SFTTrainer from the TRL (Transformer Reinforcement Learning) library provides a managed training loop that integrates directly with PEFT. It extends the Hugging Face Trainer class to handle PEFT model creation, chat template application, dataset packing, and PEFT-aware model saving, abstracting away the boilerplate required for these operations.

Theoretical Foundation

Instruction Tuning

Pretrained language models learn to predict the next token from large text corpora but do not inherently know how to follow instructions. SFT bridges this gap by training on datasets of (instruction, response) pairs, where the model learns the conditional distribution:

P(response | instruction) = product_{t=1}^{T} P(y_t | y_{<t}, instruction)

This is optimized using the standard causal language modeling (cross-entropy) loss. The key distinction from pretraining is that the training data is structured: each example has a clear instruction and a target response, often formatted using a chat template.

PEFT Integration

When a peft_config (e.g., LoraConfig) is passed to SFTTrainer, the trainer internally calls get_peft_model to wrap the base model with adapter layers. This means:

  • Only adapter parameters receive gradients and optimizer states
  • The base model weights remain frozen, dramatically reducing memory
  • Model saving only persists the adapter weights (a few MB instead of several GB)
  • Adapter weights can later be merged into the base model for deployment

Chat Templates

Modern instruction-tuned models use chat templates to structure multi-turn conversations. These templates define special tokens and formatting for different roles (system, user, assistant). Common formats include:

  • ChatML: Uses <|im_start|> and <|im_end|> delimiters
  • Zephyr: Uses <|user|>, <|assistant|>, <|system|> role markers

The SFTTrainer can apply these templates during data preprocessing, converting raw conversation data into the format expected by the model.

Dataset Packing

To maximize training efficiency, SFTTrainer supports packing -- concatenating multiple short examples into a single sequence up to the maximum length. This eliminates wasted padding tokens and increases GPU utilization. Packing is controlled through the SFTConfig parameters.

Key Concepts

  • SFTConfig: Extends Hugging Face TrainingArguments with SFT-specific parameters such as max_length, packing options, and dataset formatting controls
  • PEFT-Aware Saving: SFTTrainer automatically saves only adapter weights when a PEFT config is used, enabling efficient checkpointing and model sharing
  • Distributed Training Support: SFTTrainer inherits distributed training capabilities from HF Trainer, supporting DDP (Distributed Data Parallel), DeepSpeed, and FSDP (Fully Sharded Data Parallel). Special handling is required for FSDP with PEFT -- for example, setting FULL_STATE_DICT state dict type before saving
  • Gradient Checkpointing: Reduces memory by recomputing activations during the backward pass instead of storing them. Controlled via gradient_checkpointing in training arguments, with the use_reentrant flag for PyTorch compatibility
  • Quantized Base Models: SFT with PEFT supports quantized base models (4-bit or 8-bit via bitsandbytes), enabling training of very large models on limited hardware. The quantized weights remain frozen while LoRA adapters are trained in full precision

Practical Implications

  • SFT with LoRA enables instruction-tuning of 7B+ parameter models on a single consumer GPU
  • The managed training loop handles PEFT lifecycle automatically -- users only need to provide a LoraConfig
  • Chat template formatting ensures the model learns the correct conversational structure
  • Checkpointing and resumption are fully supported, including PEFT adapter state
  • Post-training, adapter weights can be shared on Hugging Face Hub independently of the base model

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment