class_docstr: A testing suite that makes sure that the PeftModel class is correctly integrated into the transformers library.
class_docstr_tok: ["A","testing","suite","that","makes","sure","that","the","PeftModel","class","is","correctly","integrated","into","the","transformers","library","."]
docstr: Simple test that tests the basic usage of PEFT model save_pretrained with quantized base models
docstr_tok: ["Simple","test","that","tests","the","basic","usage","of","PEFT","model","save_pretrained","with","quantized","base","models"]
code: def test_peft_save_quantized(self):
      """
      Simple test that tests the basic usage of PEFT model save_pretrained with quantized base models
      """
      # 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)
                  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:
          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)
  
                  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)
                  )
  
imports: import os
  import tempfile
  import unittest
  from huggingface_hub import hf_hub_download
  from transformers import AutoModelForCausalLM, OPTForCausalLM
  from transformers.testing_utils import require_peft, require_torch, require_torch_gpu, slow, torch_device
  from transformers.utils import is_torch_available
label_desc: Use image node_id 12 for calling the PeftIntegrationTester obj's underlying member method code with example usage: obj.test_peft_save_quantized() without return types