Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
transformers
Commits
8f1a43cd
Unverified
Commit
8f1a43cd
authored
Nov 03, 2023
by
Younes Belkada
Committed by
GitHub
Nov 03, 2023
Browse files
[`PEFT` / `Tests` ] Fix peft integration failing tests (#27258)
fix peft integration issues
parent
05ea7b79
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
4 deletions
+46
-4
tests/peft_integration/test_peft_integration.py
tests/peft_integration/test_peft_integration.py
+46
-4
No files found.
tests/peft_integration/test_peft_integration.py
View file @
8f1a43cd
...
@@ -98,17 +98,18 @@ class PeftIntegrationTester(unittest.TestCase, PeftTesterMixin):
...
@@ -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
=
Tru
e
)
peft_model
.
save_pretrained
(
tmpdirname
,
safe_serialization
=
Fals
e
)
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):
...
@@ -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):
...
@@ -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_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_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
))
def
test_peft_pipeline
(
self
):
def
test_peft_pipeline
(
self
):
"""
"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment