Commit 690dd32
Add defence for offload_states and reload_states w/o optimizer (deepspeedai#7211)
When the optimizer is not specified, the optimizer will be type
`DeepSpeedZeRoOffload` instead of `DeepSpeedZeroOptimizer_Stage3` (e.g.
for ZeRO-3 pure inference), while `DeepSpeedZeRoOffload` hasn't
implemented methods `reload_states` and `offload_states`.
https://github.com/deepspeedai/DeepSpeed/blob/56005d2b256eb81a88cba0a1984375f9663a3110/deepspeed/runtime/engine.py#L1684-L1707
```log
File "deepspeed/runtime/engine.py", line 3904, in offload_states
self.optimizer.offload_states(include=include, device=device, pin_memory=pin_memory, non_blocking=non_blocking)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'DeepSpeedZeRoOffload' object has no attribute 'offload_states'
```
In addition, deepspeedai#6855 seems to
forget removing the check for `assert not self.zero_offload_param()`, as
suggested by
deepspeedai#6833 (comment),
it returns None when offload_param is not given, and the newly added
assertions have already covered these cases. This PR also removed this
old check.
Signed-off-by: Hollow Man <hollowman@opensuse.org>
Signed-off-by: Max Kovalenko <mkovalenko@habana.ai>1 parent 8740c90 commit 690dd32
1 file changed
+8
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3894 | 3894 | | |
3895 | 3895 | | |
3896 | 3896 | | |
3897 | | - | |
| 3897 | + | |
| 3898 | + | |
| 3899 | + | |
3898 | 3900 | | |
3899 | 3901 | | |
3900 | 3902 | | |
| |||
3913 | 3915 | | |
3914 | 3916 | | |
3915 | 3917 | | |
| 3918 | + | |
| 3919 | + | |
| 3920 | + | |
| 3921 | + | |
| 3922 | + | |
3916 | 3923 | | |
0 commit comments