Unsloth FastLanguageModel supports peft's model.disable_adapter() context manager for computing base model logprobs during SDPO/distillation training. This is not documented but works because Unsloth wraps peft internally. Avoids loading a separate base model copy, saving ~18GB VRAM for a 31B 4-bit model.
Use model.disable_adapter() as a context manager to get base model logprobs without the LoRA weights:
# Base forward (LoRA disabled) — works with Unsloth FastLanguageModel
with torch.no_grad(), model.disable_adapter():
base_out = model(input_ids=full_ids)
base_logits = base_out.logits[:, response_start - 1:-1, :]
base_logprobs = F.log_softmax(base_logits, dim=-1).gather(
-1, response_ids.unsqueeze(-1)
).squeeze(-1)This works because Unsloth's FastLanguageModel wraps peft's PeftModel, which implements disable_adapter(). No need to load a second model instance — saves the full model weight memory (~18GB for 31B 4-bit).