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
OpenDAS
MMCV
Commits
d4da3daa
Unverified
Commit
d4da3daa
authored
Jul 25, 2020
by
Wang Xinjiang
Committed by
GitHub
Jul 25, 2020
Browse files
Syncbuf (#447)
* More robust sync buffer hook * More robust sync buffer hook * Reformat
parent
cec5aace
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
2 deletions
+13
-2
mmcv/runner/hooks/__init__.py
mmcv/runner/hooks/__init__.py
+2
-1
mmcv/runner/hooks/sync_buffer.py
mmcv/runner/hooks/sync_buffer.py
+3
-1
tests/test_runner/test_hooks.py
tests/test_runner/test_hooks.py
+8
-0
No files found.
mmcv/runner/hooks/__init__.py
View file @
d4da3daa
...
@@ -10,11 +10,12 @@ from .memory import EmptyCacheHook
...
@@ -10,11 +10,12 @@ from .memory import EmptyCacheHook
from
.momentum_updater
import
MomentumUpdaterHook
from
.momentum_updater
import
MomentumUpdaterHook
from
.optimizer
import
Fp16OptimizerHook
,
OptimizerHook
from
.optimizer
import
Fp16OptimizerHook
,
OptimizerHook
from
.sampler_seed
import
DistSamplerSeedHook
from
.sampler_seed
import
DistSamplerSeedHook
from
.sync_buffer
import
SyncBuffersHook
__all__
=
[
__all__
=
[
'HOOKS'
,
'Hook'
,
'CheckpointHook'
,
'ClosureHook'
,
'LrUpdaterHook'
,
'HOOKS'
,
'Hook'
,
'CheckpointHook'
,
'ClosureHook'
,
'LrUpdaterHook'
,
'OptimizerHook'
,
'Fp16OptimizerHook'
,
'IterTimerHook'
,
'OptimizerHook'
,
'Fp16OptimizerHook'
,
'IterTimerHook'
,
'DistSamplerSeedHook'
,
'EmptyCacheHook'
,
'LoggerHook'
,
'MlflowLoggerHook'
,
'DistSamplerSeedHook'
,
'EmptyCacheHook'
,
'LoggerHook'
,
'MlflowLoggerHook'
,
'PaviLoggerHook'
,
'TextLoggerHook'
,
'TensorboardLoggerHook'
,
'PaviLoggerHook'
,
'TextLoggerHook'
,
'TensorboardLoggerHook'
,
'WandbLoggerHook'
,
'MomentumUpdaterHook'
'WandbLoggerHook'
,
'MomentumUpdaterHook'
,
'SyncBuffersHook'
]
]
mmcv/runner/hooks/sync_buffer.py
View file @
d4da3daa
# Copyright (c) Open-MMLab. All rights reserved.
# Copyright (c) Open-MMLab. All rights reserved.
import
torch.distributed
as
dist
import
torch.distributed
as
dist
from
..dist_utils
import
get_dist_info
from
.hook
import
HOOKS
,
Hook
from
.hook
import
HOOKS
,
Hook
...
@@ -19,7 +20,8 @@ class SyncBuffersHook(Hook):
...
@@ -19,7 +20,8 @@ class SyncBuffersHook(Hook):
def
after_epoch
(
self
,
runner
):
def
after_epoch
(
self
,
runner
):
"""All-reduce model buffers at the end of each epoch."""
"""All-reduce model buffers at the end of each epoch."""
if
self
.
distributed
:
_
,
world_size
=
get_dist_info
()
if
self
.
distributed
and
world_size
>
1
:
buffers
=
runner
.
model
.
buffers
()
buffers
=
runner
.
model
.
buffers
()
world_size
=
dist
.
get_world_size
()
world_size
=
dist
.
get_world_size
()
for
tensor
in
buffers
:
for
tensor
in
buffers
:
...
...
tests/test_runner/test_hooks.py
View file @
d4da3daa
...
@@ -42,6 +42,14 @@ def test_pavi_hook():
...
@@ -42,6 +42,14 @@ def test_pavi_hook():
iteration
=
5
)
iteration
=
5
)
def
test_sync_buffers_hook
():
loader
=
DataLoader
(
torch
.
ones
((
5
,
2
)))
runner
=
_build_demo_runner
()
runner
.
register_hook_from_cfg
(
dict
(
type
=
'SyncBuffersHook'
))
runner
.
run
([
loader
,
loader
],
[(
'train'
,
1
),
(
'val'
,
1
)],
1
)
shutil
.
rmtree
(
runner
.
work_dir
)
def
test_momentum_runner_hook
():
def
test_momentum_runner_hook
():
"""xdoctest -m tests/test_hooks.py test_momentum_runner_hook."""
"""xdoctest -m tests/test_hooks.py test_momentum_runner_hook."""
sys
.
modules
[
'pavi'
]
=
MagicMock
()
sys
.
modules
[
'pavi'
]
=
MagicMock
()
...
...
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