Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
chenpangpang
transformers
Commits
16c8e176
Unverified
Commit
16c8e176
authored
Apr 24, 2024
by
Fanli Lin
Committed by
GitHub
Apr 24, 2024
Browse files
[tests] make test device-agnostic (#30444)
* make device-agnostic * clean code
parent
9a4a119c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
16 deletions
+14
-16
tests/test_modeling_utils.py
tests/test_modeling_utils.py
+14
-16
No files found.
tests/test_modeling_utils.py
View file @
16c8e176
...
@@ -821,26 +821,26 @@ class ModelUtilsTest(TestCasePlus):
...
@@ -821,26 +821,26 @@ class ModelUtilsTest(TestCasePlus):
@
require_accelerate
@
require_accelerate
@
mark
.
accelerate_tests
@
mark
.
accelerate_tests
@
require_torch_
gpu
@
require_torch_
accelerator
def
test_from_pretrained_disk_offload_task_model
(
self
):
def
test_from_pretrained_disk_offload_task_model
(
self
):
model
=
AutoModel
.
from_pretrained
(
"hf-internal-testing/tiny-random-gpt2"
)
model
=
AutoModel
.
from_pretrained
(
"hf-internal-testing/tiny-random-gpt2"
)
device_map
=
{
device_map
=
{
"transformer.wte"
:
0
,
"transformer.wte"
:
f
"
{
torch_device
}
:0"
,
"transformer.wpe"
:
0
,
"transformer.wpe"
:
f
"
{
torch_device
}
:0"
,
"transformer.h.0"
:
"cpu"
,
"transformer.h.0"
:
"cpu"
,
"transformer.h.1"
:
"cpu"
,
"transformer.h.1"
:
"cpu"
,
"transformer.h.2"
:
"cpu"
,
"transformer.h.2"
:
"cpu"
,
"transformer.h.3"
:
"disk"
,
"transformer.h.3"
:
"disk"
,
"transformer.h.4"
:
"disk"
,
"transformer.h.4"
:
"disk"
,
"transformer.ln_f"
:
0
,
"transformer.ln_f"
:
f
"
{
torch_device
}
:0"
,
"lm_head"
:
0
,
"lm_head"
:
f
"
{
torch_device
}
:0"
,
}
}
with
tempfile
.
TemporaryDirectory
()
as
tmp_dir
:
with
tempfile
.
TemporaryDirectory
()
as
tmp_dir
:
inputs
=
torch
.
tensor
([[
1
,
2
,
3
]]).
to
(
0
)
inputs
=
torch
.
tensor
([[
1
,
2
,
3
]]).
to
(
f
"
{
torch_device
}
:0"
)
model
.
save_pretrained
(
tmp_dir
)
model
.
save_pretrained
(
tmp_dir
)
new_model
=
AutoModelForCausalLM
.
from_pretrained
(
tmp_dir
).
to
(
0
)
new_model
=
AutoModelForCausalLM
.
from_pretrained
(
tmp_dir
).
to
(
f
"
{
torch_device
}
:0"
)
outputs1
=
new_model
.
to
(
0
)(
inputs
)
outputs1
=
new_model
.
to
(
f
"
{
torch_device
}
:0"
)(
inputs
)
offload_folder
=
os
.
path
.
join
(
tmp_dir
,
"offload"
)
offload_folder
=
os
.
path
.
join
(
tmp_dir
,
"offload"
)
new_model_with_offload
=
AutoModelForCausalLM
.
from_pretrained
(
new_model_with_offload
=
AutoModelForCausalLM
.
from_pretrained
(
...
@@ -851,7 +851,6 @@ class ModelUtilsTest(TestCasePlus):
...
@@ -851,7 +851,6 @@ class ModelUtilsTest(TestCasePlus):
self
.
assertTrue
(
torch
.
allclose
(
outputs1
.
logits
.
cpu
(),
outputs2
.
logits
.
cpu
()))
self
.
assertTrue
(
torch
.
allclose
(
outputs1
.
logits
.
cpu
(),
outputs2
.
logits
.
cpu
()))
# With state dict temp offload
# With state dict temp offload
offload_folder
=
os
.
path
.
join
(
tmp_dir
,
"offload"
)
new_model_with_offload
=
AutoModelForCausalLM
.
from_pretrained
(
new_model_with_offload
=
AutoModelForCausalLM
.
from_pretrained
(
tmp_dir
,
tmp_dir
,
device_map
=
device_map
,
device_map
=
device_map
,
...
@@ -859,30 +858,29 @@ class ModelUtilsTest(TestCasePlus):
...
@@ -859,30 +858,29 @@ class ModelUtilsTest(TestCasePlus):
offload_state_dict
=
True
,
offload_state_dict
=
True
,
)
)
outputs2
=
new_model_with_offload
(
inputs
)
outputs2
=
new_model_with_offload
(
inputs
)
self
.
assertTrue
(
torch
.
allclose
(
outputs1
.
logits
.
cpu
(),
outputs2
.
logits
.
cpu
()))
self
.
assertTrue
(
torch
.
allclose
(
outputs1
.
logits
.
cpu
(),
outputs2
.
logits
.
cpu
()))
@
require_accelerate
@
require_accelerate
@
mark
.
accelerate_tests
@
mark
.
accelerate_tests
@
require_torch_
gpu
@
require_torch_
accelerator
def
test_from_pretrained_disk_offload_derived_to_base_model
(
self
):
def
test_from_pretrained_disk_offload_derived_to_base_model
(
self
):
derived_model
=
AutoModelForCausalLM
.
from_pretrained
(
"hf-internal-testing/tiny-random-gpt2"
)
derived_model
=
AutoModelForCausalLM
.
from_pretrained
(
"hf-internal-testing/tiny-random-gpt2"
)
device_map
=
{
device_map
=
{
"wte"
:
0
,
"wte"
:
f
"
{
torch_device
}
:0"
,
"wpe"
:
0
,
"wpe"
:
f
"
{
torch_device
}
:0"
,
"h.0"
:
"cpu"
,
"h.0"
:
"cpu"
,
"h.1"
:
"cpu"
,
"h.1"
:
"cpu"
,
"h.2"
:
"cpu"
,
"h.2"
:
"cpu"
,
"h.3"
:
"disk"
,
"h.3"
:
"disk"
,
"h.4"
:
"disk"
,
"h.4"
:
"disk"
,
"ln_f"
:
0
,
"ln_f"
:
f
"
{
torch_device
}
:0"
,
}
}
with
tempfile
.
TemporaryDirectory
()
as
tmp_dir
:
with
tempfile
.
TemporaryDirectory
()
as
tmp_dir
:
inputs
=
torch
.
tensor
([[
1
,
2
,
3
]]).
to
(
0
)
inputs
=
torch
.
tensor
([[
1
,
2
,
3
]]).
to
(
f
"
{
torch_device
}
:0"
)
derived_model
.
save_pretrained
(
tmp_dir
,
use_safetensors
=
True
)
derived_model
.
save_pretrained
(
tmp_dir
,
use_safetensors
=
True
)
base_model
=
AutoModel
.
from_pretrained
(
tmp_dir
)
base_model
=
AutoModel
.
from_pretrained
(
tmp_dir
)
outputs1
=
base_model
.
to
(
0
)(
inputs
)
outputs1
=
base_model
.
to
(
f
"
{
torch_device
}
:0"
)(
inputs
)
# with disk offload
# with disk offload
offload_folder
=
os
.
path
.
join
(
tmp_dir
,
"offload"
)
offload_folder
=
os
.
path
.
join
(
tmp_dir
,
"offload"
)
...
...
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