[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:
|
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||||
peft_model.save_pretrained(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("adapter_config.json" in os.listdir(tmpdirname))
|
||||||
|
|
||||||
self.assertTrue("config.json" not 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("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)
|
peft_model = transformers_class.from_pretrained(tmpdirname).to(torch_device)
|
||||||
self.assertTrue(self._check_lora_correctly_converted(peft_model))
|
self.assertTrue(self._check_lora_correctly_converted(peft_model))
|
||||||
|
|
||||||
peft_model.save_pretrained(tmpdirname, safe_serialization=True)
|
peft_model.save_pretrained(tmpdirname, safe_serialization=False)
|
||||||
self.assertTrue("adapter_model.safetensors" in os.listdir(tmpdirname))
|
self.assertTrue("adapter_model.bin" in os.listdir(tmpdirname))
|
||||||
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
self.assertTrue("adapter_config.json" in os.listdir(tmpdirname))
|
||||||
|
|
||||||
peft_model = transformers_class.from_pretrained(tmpdirname).to(torch_device)
|
peft_model = transformers_class.from_pretrained(tmpdirname).to(torch_device)
|
||||||
@@ -328,9 +329,10 @@ class PeftIntegrationTester(unittest.TestCase, PeftTesterMixin):
|
|||||||
|
|
||||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||||
peft_model.save_pretrained(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("adapter_config.json" in os.listdir(tmpdirname))
|
||||||
self.assertTrue("pytorch_model.bin" not 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
|
# 8-bit
|
||||||
for model_id in self.peft_test_model_ids:
|
for model_id in self.peft_test_model_ids:
|
||||||
@@ -344,9 +346,49 @@ class PeftIntegrationTester(unittest.TestCase, PeftTesterMixin):
|
|||||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||||
peft_model.save_pretrained(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_model.bin" in os.listdir(tmpdirname))
|
||||||
self.assertTrue("adapter_config.json" 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("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):
|
def test_peft_pipeline(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user