|
|
|
@@ -678,3 +678,56 @@ def test_train_64k_8p(batch_size=32, num_classes=65536): # 1048576 #131072 #327 |
|
|
|
assert v == [[1, 1], [dev_num, 1]] |
|
|
|
elif re.search('ReduceSum-op', k) is not None: |
|
|
|
assert v == [[1, dev_num]] |
|
|
|
|
|
|
|
|
|
|
|
def test_train_8k_8p_gpu(batch_size=32, num_classes=8192): |
|
|
|
dev_num = 8 |
|
|
|
context.set_context(mode=context.GRAPH_MODE, device_target="GPU") |
|
|
|
context.set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL, device_num=dev_num) |
|
|
|
set_algo_parameters(elementwise_op_strategy_follow=True) |
|
|
|
resset_op_id() |
|
|
|
np.random.seed(6) |
|
|
|
input_np = np.ones([batch_size, 3, 224, 224]).astype(np.float32) |
|
|
|
label_np = np.zeros([batch_size]).astype(np.int32) |
|
|
|
for i in range(0, batch_size): |
|
|
|
label_np[i] = i % num_classes |
|
|
|
dataset = DatasetLenet(Tensor(input_np), Tensor(label_np), 1) |
|
|
|
net = resnet50(num_classes) |
|
|
|
loss = SoftmaxCrossEntropyExpand(sparse=True) |
|
|
|
opt = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), 0.01, 0.9) |
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt) |
|
|
|
model.train(5, dataset, dataset_sink_mode=False) |
|
|
|
strategies = _executor._get_strategy(model._train_network) |
|
|
|
for (k, v) in strategies.items(): |
|
|
|
if re.search('Conv2D-op', k) is not None: |
|
|
|
assert v[0][0] == dev_num |
|
|
|
elif re.search('MatMul-op', k) is not None: |
|
|
|
assert v == [[1, 1], [dev_num, 1]] |
|
|
|
elif re.search('ReduceSum-op', k) is not None: |
|
|
|
assert v == [[1, dev_num]] |
|
|
|
|
|
|
|
def test_train_4k_8p_gpu(batch_size=32, num_classes=4096): |
|
|
|
dev_num = 8 |
|
|
|
context.set_context(mode=context.GRAPH_MODE, device_target="GPU") |
|
|
|
context.set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL, device_num=dev_num) |
|
|
|
set_algo_parameters(elementwise_op_strategy_follow=True) |
|
|
|
resset_op_id() |
|
|
|
np.random.seed(6) |
|
|
|
input_np = np.ones([batch_size, 3, 224, 224]).astype(np.float32) |
|
|
|
label_np = np.zeros([batch_size]).astype(np.int32) |
|
|
|
for i in range(0, batch_size): |
|
|
|
label_np[i] = i % num_classes |
|
|
|
dataset = DatasetLenet(Tensor(input_np), Tensor(label_np), 1) |
|
|
|
net = resnet50(num_classes) |
|
|
|
loss = SoftmaxCrossEntropyExpand(sparse=True) |
|
|
|
opt = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), 0.01, 0.9) |
|
|
|
model = Model(net, loss_fn=loss, optimizer=opt) |
|
|
|
model.train(5, dataset, dataset_sink_mode=False) |
|
|
|
strategies = _executor._get_strategy(model._train_network) |
|
|
|
for (k, v) in strategies.items(): |
|
|
|
if re.search('Conv2D-op', k) is not None: |
|
|
|
assert v[0][0] == dev_num |
|
|
|
elif re.search('MatMul-op', k) is not None: |
|
|
|
assert v == [[dev_num, 1], [1, 1]] |
|
|
|
elif re.search('ReduceSum-op', k) is not None: |
|
|
|
assert v == [[dev_num, 1]] |