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
apex
Commits
9b96c824
Commit
9b96c824
authored
Apr 02, 2020
by
Kexin Yu
Browse files
seg fault debugging
parent
92186863
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
7 deletions
+13
-7
apex/contrib/optimizers/fused_lamb.py
apex/contrib/optimizers/fused_lamb.py
+13
-7
No files found.
apex/contrib/optimizers/fused_lamb.py
View file @
9b96c824
...
@@ -108,7 +108,8 @@ class FusedLAMB(torch.optim.Optimizer):
...
@@ -108,7 +108,8 @@ class FusedLAMB(torch.optim.Optimizer):
g_all_32
,
g_all_16
=
[],
[]
g_all_32
,
g_all_16
=
[],
[]
for
group
in
self
.
param_groups
:
for
group
in
self
.
param_groups
:
for
p
in
group
[
'params'
]:
for
p
in
group
[
'params'
]:
if
p
.
grad
is
not
None
:
if
p
.
grad
is
None
:
continue
if
p
.
dtype
==
torch
.
float32
:
if
p
.
dtype
==
torch
.
float32
:
g_all_32
.
append
(
p
.
grad
.
data
)
g_all_32
.
append
(
p
.
grad
.
data
)
elif
p
.
dytpe
==
torch
.
float16
:
elif
p
.
dytpe
==
torch
.
float16
:
...
@@ -116,6 +117,7 @@ class FusedLAMB(torch.optim.Optimizer):
...
@@ -116,6 +117,7 @@ class FusedLAMB(torch.optim.Optimizer):
else
:
else
:
raise
RuntimeError
(
'FusedLAMB only support fp16 and fp32.'
)
raise
RuntimeError
(
'FusedLAMB only support fp16 and fp32.'
)
print
(
"====after collect"
)
# compute grad norm for two lists
# compute grad norm for two lists
g_norm_32
,
_
=
multi_tensor_applier
(
self
.
multi_tensor_l2norm
,
g_norm_32
,
_
=
multi_tensor_applier
(
self
.
multi_tensor_l2norm
,
self
.
_dummy_overflow_buf
,
self
.
_dummy_overflow_buf
,
...
@@ -124,9 +126,13 @@ class FusedLAMB(torch.optim.Optimizer):
...
@@ -124,9 +126,13 @@ class FusedLAMB(torch.optim.Optimizer):
self
.
_dummy_overflow_buf
,
self
.
_dummy_overflow_buf
,
[
g_all_16
],
False
)
[
g_all_16
],
False
)
print
(
"====after multi_tensor_l2norm"
)
# blend two grad norms to get global grad norm
# blend two grad norms to get global grad norm
global_grad_norm
=
math
.
sqrt
(
g_norm_32
*
g_norm_32
+
g_norm_16
*
g_norm_16
)
global_grad_norm
=
math
.
sqrt
(
g_norm_32
*
g_norm_32
+
g_norm_16
*
g_norm_16
)
max_grad_norm
=
self
.
defaults
[
'max_grad_norm'
]
max_grad_norm
=
self
.
defaults
[
'max_grad_norm'
]
print
(
"====global_grad_norm:"
,
global_grad_norm
)
print
(
"====max_grad_norm:"
,
max_grad_norm
)
for
group
in
self
.
param_groups
:
for
group
in
self
.
param_groups
:
bias_correction
=
1
if
group
[
'bias_correction'
]
else
0
bias_correction
=
1
if
group
[
'bias_correction'
]
else
0
...
...
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