From 29799258cbd6cf1766055b3113c2cc563860d2c6 Mon Sep 17 00:00:00 2001 From: "jijoong.moon" Date: Tue, 7 May 2024 13:26:42 +0900 Subject: [PATCH] [ Test ] Mixed Precision Test Case This PR includes the mixed precision test case. . Input - FC - MSE : "batch_size=2", "model_tensor_type=FP16-FP16", "loss_scale=128" **Self evaluation:** 1. Build test: [X]Passed [ ]Failed [ ]Skipped 2. Run test: [X]Passed [ ]Failed [ ]Skipped Signed-off-by: jijoong.moon --- test/unittest/models/meson.build | 1 + .../unittest_models_mixed_precision.cpp | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 test/unittest/models/unittest_models_mixed_precision.cpp diff --git a/test/unittest/models/meson.build b/test/unittest/models/meson.build index 7166fc41ff..dad25ba1ca 100644 --- a/test/unittest/models/meson.build +++ b/test/unittest/models/meson.build @@ -7,6 +7,7 @@ models_targets = [ 'models_golden_test.cpp', 'unittest_models_recurrent.cpp', 'unittest_models_multiout.cpp', + 'unittest_models_mixed_precision.cpp' # 'unittest_models.cpp', # disable temperally ] diff --git a/test/unittest/models/unittest_models_mixed_precision.cpp b/test/unittest/models/unittest_models_mixed_precision.cpp new file mode 100644 index 0000000000..e0ba776f7c --- /dev/null +++ b/test/unittest/models/unittest_models_mixed_precision.cpp @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Jijoong Moon + * + * @file unittest_models_mixed_precision.cpp + * @date 3 May 2024 + * @brief unittest models to cover mixed precision + * @see https://github.com/nnstreamer/nntrainer + * @author Jijoong Moon + * @bug No known bugs except for NYI items + */ + +#include + +#include + +#include +#include +#include + +#include + +using namespace nntrainer; + +static std::unique_ptr fc_mixed_training() { + std::unique_ptr nn(new NeuralNetwork()); + nn->setProperty( + {"batch_size=2", "model_tensor_type=FP16-FP16", "loss_scale=128"}); + + auto graph = makeGraph({ + {"input", {"name=in", "input_shape=1:1:3"}}, + {"Fully_connected", {"name=fc", "input_layers=in", "unit=10"}}, + {"mse", {"name=loss", "input_layers=fc"}}, + }); + for (auto &node : graph) { + nn->addLayer(node); + } + + nn->setOptimizer(ml::train::createOptimizer("adam", {"learning_rate = 0.1"})); + + return nn; +} + +GTEST_PARAMETER_TEST( + MixedPrecision, nntrainerModelTest, + ::testing::ValuesIn({ + mkModelTc_V2(fc_mixed_training, "fc_mixed_training", + ModelTestOption::NO_THROW_RUN_V2), + // ModelTestOption::ALL_V2), /* Disabled for now to check + // functionality*/ + }), + [](const testing::TestParamInfo &info) + -> const auto & { return std::get<1>(info.param); });