Fix: Warn when fullfinetune without adapter (#770)
Browse files- src/axolotl/utils/config.py +6 -0
- tests/test_validation.py +43 -0
src/axolotl/utils/config.py
CHANGED
@@ -360,6 +360,12 @@ def validate_config(cfg):
|
|
360 |
"eval_table_size and eval_sample_packing are not supported together with sample_packing. Please set 'eval_sample_packing' to false."
|
361 |
)
|
362 |
|
|
|
|
|
|
|
|
|
|
|
|
|
363 |
# TODO
|
364 |
# MPT 7b
|
365 |
# https://github.com/facebookresearch/bitsandbytes/issues/25
|
|
|
360 |
"eval_table_size and eval_sample_packing are not supported together with sample_packing. Please set 'eval_sample_packing' to false."
|
361 |
)
|
362 |
|
363 |
+
if not cfg.adapter and (cfg.load_in_8bit or cfg.load_in_4bit):
|
364 |
+
raise ValueError(
|
365 |
+
"load_in_8bit and load_in_4bit are not supported without setting an adapter."
|
366 |
+
"If you want to full finetune, please turn off load_in_8bit and load_in_4bit."
|
367 |
+
)
|
368 |
+
|
369 |
# TODO
|
370 |
# MPT 7b
|
371 |
# https://github.com/facebookresearch/bitsandbytes/issues/25
|
tests/test_validation.py
CHANGED
@@ -606,3 +606,46 @@ class ValidationTest(unittest.TestCase):
|
|
606 |
)
|
607 |
|
608 |
validate_config(cfg)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
606 |
)
|
607 |
|
608 |
validate_config(cfg)
|
609 |
+
|
610 |
+
def test_load_in_x_bit_without_adapter(self):
|
611 |
+
cfg = DictDefault(
|
612 |
+
{
|
613 |
+
"load_in_4bit": True,
|
614 |
+
}
|
615 |
+
)
|
616 |
+
|
617 |
+
with pytest.raises(
|
618 |
+
ValueError,
|
619 |
+
match=r".*load_in_8bit and load_in_4bit are not supported without setting an adapter.*",
|
620 |
+
):
|
621 |
+
validate_config(cfg)
|
622 |
+
|
623 |
+
cfg = DictDefault(
|
624 |
+
{
|
625 |
+
"load_in_8bit": True,
|
626 |
+
}
|
627 |
+
)
|
628 |
+
|
629 |
+
with pytest.raises(
|
630 |
+
ValueError,
|
631 |
+
match=r".*load_in_8bit and load_in_4bit are not supported without setting an adapter.*",
|
632 |
+
):
|
633 |
+
validate_config(cfg)
|
634 |
+
|
635 |
+
cfg = DictDefault(
|
636 |
+
{
|
637 |
+
"load_in_4bit": True,
|
638 |
+
"adapter": "qlora",
|
639 |
+
}
|
640 |
+
)
|
641 |
+
|
642 |
+
validate_config(cfg)
|
643 |
+
|
644 |
+
cfg = DictDefault(
|
645 |
+
{
|
646 |
+
"load_in_8bit": True,
|
647 |
+
"adapter": "lora",
|
648 |
+
}
|
649 |
+
)
|
650 |
+
|
651 |
+
validate_config(cfg)
|