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
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