From 2b330e2f24ecb89f1347af57a4f64b43c32dcbb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E9=BB=84=E8=89=B2=E8=91=A1=E8=90=84=E7=90=83?= =?UTF-8?q?=E5=90=9B=E5=90=9B?= Date: Tue, 24 Mar 2026 12:08:29 +0800 Subject: [PATCH] fix: store embedding_learning_rate on self in UnslothTrainingArguments (#4531) Fixes #4492 The embedding_learning_rate parameter was assigned to a local variable instead of self.embedding_learning_rate, causing UnslothTrainer.create_optimizer() to always get None via getattr and silently fall back to a single param group. Bug: embedding_learning_rate = embedding_learning_rate (no-op) Fix: self.embedding_learning_rate = embedding_learning_rate --- unsloth/trainer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unsloth/trainer.py b/unsloth/trainer.py index 65abe6801f..8bb4440021 100644 --- a/unsloth/trainer.py +++ b/unsloth/trainer.py @@ -132,8 +132,8 @@ except: class UnslothTrainingArguments(TrainingArguments): def __init__(self, embedding_learning_rate: float = None, *args, **kwargs): - embedding_learning_rate = embedding_learning_rate super().__init__(*args, **kwargs) + self.embedding_learning_rate = embedding_learning_rate def _create_unsloth_optimizer(