instruct model setup

This commit is contained in:
Your Name
2025-08-28 17:57:59 +00:00
parent 77c563f358
commit d49b4ff2d5
55 changed files with 27760 additions and 326 deletions
@@ -1,7 +1,7 @@
"""
2025.8.4
2025.8.5
4.55.1
2025.8.9
2025.8.10
4.55.4
0.21.0
__UNSLOTH_VERSIONING__
"""
@@ -124,6 +124,10 @@ class UnslothOnlineDPOConfig(OnlineDPOConfig):
default = -1,
metadata = {'help': 'Chunk size to reduce memory usage. -1 is most efficient.'},
)
max_seq_length : Optional[int] = field(
default = None,
metadata = {'help': 'Maximum sequence length to truncate to.'},
)
def __init__(
self,
output_dir = None,
@@ -270,6 +274,7 @@ class UnslothOnlineDPOConfig(OnlineDPOConfig):
model_init_kwargs = None,
vllm_sampling_params = None,
unsloth_num_chunks = -1,
max_seq_length = None,
**kwargs,
):
if learning_rate < 1e-7: raise FloatingPointError(f'Unsloth: Your learning rate of `{learning_rate}` is too small and less than 1e-7! Consider increasing it, otherwise gradient updates will be close to 0!')
@@ -279,7 +284,7 @@ class UnslothOnlineDPOConfig(OnlineDPOConfig):
save_strategy = 'no'
if dataset_num_proc is None:
from multiprocessing import cpu_count
dataset_num_proc = min(cpu_count()*2, 2)
dataset_num_proc = max(cpu_count()+4, 2)
if temperature <= 0:
raise MathError('Unsloth: Please set a positive non-zero temperature since your results will be wrong.')
elif temperature >= 10:
@@ -431,6 +436,7 @@ class UnslothOnlineDPOConfig(OnlineDPOConfig):
model_init_kwargs = model_init_kwargs,**kwargs)
self.vllm_sampling_params = vllm_sampling_params
self.unsloth_num_chunks = unsloth_num_chunks
self.max_seq_length = max_seq_length
pass
class _UnslothOnlineDPOTrainer(Trainer):
@@ -1204,7 +1210,7 @@ class UnslothOnlineDPOTrainer(_UnslothOnlineDPOTrainer):
print('Unsloth: Switching to float32 training since model cannot work with float16')
force_float32 = True
mixed_precision_dtype = os.environ.get('UNSLOTH_MIXED_PRECISION', 'float32')
dtype = getattr(model.config, 'torch_dtype', None)
dtype = getattr(model.config, 'dtype', None) or getattr(model.config, 'torch_dtype', None)
if dtype is None: dtype = model.get_input_embeddings().dtype
from unsloth_zoo.utils import _get_dtype
dtype = _get_dtype(dtype)
@@ -1270,9 +1276,17 @@ class UnslothOnlineDPOTrainer(_UnslothOnlineDPOTrainer):
from unsloth_zoo.vision_utils import UnslothVisionDataCollator
if not isinstance(data_collator, UnslothVisionDataCollator):
if isinstance(data_collator, DataCollatorForSeq2Seq) and 'labels' not in train_dataset.column_names:
data_collator = TransformersDataCollatorForLanguageModeling(__tokenizer, mlm = False, mlm_probability = 0.0)
data_collator = TransformersDataCollatorForLanguageModeling(
__tokenizer,
mlm = False,
mlm_probability = 0.0,
pad_to_multiple_of = getattr(args, 'pad_to_multiple_of', None),
)
elif isinstance(data_collator, TransformersDataCollatorForLanguageModeling) and 'labels' in train_dataset.column_names:
data_collator = DataCollatorForSeq2Seq(__tokenizer)
data_collator = DataCollatorForSeq2Seq(
__tokenizer,
pad_to_multiple_of = getattr(args, 'pad_to_multiple_of', None),
)
else:
if hasattr(args, 'remove_unused_columns'): args.remove_unused_columns = False
if hasattr(args, 'dataset_text_field'): args.dataset_text_field = ''
@@ -1280,9 +1294,17 @@ class UnslothOnlineDPOTrainer(_UnslothOnlineDPOTrainer):
if not isinstance(data_collator, UnslothVisionDataCollator):
if not hasattr(__tokenizer, 'pad') and hasattr(__tokenizer, 'tokenizer'):
if isinstance(data_collator, DataCollatorForSeq2Seq):
data_collator = DataCollatorForSeq2Seq(__tokenizer.tokenizer)
data_collator = DataCollatorForSeq2Seq(
__tokenizer.tokenizer,
pad_to_multiple_of = getattr(args, 'pad_to_multiple_of', None),
)
else:
data_collator = TransformersDataCollatorForLanguageModeling(__tokenizer.tokenizer, mlm = False, mlm_probability = 0.0)
data_collator = TransformersDataCollatorForLanguageModeling(
__tokenizer.tokenizer,
mlm = False,
mlm_probability = 0.0,
pad_to_multiple_of = getattr(args, 'pad_to_multiple_of', None),
)
other_metrics = []
from unsloth_zoo.logging_utils import PatchRLStatistics