def compile_net(net): context.set_context(save_graphs=True) optimizer = Momentum(net.trainable_params(), learning_rate=0.1, momentum=0.9) train_net = TrainOneStepCell(net, optimizer) train_net.set_auto_parallel() _executor.compile(train_net, _x, _b) context.reset_auto_parallel_context()
def test_spares_lazy_adam_compile(): """ test sparse adam compile """ indices = Tensor(np.array([0, 1]).astype(np.int32)) label = Tensor(np.zeros([2, 1, 2]).astype(np.float32)) net = NetWithSparseGatherV2() net.set_train() optimizer = LazyAdam(net.trainable_params(), learning_rate=0.1, weight_decay=0.9, loss_scale=2.0) train_network = TrainOneStepCell(net, optimizer) _executor.compile(train_network, indices, label)
def compile_net(net, shape): x = Tensor(np.ones(shape), dtype=ms.int32) y = Tensor(np.ones(shape), dtype=ms.float32) z = Tensor(np.ones(shape), dtype=ms.int32) optimizer = Adam(net.trainable_params(), learning_rate=0.1) train_net = TrainOneStepCell(net, optimizer) train_net.set_auto_parallel() train_net.set_train() _executor.compile(train_net, x, y, z) context.reset_auto_parallel_context()
def compile_net2(net): context.set_context(mode=context.GRAPH_MODE, save_graphs=False) optimizer = Momentum(net.trainable_params(), learning_rate=0.1, momentum=0.9) train_net = TrainOneStepCell(net, optimizer) train_net.set_auto_parallel() train_net.set_train() _executor.compile(train_net, _x2) context.reset_auto_parallel_context()
def test_exec_save_checkpoint(): net = Net() loss = SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True) opt = Momentum(net.trainable_params(), 0.0, 0.9, 0.0001, 1024) loss_net = WithLossCell(net, loss) train_network = TrainOneStepCell(loss_net, opt) _exec_save_checkpoint(train_network, ckpoint_file_name="./new_ckpt.ckpt") load_checkpoint("new_ckpt.ckpt")
def test_spares_proximal_ada_grad(): """ test sparse proximal_ada_grad """ indices = Tensor(np.array([0, 1]).astype(np.int32)) label = Tensor(np.zeros([2, 1, 2]).astype(np.float32)) net = NetWithSparseGatherV2() net.set_train() optimizer = ProximalAdagrad(net.trainable_params(), weight_decay=0.9, loss_scale=1024.0) train_network = TrainOneStepCell(net, optimizer) _executor.compile(train_network, indices, label)
def test_spares_ftrl_compile(): """ test sparse ftrl compile """ indices = Tensor(np.array([0, 1]).astype(np.int32)) label = Tensor(np.zeros([2, 1, 2]).astype(np.float32)) net = NetWithSparseGatherV2() net.set_train() optimizer = FTRL(net.trainable_params(), loss_scale=2.0) train_network = TrainOneStepCell(net, optimizer) _executor.compile(train_network, indices, label)
def test_proximal_ada_grad(): """ test_proximal_ada_grad """ inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = ProximalAdagrad(net.trainable_params()) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_ftrl(): """ test_ftrl """ inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = FTRL(net.trainable_params(), weight_decay=0.9, loss_scale=2.0) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_save_checkpoint_for_network(): """ test save_checkpoint for network""" net = Net() loss = SoftmaxCrossEntropyWithLogits(sparse=True) opt = Momentum(net.trainable_params(), 0.0, 0.9, 0.0001, 1024) loss_net = WithLossCell(net, loss) train_network = TrainOneStepCell(loss_net, opt) save_checkpoint(train_network, ckpt_file_name="./new_ckpt.ckpt") load_checkpoint("new_ckpt.ckpt")
def test_lazy_adam_net(): indices = Tensor(np.array([0, 0, 1]).astype(np.int32)) label = Tensor(np.zeros([2, 1, 2]).astype(np.float32)) net = NetWithSparseGatherV2() optimizer = LazyAdam(net.trainable_params(), learning_rate=0.1, weight_decay=0.9, loss_scale=2.0) optimizer.target = 'Ascend' train_network = TrainOneStepCell(net, optimizer) output = train_network(indices, label) np.allclose(output.asnumpy(), np.array([[[2, 2]], [[2, 2]], [[2, 2]]])) np.allclose(net.weight1.asnumpy(), np.array([[[0.9, 0.9]], [[0.9, 0.9]], [[1.0, 1.0]]])) np.allclose(net.weight2.asnumpy(), np.array([[[0.9, 0.9]], [[0.9, 0.9]], [[0.9, 0.9]]]))
def auto_parallel_compile_net(mode, dev_num, strategy1=None, strategy2=None): context.set_context(mode=context.GRAPH_MODE) context.set_auto_parallel_context(parallel_mode=mode, device_num=dev_num, enable_parallel_optimizer=True) inputs = Tensor(np.ones([32, 48]).astype(np.float32)) label = Tensor(np.zeros([32, 16]).astype(np.float32)) net = Net2(strategy1, strategy2) net = _VirtualDatasetCell(net) optimizer = Momentum(net.trainable_params(), learning_rate=0.1, momentum=0.9) train_network = TrainOneStepCell(net, optimizer) train_network.set_auto_parallel() _executor.compile(train_network, inputs, label) context.reset_auto_parallel_context()
def test_lamb_compile(): """ test_Lamb_compile """ inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = Lamb(net.trainable_params(), decay_steps=10) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_sit_embedding_lookup_net(): indices = Tensor(np.array([0, 1, 2]).astype(np.int32)) label = Tensor(np.random.randn(3, 8).astype(np.float32)) net1 = NetWithEmbeddingLookUp(vocab_size=8, embedding_size=8, target="CPU") loss = nn.SoftmaxCrossEntropyWithLogits(reduction="mean") optimizer1 = nn.Adam(params=net1.trainable_params(), learning_rate=0.1) optimizer1.unique = True train_network1 = TrainOneStepCell(WithLossCell(net1, loss), optimizer1) train_network1.set_train() out1 = train_network1(indices, label) net2 = NetWithEmbeddingLookUp(vocab_size=8, embedding_size=8, target="CPU") optimizer2 = nn.Adam(params=net2.trainable_params(), learning_rate=0.1) optimizer2.unique = False optimizer2.target = "CPU" train_network2 = TrainOneStepCell(WithLossCell(net2, loss), optimizer2) train_network2.set_train() out2 = train_network2(indices, label) assert np.allclose(out1.asnumpy(), out2.asnumpy(), 0.001, 0.001)
def run_allreduce(op): """run_allreduce""" context.set_context(mode=context.GRAPH_MODE) input_tensor = Tensor(np.array([[1.2, 2.1], [2.2, 3.2]], dtype=np.float32)) label_tensor = Tensor(np.array([[1.2], [2.2]], dtype=np.float32)) network = AllReduceNet(2, 1, op) loss_fn = nn.SoftmaxCrossEntropyWithLogits() optimizer = Momentum(filter(lambda x: x.requires_grad, network.get_parameters()), learning_rate=0.1, momentum=0.9) network = WithLossCell(network, loss_fn) network = TrainOneStepCell(network, optimizer) _executor.compile(network, input_tensor, label_tensor)
def test_lamb_compile_dynamic_lr(): """ test_Lamb_compile """ inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() warmup_decay_lr = LambLearningRate(0.01, 0.0001, 10, 20, 1.0) optimizer = Lamb(net.trainable_params(), warmup_decay_lr) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_adamw_compile(): """ test_adamw_compile """ inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = AdamWeightDecay(net.trainable_params(), learning_rate=0.1) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_allswap(): """run_allswap""" context.set_context(mode=context.GRAPH_MODE) input_tensor = Tensor(np.ones((100, 20)), dtype=mindspore.float32) label_tensor = Tensor(np.ones((1, 20)), dtype=mindspore.float32) network = AllSwapNet(100, 20, 20) loss_fn = nn.SoftmaxCrossEntropyWithLogits() optimizer = Momentum(filter(lambda x: x.requires_grad, network.get_parameters()), learning_rate=0.1, momentum=0.9) network = WithLossCell(network, loss_fn) network = TrainOneStepCell(network, optimizer) _executor.compile(network, input_tensor, label_tensor)
def test_lamb_compile(): """ test_Lamb_compile """ context.set_auto_parallel_context(parallel_mode="data_parallel", device_num=2, enable_parallel_optimizer=True) inputs = Tensor(np.ones([32, 128]).astype(np.float32)) label = Tensor(np.zeros([32, 768]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = Lamb(net.trainable_params(), learning_rate=0.1) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label) context.reset_auto_parallel_context()
def __init__(self, network, loss_fn=None, optimizer=None): super(AdversarialDefense, self).__init__(network) network = check_model('network', network, Cell) if loss_fn is None: loss_fn = SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True) if optimizer is None: optimizer = Momentum(params=network.trainable_params(), learning_rate=0.01, momentum=0.9) loss_net = WithLossCell(network, loss_fn) self._train_net = TrainOneStepCell(loss_net, optimizer) self._train_net.set_train()
def test_async_dump_net_multi_layer_mode1(): test_name = "test_async_dump_net_multi_layer_mode1" json_file = os.path.join(os.getcwd(), "{}.json".format(test_name)) device_id = context.get_context("device_id") dump_full_path = os.path.join("/tmp/async_dump/", "{}_{}".format(test_name, device_id)) os.system("rm -rf {}/*".format(dump_full_path)) os.environ["MINDSPORE_DUMP_CONFIG"] = json_file weight = Tensor(np.ones((1000, 2048)).astype(np.float32)) bias = Tensor(np.ones((1000, )).astype(np.float32)) net = ReluReduceMeanDenseRelu(weight, bias, 2048, 1000) criterion = SoftmaxCrossEntropyWithLogits(sparse=False) optimizer = Momentum(learning_rate=0.1, momentum=0.1, params=filter(lambda x: x.requires_grad, net.get_parameters())) net_with_criterion = WithLossCell(net, criterion) train_network = TrainOneStepCell(net_with_criterion, optimizer) train_network.set_train() inputs = Tensor(np.random.randn(32, 2048, 7, 7).astype(np.float32)) label = Tensor(np.zeros(shape=(32, 1000)).astype(np.float32)) net_dict = train_network(inputs, label) dump_path = "/tmp/async_dump/{}/device_{}/test_graph_0/0/0/".format( test_name, device_id) dump_file = os.listdir(dump_path) dump_file_name = "" for file in dump_file: if "SoftmaxCrossEntropyWithLogits" in file: dump_file_name = file dump_file_full_path = os.path.join(dump_path, dump_file_name) npy_path = os.path.join(os.getcwd(), "./{}".format(test_name)) if os.path.exists(npy_path): shutil.rmtree(npy_path) os.mkdir(npy_path) tool_path = search_path('/usr/local/Ascend', 'msaccucmp.pyc') if tool_path: cmd = "python {0} convert -d {1} -out {2}".format( tool_path, dump_file_full_path, npy_path) os.system(cmd) npy_file_list = os.listdir(npy_path) dump_result = {} for file in npy_file_list: if "output.0.npy" in file: dump_result["output0"] = np.load(os.path.join(npy_path, file)) for index, value in enumerate(net_dict): assert value.asnumpy() == dump_result["output0"][index] else: print('not find convert tools msaccucmp.pyc')
def train(net, data, label): learning_rate = 0.01 momentum = 0.9 optimizer = Momentum( filter(lambda x: x.requires_grad, net.get_parameters()), learning_rate, momentum) criterion = nn.SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True) net_with_criterion = WithLossCell(net, criterion) train_network = TrainOneStepCell(net_with_criterion, optimizer) # optimizer train_network.set_train() res = train_network(data, label) print(res) assert res
def test_adamoffload_group(): """ test_adam_group_lr_and_weight_decay """ inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() net_with_loss = WithLossCell(net, loss) all_params = net.trainable_params() schedule_lr = nn.PolynomialDecayLR(0.01, 0.0001, 3, power=1.0) group_params = [{'params': [all_params[0]], 'lr': 0.02, 'weight_decay': 0.9}, {'params': [all_params[1]]}] optimizer = nn.AdamOffload(group_params, learning_rate=schedule_lr) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_inference_phase(): context.set_auto_parallel_context(device_num=8, global_rank=0) context.set_auto_parallel_context(parallel_mode="auto_parallel") set_cost_model_context(run_phase=1) net = Net(512, 128) predict = Tensor(np.ones([64, 512]).astype(np.float32) * 0.001) label = Tensor(np.ones([64, 128]).astype(np.float32)) loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = Momentum(params=net.trainable_params(), learning_rate=0.1, momentum=0.9) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) train_network.set_train() output = train_network(predict, label)
def test_trainTensor(num_classes=10, epoch=15, batch_size=32): net = AlexNet(num_classes) lr = 0.1 momentum = 0.9 optimizer = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), lr, momentum, weight_decay=0.0001) criterion = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') net_with_criterion = WithLossCell(net, criterion) train_network = TrainOneStepCell(net_with_criterion, optimizer) train_network.set_train() losses = [] for i in range(0, epoch): data = Tensor(np.ones([batch_size, 3, 227, 227]).astype(np.float32) * 0.01) label = Tensor(np.ones([batch_size]).astype(np.int32)) loss = train_network(data, label).asnumpy() losses.append(loss) assert losses[-1] < 0.01
def test_AdamWeightDecayDynamicLR(): """ test_AdamWeightDecayDynamicLR """ auto_parallel_context().set_enable_parallel_optimizer(True) context.set_auto_parallel_context(parallel_mode="data_parallel", device_num=2) inputs = Tensor(np.ones([32, 128]).astype(np.float32)) label = Tensor(np.zeros([32, 768]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() optimizer = AdamWeightDecayDynamicLR(net.trainable_params(), decay_steps=20, learning_rate=0.1) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)
def test_trainTensor(num_classes=10, epoch=8, batch_size=1): context.set_context(mode=context.GRAPH_MODE, device_target="GPU") net = resnet50(num_classes) lr = 0.1 momentum = 0.9 optimizer = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), lr, momentum) criterion = nn.SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True) net_with_criterion = WithLossCell(net, criterion) train_network = TrainOneStepCell(net_with_criterion, optimizer) # optimizer train_network.set_train() losses = [] for i in range(0, epoch): data = Tensor(np.ones([batch_size, 3, 224, 224]).astype(np.float32) * 0.01) label = Tensor(np.ones([batch_size]).astype(np.int32)) loss = train_network(data, label) losses.append(loss) assert(losses[-1].asnumpy() < 1)
def test_data_parallel_dense(): """test_data_parallel_dense""" context.set_context(mode=context.GRAPH_MODE) context.reset_auto_parallel_context() context.set_auto_parallel_context(parallel_mode=ParallelMode.DATA_PARALLEL, mirror_mean=True, device_num=8) inp = Tensor(np.ones([32, 128]).astype(np.float32) * 0.01) label = Tensor(np.zeros([32, 768]).astype(np.float32)) net = DenseMMNet() loss_fn = nn.SoftmaxCrossEntropyWithLogits() optimizer = Momentum(filter(lambda x: x.requires_grad, net.get_parameters()), learning_rate=0.1, momentum=0.9) net = WithLossCell(net, loss_fn) net = TrainOneStepCell(net, optimizer) _executor.compile(net, inp, label) context.reset_auto_parallel_context()
def test_dense_gen_graph(): context.set_context(mode=context.GRAPH_MODE) init() network = Net(512, 128) loss_fn = nn.SoftmaxCrossEntropyWithLogits() optimizer = Momentum(filter(lambda x: x.requires_grad, network.get_parameters()), learning_rate=0.1, momentum=0.9) network = WithLossCell(network, loss_fn) context.reset_auto_parallel_context() context.set_auto_parallel_context(parallel_mode=ParallelMode.HYBRID_PARALLEL, mirror_mean=True, device_num=8) network = TrainOneStepCell(network, optimizer) predict = Tensor(np.ones([64, 512]).astype(np.float32) * 0.01) label = Tensor(np.zeros([64, 32]).astype(np.float32)) network.set_auto_parallel() _executor.compile(network, predict, label)
def test_lars(): inputs = Tensor(np.ones([1, 64]).astype(np.float32)) label = Tensor(np.zeros([1, 10]).astype(np.float32)) net = Net() net.set_train() loss = nn.SoftmaxCrossEntropyWithLogits() lr = multisteplr(10, [2, 6]) SGD = Momentum(net.trainable_params(), lr, 0.9) optimizer = LARS(SGD, epsilon=1e-08, hyperpara=0.02, decay_filter=lambda x: 'bn' not in x.name, lars_filter=lambda x: 'bn' not in x.name) net_with_loss = WithLossCell(net, loss) train_network = TrainOneStepCell(net_with_loss, optimizer) _executor.compile(train_network, inputs, label)