[PEFT / Tests ] Fix peft integration failing tests (#27258)
fix peft integration issues
This commit is contained in:
@@ -98,17 +98,18 @@ class PeftIntegrationTester(unittest.TestCase, PeftTesterMixin):
|
||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||
peft_model.save_pretrained(tmpdirname)
|
||||
|
||||
self.assertTrue("adapter_model.bin" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_model.safetensors" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||
|
||||
self.assertTrue("config.json" not in os.listdir(tmpdirname))
|
||||
self.assertTrue("pytorch_model.bin" not in os.listdir(tmpdirname))
|
||||
self.assertTrue("model.safetensors" not in os.listdir(tmpdirname))
|
||||
|
||||
peft_model = transformers_class.from_pretrained(tmpdirname).to(torch_device)
|
||||
self.assertTrue(self._check_lora_correctly_converted(peft_model))
|
||||
|
||||
peft_model.save_pretrained(tmpdirname, safe_serialization=True)
|
||||
self.assertTrue("adapter_model.safetensors" in os.listdir(tmpdirname))
|
||||
peft_model.save_pretrained(tmpdirname, safe_serialization=False)
|
||||
self.assertTrue("adapter_model.bin" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||
|
||||
peft_model = transformers_class.from_pretrained(tmpdirname).to(torch_device)
|
||||
@@ -328,9 +329,10 @@ class PeftIntegrationTester(unittest.TestCase, PeftTesterMixin):
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||
peft_model.save_pretrained(tmpdirname)
|
||||
self.assertTrue("adapter_model.bin" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_model.safetensors" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||
self.assertTrue("pytorch_model.bin" not in os.listdir(tmpdirname))
|
||||
self.assertTrue("model.safetensors" not in os.listdir(tmpdirname))
|
||||
|
||||
# 8-bit
|
||||
for model_id in self.peft_test_model_ids:
|
||||
@@ -344,9 +346,49 @@ class PeftIntegrationTester(unittest.TestCase, PeftTesterMixin):
|
||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||
peft_model.save_pretrained(tmpdirname)
|
||||
|
||||
self.assertTrue("adapter_model.safetensors" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||
self.assertTrue("pytorch_model.bin" not in os.listdir(tmpdirname))
|
||||
self.assertTrue("model.safetensors" not in os.listdir(tmpdirname))
|
||||
|
||||
@require_torch_gpu
|
||||
def test_peft_save_quantized_regression(self):
|
||||
"""
|
||||
Simple test that tests the basic usage of PEFT model save_pretrained with quantized base models
|
||||
Regression test to make sure everything works as expected before the safetensors integration.
|
||||
"""
|
||||
# 4bit
|
||||
for model_id in self.peft_test_model_ids:
|
||||
for transformers_class in self.transformers_test_model_classes:
|
||||
peft_model = transformers_class.from_pretrained(model_id, load_in_4bit=True, device_map="auto")
|
||||
|
||||
module = peft_model.model.decoder.layers[0].self_attn.v_proj
|
||||
self.assertTrue(module.__class__.__name__ == "Linear4bit")
|
||||
self.assertTrue(peft_model.hf_device_map is not None)
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||
peft_model.save_pretrained(tmpdirname, safe_serialization=False)
|
||||
self.assertTrue("adapter_model.bin" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||
self.assertTrue("pytorch_model.bin" not in os.listdir(tmpdirname))
|
||||
self.assertTrue("model.safetensors" not in os.listdir(tmpdirname))
|
||||
|
||||
# 8-bit
|
||||
for model_id in self.peft_test_model_ids:
|
||||
for transformers_class in self.transformers_test_model_classes:
|
||||
peft_model = transformers_class.from_pretrained(model_id, load_in_8bit=True, device_map="auto")
|
||||
|
||||
module = peft_model.model.decoder.layers[0].self_attn.v_proj
|
||||
self.assertTrue(module.__class__.__name__ == "Linear8bitLt")
|
||||
self.assertTrue(peft_model.hf_device_map is not None)
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||
peft_model.save_pretrained(tmpdirname, safe_serialization=False)
|
||||
|
||||
self.assertTrue("adapter_model.bin" in os.listdir(tmpdirname))
|
||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||
self.assertTrue("pytorch_model.bin" not in os.listdir(tmpdirname))
|
||||
self.assertTrue("model.safetensors" not in os.listdir(tmpdirname))
|
||||
|
||||
def test_peft_pipeline(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user