mirror of
https://github.com/hpcaitech/ColossalAI.git
synced 2025-09-04 18:40:28 +00:00
[misc] update pre-commit and run all files (#4752)
* [misc] update pre-commit * [misc] run pre-commit * [misc] remove useless configuration files * [misc] ignore cuda for clang-format
This commit is contained in:
@@ -14,7 +14,6 @@ from colossalai.zero import LowLevelZeroOptimizer
|
||||
|
||||
|
||||
class MlpModel(nn.Module):
|
||||
|
||||
def __init__(self):
|
||||
super(MlpModel, self).__init__()
|
||||
self.linear1 = nn.Linear(128, 256)
|
||||
@@ -36,16 +35,12 @@ def exam_zero_1_2_grad_acc():
|
||||
# create optimizer
|
||||
zero1_optimizer = torch.optim.Adam(zero1_model.parameters(), lr=1)
|
||||
zero2_optimizer = torch.optim.Adam(zero2_model.parameters(), lr=1)
|
||||
zero1_optimizer = LowLevelZeroOptimizer(zero1_optimizer,
|
||||
overlap_communication=True,
|
||||
initial_scale=32,
|
||||
clip_grad_norm=1.0,
|
||||
verbose=True)
|
||||
zero2_optimizer = LowLevelZeroOptimizer(zero2_optimizer,
|
||||
overlap_communication=True,
|
||||
partition_grad=True,
|
||||
initial_scale=32,
|
||||
clip_grad_norm=1.0)
|
||||
zero1_optimizer = LowLevelZeroOptimizer(
|
||||
zero1_optimizer, overlap_communication=True, initial_scale=32, clip_grad_norm=1.0, verbose=True
|
||||
)
|
||||
zero2_optimizer = LowLevelZeroOptimizer(
|
||||
zero2_optimizer, overlap_communication=True, partition_grad=True, initial_scale=32, clip_grad_norm=1.0
|
||||
)
|
||||
# create data
|
||||
seed_all(2021 + local_rank)
|
||||
input_data1 = torch.randn(32, 128).cuda()
|
||||
@@ -91,10 +86,9 @@ def exam_zero_1_grad_acc(sync):
|
||||
# we only test stage 1 here
|
||||
# in `check_sharded_param_consistency.py`, we will test whether
|
||||
# level 1 and 2 will produce exactly the same results
|
||||
zero_optimizer = LowLevelZeroOptimizer(zero_optimizer,
|
||||
overlap_communication=False,
|
||||
reduce_bucket_size=262144,
|
||||
clip_grad_norm=1.0)
|
||||
zero_optimizer = LowLevelZeroOptimizer(
|
||||
zero_optimizer, overlap_communication=False, reduce_bucket_size=262144, clip_grad_norm=1.0
|
||||
)
|
||||
|
||||
torch_optimizer = torch.optim.Adam(torch_model.parameters(), lr=1)
|
||||
|
||||
@@ -104,7 +98,6 @@ def exam_zero_1_grad_acc(sync):
|
||||
input_data2 = torch.randn(32, 128).cuda()
|
||||
|
||||
def fwd_bwd_func(no_sync, cur_data, check_flag):
|
||||
|
||||
# zero1 fwd and bwd
|
||||
with conditional_context(zero_optimizer.no_sync(), no_sync):
|
||||
zero_output = zero_model(cur_data)
|
||||
@@ -135,7 +128,7 @@ def exam_zero_1_grad_acc(sync):
|
||||
|
||||
|
||||
def run_dist(rank, world_size, port):
|
||||
colossalai.launch(config=dict(), rank=rank, world_size=world_size, port=port, host='localhost')
|
||||
colossalai.launch(config=dict(), rank=rank, world_size=world_size, port=port, host="localhost")
|
||||
|
||||
exam_zero_1_grad_acc(sync=True)
|
||||
exam_zero_1_grad_acc(sync=False)
|
||||
@@ -147,5 +140,5 @@ def test_grad_accumulation():
|
||||
spawn(run_dist, 2)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
test_grad_accumulation()
|
||||
|
@@ -2,7 +2,6 @@ import copy
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
import torch.distributed as dist
|
||||
import torch.nn as nn
|
||||
from torch.nn.parallel import DistributedDataParallel as DDP
|
||||
from torch.testing import assert_close
|
||||
@@ -14,7 +13,6 @@ from colossalai.zero import LowLevelZeroOptimizer
|
||||
|
||||
|
||||
class MlpModel(nn.Module):
|
||||
|
||||
def __init__(self):
|
||||
super(MlpModel, self).__init__()
|
||||
self.linear1 = nn.Linear(123, 253)
|
||||
@@ -74,14 +72,12 @@ def exam_zero_1_2():
|
||||
# create optimizer
|
||||
zero1_optimizer = torch.optim.Adam(zero1_model.parameters(), lr=1)
|
||||
zero2_optimizer = torch.optim.Adam(zero2_model.parameters(), lr=1)
|
||||
zero1_optimizer = LowLevelZeroOptimizer(zero1_optimizer,
|
||||
overlap_communication=True,
|
||||
initial_scale=128,
|
||||
verbose=True)
|
||||
zero2_optimizer = LowLevelZeroOptimizer(zero2_optimizer,
|
||||
overlap_communication=True,
|
||||
partition_grad=True,
|
||||
initial_scale=128)
|
||||
zero1_optimizer = LowLevelZeroOptimizer(
|
||||
zero1_optimizer, overlap_communication=True, initial_scale=128, verbose=True
|
||||
)
|
||||
zero2_optimizer = LowLevelZeroOptimizer(
|
||||
zero2_optimizer, overlap_communication=True, partition_grad=True, initial_scale=128
|
||||
)
|
||||
# create data
|
||||
seed_all(2001 + local_rank)
|
||||
input_data = torch.randn(32, 123).cuda()
|
||||
@@ -109,7 +105,7 @@ def exam_zero_1_2():
|
||||
assert torch.equal(z1p.data, z2p.data)
|
||||
|
||||
|
||||
@parameterize('dtype', [torch.float16, torch.bfloat16])
|
||||
@parameterize("dtype", [torch.float16, torch.bfloat16])
|
||||
def exam_zero_1_torch_ddp(world_size, dtype: torch.dtype):
|
||||
"""
|
||||
In this test, two pairs of model and optimizers are created.
|
||||
@@ -134,10 +130,9 @@ def exam_zero_1_torch_ddp(world_size, dtype: torch.dtype):
|
||||
# we only test stage 1 here
|
||||
# in `check_sharded_param_consistency.py`, we will test whether
|
||||
# level 1 and 2 will produce exactly the same results
|
||||
zero_optimizer = LowLevelZeroOptimizer(zero_optimizer,
|
||||
overlap_communication=True,
|
||||
initial_scale=1,
|
||||
reduce_bucket_size=1024 * 1024)
|
||||
zero_optimizer = LowLevelZeroOptimizer(
|
||||
zero_optimizer, overlap_communication=True, initial_scale=1, reduce_bucket_size=1024 * 1024
|
||||
)
|
||||
|
||||
torch_optimizer = torch.optim.SGD(torch_model.parameters(), lr=1)
|
||||
|
||||
@@ -178,7 +173,7 @@ def exam_zero_1_torch_ddp(world_size, dtype: torch.dtype):
|
||||
|
||||
|
||||
def run_dist(rank, world_size, port):
|
||||
colossalai.launch(config=dict(), rank=rank, world_size=world_size, port=port, host='localhost')
|
||||
colossalai.launch(config=dict(), rank=rank, world_size=world_size, port=port, host="localhost")
|
||||
|
||||
exam_zero_1_torch_ddp(world_size=world_size)
|
||||
exam_zero_1_2()
|
||||
@@ -190,5 +185,5 @@ def test_zero_1_2():
|
||||
spawn(run_dist, 2)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
test_zero_1_2()
|
||||
|
@@ -2,19 +2,17 @@ import copy
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
import torch.distributed as dist
|
||||
import torch.nn as nn
|
||||
from torch.nn.parallel import DistributedDataParallel as DDP
|
||||
from torch.testing import assert_close
|
||||
|
||||
import colossalai
|
||||
from colossalai.testing import parameterize, rerun_if_address_is_in_use, spawn
|
||||
from colossalai.testing import rerun_if_address_is_in_use, spawn
|
||||
from colossalai.testing.random import seed_all
|
||||
from colossalai.zero import LowLevelZeroOptimizer
|
||||
|
||||
|
||||
class MlpModel(nn.Module):
|
||||
|
||||
def __init__(self):
|
||||
super(MlpModel, self).__init__()
|
||||
self.linear1 = nn.Linear(12, 24)
|
||||
@@ -61,10 +59,9 @@ def exam_zero_1_torch_ddp_ckpt():
|
||||
|
||||
# we only test stage 1 here
|
||||
# the state dicts of stage 1 and stage 2 are the same
|
||||
zero_optimizer = LowLevelZeroOptimizer(zero_optimizer,
|
||||
overlap_communication=True,
|
||||
initial_scale=1,
|
||||
reduce_bucket_size=262144)
|
||||
zero_optimizer = LowLevelZeroOptimizer(
|
||||
zero_optimizer, overlap_communication=True, initial_scale=1, reduce_bucket_size=262144
|
||||
)
|
||||
|
||||
torch_optimizer = torch.optim.Adam(torch_model.parameters(), lr=1)
|
||||
|
||||
@@ -88,7 +85,7 @@ def exam_zero_1_torch_ddp_ckpt():
|
||||
zero_state_dict = zero_optimizer.state_dict()
|
||||
|
||||
# examine the original state dict
|
||||
for torch_state, zero_state in zip(torch_state_dict['state'].values(), zero_state_dict['state'].values()):
|
||||
for torch_state, zero_state in zip(torch_state_dict["state"].values(), zero_state_dict["state"].values()):
|
||||
for t_v, z_v in zip(torch_state.values(), zero_state.values()):
|
||||
loose_close(t_v, z_v)
|
||||
|
||||
@@ -100,13 +97,13 @@ def exam_zero_1_torch_ddp_ckpt():
|
||||
zero_state_dict = zero_optimizer.state_dict()
|
||||
|
||||
# examine the loaded state dict
|
||||
for torch_state, zero_state in zip(torch_state_dict['state'].values(), zero_state_dict['state'].values()):
|
||||
for torch_state, zero_state in zip(torch_state_dict["state"].values(), zero_state_dict["state"].values()):
|
||||
for t_v, z_v in zip(torch_state.values(), zero_state.values()):
|
||||
loose_close(t_v, z_v)
|
||||
|
||||
|
||||
def run_dist(rank, world_size, port):
|
||||
colossalai.launch(config=dict(), rank=rank, world_size=world_size, port=port, host='localhost')
|
||||
colossalai.launch(config=dict(), rank=rank, world_size=world_size, port=port, host="localhost")
|
||||
|
||||
exam_zero_1_torch_ddp_ckpt()
|
||||
|
||||
@@ -117,5 +114,5 @@ def test_zero_ckpt():
|
||||
spawn(run_dist, 2)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
test_zero_ckpt()
|
||||
|
Reference in New Issue
Block a user