From 51ce3e9ed1123e903cdf1587f2acf3f5035fb6bd Mon Sep 17 00:00:00 2001 From: hyeonseok lee Date: Thu, 25 Aug 2022 23:07:27 +0900 Subject: [PATCH] [unittest] generate positional encoding unittest - Generate positional encoding layer/model unittest. Signed-off-by: hyeonseok lee --- nntrainer/layers/positional_encoding_layer.cpp | 1 + nntrainer/layers/positional_encoding_layer.h | 4 +-- packaging/unittest_layers_v2.tar.gz | Bin 75210 -> 76593 bytes packaging/unittest_models_v2.tar.gz | Bin 43230 -> 45271 bytes test/input_gen/genLayerTests.py | 31 ++++++++++++++++ test/input_gen/genModelTests_v2.py | 30 +++++++++++++++- test/input_gen/recorder.py | 1 - test/unittest/layers/meson.build | 1 + .../layers/unittest_layers_positional_encoding.cpp | 39 +++++++++++++++++++++ test/unittest/models/unittest_models.cpp | 26 ++++++++++++++ 10 files changed, 129 insertions(+), 4 deletions(-) create mode 100644 test/unittest/layers/unittest_layers_positional_encoding.cpp diff --git a/nntrainer/layers/positional_encoding_layer.cpp b/nntrainer/layers/positional_encoding_layer.cpp index 724e983..a5db15d 100644 --- a/nntrainer/layers/positional_encoding_layer.cpp +++ b/nntrainer/layers/positional_encoding_layer.cpp @@ -27,6 +27,7 @@ enum PositionalEncodingParams { }; PositionalEncodingLayer::PositionalEncodingLayer() : + isPEcalculated(false), positional_encoding_props(props::MaxTimestep()) { weight_idx.fill(std::numeric_limits::max()); } diff --git a/nntrainer/layers/positional_encoding_layer.h b/nntrainer/layers/positional_encoding_layer.h index 1c58c83..139bbbf 100644 --- a/nntrainer/layers/positional_encoding_layer.h +++ b/nntrainer/layers/positional_encoding_layer.h @@ -94,10 +94,10 @@ public: inline static const std::string type = "positional_encoding"; private: - std::tuple positional_encoding_props; - std::array weight_idx; bool isPEcalculated; // bool value to check positional encoding is already // calculated + std::tuple positional_encoding_props; + std::array weight_idx; /** * @brief calculate positional encoding diff --git a/packaging/unittest_layers_v2.tar.gz b/packaging/unittest_layers_v2.tar.gz index 1e5b099e5e829ec08d8d8c827f8bf143d476a00f..3ff332f90c43a135f7fb959307cebc736754b3f0 100644 GIT binary patch delta 7257 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 delta 5863 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

(76vkprg>rwysbKGZa$Oc+Z;O;UT8j^pL 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 diff --git a/test/input_gen/genLayerTests.py b/test/input_gen/genLayerTests.py index 405bb2c..74e5c7d 100644 --- a/test/input_gen/genLayerTests.py +++ b/test/input_gen/genLayerTests.py @@ -42,6 +42,33 @@ def inspect_file(file_name): print("size: ", sz) print(np.fromfile(f, dtype="float32", count=sz)) +class PositionalEncoding(tf.keras.layers.Layer): + def __init__(self, position, d_model): + super(PositionalEncoding, self).__init__() + self.position = position + self.d_model = d_model + + def get_angles(self, pos, i, d_model): + angle_rates = 1 / np.power(10000, (2 * (i//2)) / np.float32(d_model)) + return pos * angle_rates + + def build(self, input_shape): + angle_rads = self.get_angles(np.arange(self.position)[:, np.newaxis], + np.arange(self.d_model)[np.newaxis, :], self.d_model) + + # apply sin to even indices in the array; 2i + angle_rads[:, 0::2] = np.sin(angle_rads[:, 0::2]) + + # apply cos to odd indices in the array; 2i+1 + angle_rads[:, 1::2] = np.cos(angle_rads[:, 1::2]) + + self.pos_encoding = angle_rads[np.newaxis, ...] + + self.pos_encoding = tf.cast(self.pos_encoding, dtype=tf.float32) + + def call(self, inputs): + inputs += self.pos_encoding[:, :tf.shape(inputs[0])[-2], :] + return inputs if __name__ == "__main__": fc = K.layers.Dense(5) @@ -286,5 +313,9 @@ if __name__ == "__main__": concat = K.layers.Concatenate(axis=1) record_single(concat, [(2,2,3,3), (2, 3, 3, 3)], "concat_dim1") + positional_encoding = PositionalEncoding(10, 6) + record_single(positional_encoding, [(3, 1, 7, 6)], "positional_encoding_partial") + record_single(positional_encoding, [(3, 1, 10, 6)], "positional_encoding") + inspect_file("dropout_20_training.nnlayergolden") diff --git a/test/input_gen/genModelTests_v2.py b/test/input_gen/genModelTests_v2.py index 842d036..361d2c4 100644 --- a/test/input_gen/genModelTests_v2.py +++ b/test/input_gen/genModelTests_v2.py @@ -8,6 +8,7 @@ # @brief Generate model tcs # @author Parichay Kapoor +import math from recorder_v2 import record_v2, inspect_file, _rand_like import torch @@ -119,6 +120,25 @@ class MultiHeadAttention(torch.nn.Module): labels = _rand_like(label_dims, dtype=float) return inputs, labels +class PositionalEncoding(torch.nn.Module): + def __init__(self, d_model: int, max_len): + super().__init__() + position = torch.arange(max_len).unsqueeze(1) + div_term = torch.exp(torch.arange(0, d_model, 2) * (-math.log(10000.0) / d_model)) + pe = torch.zeros(1, max_len, d_model) + pe[0, :, 0::2] = torch.sin(position * div_term) + pe[0, :, 1::2] = torch.cos(position * div_term) + self.register_buffer('pe', pe) + self.multi_head_attention = torch.nn.MultiheadAttention(d_model, 2, batch_first=True) + self.loss = torch.nn.MSELoss() + + def forward(self, inputs, labels): + output = inputs[0] + output += self.pe[:,:output.size(1),:] + output = self.multi_head_attention(output, output, output) + loss = self.loss(output[0], labels[0]) + return output, loss + class FCRelu(torch.nn.Module): def __init__(self, decay=False): super().__init__() @@ -148,7 +168,6 @@ class FCRelu(torch.nn.Module): {'params': non_decay_params}, {'params': decay_params, 'weight_decay': 0.9}], lr=0.1) - if __name__ == "__main__": record_v2( ReduceMeanLast(), @@ -233,6 +252,15 @@ if __name__ == "__main__": name="multi_head_attention_self_attention", ) + record_v2( + PositionalEncoding(d_model=6, max_len=7), + iteration=1, + input_dims=[(3,5,6)], + input_dtype=[float], + label_dims=[(3,5,6)], + name="positional_encoding", + ) + fc_relu_decay = FCRelu(decay=True) record_v2( fc_relu_decay, diff --git a/test/input_gen/recorder.py b/test/input_gen/recorder.py index 95372f4..cf84a60 100644 --- a/test/input_gen/recorder.py +++ b/test/input_gen/recorder.py @@ -436,7 +436,6 @@ def record_single(layer, input_shape, test_name, call_args={}, input_type='int') if not isinstance(tensors, list): tensors = [tensors] for tensor in tensors: - print(tf.size(tensor)) writer(tf.size(tensor), tensor) ## @todo inputs outputs derivatives can be more than one diff --git a/test/unittest/layers/meson.build b/test/unittest/layers/meson.build index b6f43c5..9864ff6 100644 --- a/test/unittest/layers/meson.build +++ b/test/unittest/layers/meson.build @@ -61,6 +61,7 @@ test_target = [ 'unittest_layers_reshape.cpp', # 'unittest_layers_mol_attention.cpp', 'unittest_layers_multi_head_attention.cpp', + 'unittest_layers_positional_encoding.cpp', ] if get_option('enable-tflite-backbone') diff --git a/test/unittest/layers/unittest_layers_positional_encoding.cpp b/test/unittest/layers/unittest_layers_positional_encoding.cpp new file mode 100644 index 0000000..4bf5544 --- /dev/null +++ b/test/unittest/layers/unittest_layers_positional_encoding.cpp @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2022 Hyeonseok Lee + * + * @file unittest_layers_positional_encoding.cpp + * @date 24 August 2022 + * @brief PositionalEncodingLayer Test + * @see https://github.com/nnstreamer/nntrainer + * @author Hyeonseok Lee + * @bug No known bugs except for NYI items + */ + +#include + +#include + +#include +#include + +auto semantic_positional_encoding = LayerSemanticsParamType( + nntrainer::createLayer, + nntrainer::PositionalEncodingLayer::type, {"max_timestep=10"}, 0, false, 1); + +INSTANTIATE_TEST_CASE_P(PositionalEncoding, LayerSemantics, + ::testing::Values(semantic_positional_encoding)); + +auto positional_encoding_partial = LayerGoldenTestParamType( + nntrainer::createLayer, + {"max_timestep=10"}, "3:1:7:6", "positional_encoding_partial.nnlayergolden", + LayerGoldenTestParamOptions::DEFAULT); + +auto positional_encoding = LayerGoldenTestParamType( + nntrainer::createLayer, + {"max_timestep=10"}, "3:1:10:6", "positional_encoding.nnlayergolden", + LayerGoldenTestParamOptions::DEFAULT); + +INSTANTIATE_TEST_CASE_P(PositionalEncoding, LayerGoldenTest, + ::testing::Values(positional_encoding_partial, + positional_encoding)); diff --git a/test/unittest/models/unittest_models.cpp b/test/unittest/models/unittest_models.cpp index 2e3ab1b..209e209 100644 --- a/test/unittest/models/unittest_models.cpp +++ b/test/unittest/models/unittest_models.cpp @@ -225,6 +225,30 @@ static std::unique_ptr makeMultiHeadAttention_self_attention() { return nn; } +static std::unique_ptr makePositionalEncoding() { + std::unique_ptr nn(new NeuralNetwork()); + nn->setProperty({"batch_size=3"}); + + auto outer_graph = makeGraph({ + {"input", {"name=input", "input_shape=5:1:6"}}, + {"reshape", {"name=reshape", "target_shape=1:5:6"}}, + {"positional_encoding", {"name=positional_encoding", "max_timestep=7"}}, + {"multi_head_attention", + {"name=multi_head_attention", + "input_layers=positional_encoding, positional_encoding, " + "positional_encoding", + "num_heads=2"}}, + {"mse", {"name=loss", "input_layers=multi_head_attention(0)"}}, + }); + + for (auto &node : outer_graph) { + nn->addLayer(node); + } + + nn->setOptimizer(ml::train::createOptimizer("sgd", {"learning_rate = 0.1"})); + return nn; +} + GTEST_PARAMETER_TEST( model, nntrainerModelTest, ::testing::ValuesIn({ @@ -251,6 +275,8 @@ GTEST_PARAMETER_TEST( mkModelTc_V2(makeMultiHeadAttention_self_attention, "multi_head_attention_self_attention", ModelTestOption::ALL_V2), + mkModelTc_V2(makePositionalEncoding, "positional_encoding", + ModelTestOption::ALL_V2), mkModelIniTc(fc_relu_decay, DIM_UNUSED, NOT_USED_, ModelTestOption::COMPARE_V2), }), -- 2.7.4