|
|
|
@ -17,6 +17,7 @@ import paddle.fluid as fluid
|
|
|
|
|
import unittest
|
|
|
|
|
import paddle
|
|
|
|
|
import numpy as np
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
word_dict, verb_dict, label_dict = conll05.get_dict()
|
|
|
|
|
word_dict_len = len(word_dict)
|
|
|
|
@ -101,7 +102,11 @@ def db_lstm(word, predicate, ctx_n2, ctx_n1, ctx_0, ctx_p1, ctx_p2, mark,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestCRFModel(unittest.TestCase):
|
|
|
|
|
def check_network_convergence(self, is_sparse, build_strategy=None):
|
|
|
|
|
def check_network_convergence(self,
|
|
|
|
|
is_sparse,
|
|
|
|
|
build_strategy=None,
|
|
|
|
|
use_cuda=True):
|
|
|
|
|
os.environ['CPU_NUM'] = str(4)
|
|
|
|
|
main = fluid.Program()
|
|
|
|
|
startup = fluid.Program()
|
|
|
|
|
with fluid.program_guard(main, startup):
|
|
|
|
@ -145,12 +150,12 @@ class TestCRFModel(unittest.TestCase):
|
|
|
|
|
paddle.dataset.conll05.test(), buf_size=8192),
|
|
|
|
|
batch_size=16)
|
|
|
|
|
|
|
|
|
|
place = fluid.CUDAPlace(0)
|
|
|
|
|
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
|
|
|
|
|
exe = fluid.Executor(place)
|
|
|
|
|
exe.run(startup)
|
|
|
|
|
|
|
|
|
|
pe = fluid.ParallelExecutor(
|
|
|
|
|
use_cuda=True,
|
|
|
|
|
use_cuda=use_cuda,
|
|
|
|
|
loss_name=avg_cost.name,
|
|
|
|
|
build_strategy=build_strategy)
|
|
|
|
|
|
|
|
|
@ -172,25 +177,33 @@ class TestCRFModel(unittest.TestCase):
|
|
|
|
|
build_strategy = fluid.BuildStrategy()
|
|
|
|
|
build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.AllReduce
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=True, build_strategy=build_strategy)
|
|
|
|
|
is_sparse=True, build_strategy=build_strategy, use_cuda=True)
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=True, build_strategy=build_strategy, use_cuda=False)
|
|
|
|
|
|
|
|
|
|
def test_update_dense_parameter_all_reduce(self):
|
|
|
|
|
build_strategy = fluid.BuildStrategy()
|
|
|
|
|
build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.AllReduce
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=False, build_strategy=build_strategy)
|
|
|
|
|
is_sparse=False, build_strategy=build_strategy, use_cuda=True)
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=False, build_strategy=build_strategy, use_cuda=False)
|
|
|
|
|
|
|
|
|
|
def test_update_sparse_parameter_reduce(self):
|
|
|
|
|
build_strategy = fluid.BuildStrategy()
|
|
|
|
|
build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=True, build_strategy=build_strategy)
|
|
|
|
|
is_sparse=True, build_strategy=build_strategy, use_cuda=True)
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=True, build_strategy=build_strategy, use_cuda=False)
|
|
|
|
|
|
|
|
|
|
def test_update_dense_parameter_reduce(self):
|
|
|
|
|
build_strategy = fluid.BuildStrategy()
|
|
|
|
|
build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=False, build_strategy=build_strategy)
|
|
|
|
|
is_sparse=False, build_strategy=build_strategy, use_cuda=True)
|
|
|
|
|
self.check_network_convergence(
|
|
|
|
|
is_sparse=False, build_strategy=build_strategy, use_cuda=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|