From 282d7971310c66d7cda18851704e64e0aebd09e2 Mon Sep 17 00:00:00 2001 From: Yash Singh Date: Wed, 9 Oct 2024 15:14:24 +0530 Subject: [PATCH 1/4] [GPU/OpenCL/Update] Initial version of LM Head layer with OpencCl ops and Update Addition Layer on GPU with latest Pipeline changes Added initial version of LM head layer fpr GPU and removed dependencies of cl_context for addition_layer. Signed-off-by: Yash Singh --- api/ccapi/include/layer.h | 10 + api/nntrainer-api-common.h | 1 + nntrainer/cl_context.cpp | 6 + .../layers/cl_layers/addition_layer_cl.h | 2 +- .../cl_layers/custom_vocab_selection.cpp | 130 +++++++++ .../layers/cl_layers/custom_vocab_selection.h | 101 +++++++ .../layers/cl_layers/lm_head_layer_cl.cpp | 259 ++++++++++++++++++ nntrainer/layers/cl_layers/lm_head_layer_cl.h | 161 +++++++++++ nntrainer/layers/cl_layers/meson.build | 2 + nntrainer/utils/custom_properties.h | 42 +++ test/input_gen/gen_layer_tests.py | 6 + test/jni/Android.mk | 1 + .../layers/unittest_layers_lm_head_cl.cpp | 50 ++++ 13 files changed, 770 insertions(+), 1 deletion(-) create mode 100644 nntrainer/layers/cl_layers/custom_vocab_selection.cpp create mode 100644 nntrainer/layers/cl_layers/custom_vocab_selection.h create mode 100644 nntrainer/layers/cl_layers/lm_head_layer_cl.cpp create mode 100644 nntrainer/layers/cl_layers/lm_head_layer_cl.h create mode 100644 nntrainer/utils/custom_properties.h create mode 100644 test/unittest/layers/unittest_layers_lm_head_cl.cpp diff --git a/api/ccapi/include/layer.h b/api/ccapi/include/layer.h index e1a6885c7c..ee43ba4ccb 100644 --- a/api/ccapi/include/layer.h +++ b/api/ccapi/include/layer.h @@ -112,6 +112,7 @@ enum LayerType { LAYER_RMSNORM = ML_TRAIN_LAYER_TYPE_RMSNORM, /** &properties = {}, return createLayer(LayerType::LAYER_ADDITION, properties, compute_engine); } +/** + * @brief Helper function to create lm_head layer + */ +inline std::unique_ptr +LmHead(const std::vector &properties = {}, + const LayerComputeEngine &compute_engine = LayerComputeEngine::CPU) { + return createLayer(LayerType::LAYER_LM_HEAD, properties, compute_engine); +} + /** * @brief Helper function to create concat layer */ diff --git a/api/nntrainer-api-common.h b/api/nntrainer-api-common.h index 1fa2d0e7d0..94f2a8f65c 100644 --- a/api/nntrainer-api-common.h +++ b/api/nntrainer-api-common.h @@ -72,6 +72,7 @@ typedef enum { ML_TRAIN_LAYER_TYPE_TRANSPOSE = 36, /**< Transpose Layer type */ ML_TRAIN_LAYER_TYPE_CONV2D_TRANSPOSE = 37, /**< Convolution 2D Transpose Layer (Since 9.0) */ + ML_TRAIN_LAYER_TYPE_LM_HEAD = 38, /**< LM Head Layer type */ ML_TRAIN_LAYER_TYPE_PREPROCESS_FLIP = 300, /**< Preprocess flip Layer (Since 6.5) */ ML_TRAIN_LAYER_TYPE_PREPROCESS_TRANSLATE = diff --git a/nntrainer/cl_context.cpp b/nntrainer/cl_context.cpp index b6c200792b..7cc5e009fb 100644 --- a/nntrainer/cl_context.cpp +++ b/nntrainer/cl_context.cpp @@ -7,6 +7,7 @@ * @see https://github.com/nnstreamer/nntrainer * @author Debadri Samaddar * @author Niket Agarwal + * @author Yash Singh * @author Thummala Pallavi * @bug No known bugs except for NYI items * @brief This file contains app context related functions and classes that @@ -20,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -66,6 +68,10 @@ static void add_default_object(ClContext &cc) { cc.registerFactory(nntrainer::createLayer, TransposeLayerCl::type, ml::train::LayerType::LAYER_TRANSPOSE); + + cc.registerFactory(nntrainer::createLayer, + CustomLMHeadLayerCl::type, + ml::train::LayerType::LAYER_LM_HEAD); } static void registerer(ClContext &cc) noexcept { diff --git a/nntrainer/layers/cl_layers/addition_layer_cl.h b/nntrainer/layers/cl_layers/addition_layer_cl.h index a2b8f55f67..e5ad7c91cf 100644 --- a/nntrainer/layers/cl_layers/addition_layer_cl.h +++ b/nntrainer/layers/cl_layers/addition_layer_cl.h @@ -35,7 +35,7 @@ class AdditionLayerCL : public Layer { /** * @brief Destructor of Addition Layer */ - ~AdditionLayerCL(){}; + ~AdditionLayerCL() {}; /** * @brief Move constructor of AdditionLayer. diff --git a/nntrainer/layers/cl_layers/custom_vocab_selection.cpp b/nntrainer/layers/cl_layers/custom_vocab_selection.cpp new file mode 100644 index 0000000000..4b25bebb74 --- /dev/null +++ b/nntrainer/layers/cl_layers/custom_vocab_selection.cpp @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Yash Singh > + * + * @file custom_vocab_selection.cpp + * @date 1 Oct 2024 + * @see https://github.com/nnstreamer/nntrainer + * @author Yash Singh + * @bug No known bugs except for NYI items + * @brief Implementation of custom vocab selection + */ + +#include +#include + +nntrainer::VocabSelection::VocabSelection(LshType lshType, int lshChoices, + int hiddenSize, int vocabCnt) : + lshType(lshType), + lshChoices(lshChoices), + vocabCnt(vocabCnt), + hiddenSize(hiddenSize), + lshBlockNum(0), + lshBits(0) {} + +nntrainer::VocabSelection::~VocabSelection() {} + +nntrainer::VocabSelectionNNTrainer::VocabSelectionNNTrainer( + LshType lshType, int lshChoices, int hiddenSize, int vocabCnt, + nntrainer::Tensor &weights) : + VocabSelection(lshType, lshChoices, hiddenSize, vocabCnt) { + this->lshBlockNum = (hiddenSize + lshBlockSize - 1) / lshBlockSize; + this->lshBits = lshBlockNum * lshBlockSize; + this->lshData = std::vector(this->vocabCnt * lshBlockNum); + + // for (unsigned int i = 0; i < vocabCnt; ++i) { + // for (unsigned int j = 0; j < lshBlockNum; ++j) { + // unsigned int actualSize = std::min(lshBlockSize, hiddenSize - + // (int)j * lshBlockSize); lshDataBlock d; for (unsigned int k = 0; k + // < actualSize; ++k) { + // d[k] = weights.getValue<_FP16>(0, 0, i, j * lshBlockSize + k) > + // 0 ? 1 : 0; + // } + // for (unsigned int k = actualSize; k < lshBlockSize; ++k) { + // d[k] = 0; + // } + // this->lshData[i * lshBlockNum + j] = d; + // } + // } + + for (unsigned int i = 0; i < lshBlockNum; ++i) { + unsigned int actualSize = + std::min(lshBlockSize, hiddenSize - (int)i * lshBlockSize); + for (unsigned int j = 0; j < vocabCnt; ++j) { + lshDataBlock d; + for (unsigned int k = 0; k < actualSize; ++k) { + if (weights.getDataType() == nntrainer::TensorDim::DataType::FP32) { + d[k] = weights.getValue(0, 0, i * lshBlockSize + k, j) > 0 ? 1 : 0; + } else if (weights.getDataType() == + nntrainer::TensorDim::DataType::FP16) { + d[k] = + weights.getValue<_FP16>(0, 0, i * lshBlockSize + k, j) > 0 ? 1 : 0; + } + } + for (unsigned int k = actualSize; k < lshBlockSize; ++k) { + d[k] = 0; + } + this->lshData[j * lshBlockNum + i] = d; + } + } +} + +std::vector> +nntrainer::VocabSelectionNNTrainer::getVocabs(const nntrainer::Tensor &input) { + unsigned int batchSize = input.height(); + + std::vector> res = std::vector>(batchSize); + for (int i = 0; i < batchSize; i++) { + std::vector d(lshBlockNum); + for (int k = 0; k < lshBlockNum; k++) { + int actualSize = std::min(lshBlockSize, hiddenSize - k * lshBlockSize); + for (int j = 0; j < actualSize; j++) { + if (input.getDataType() == nntrainer::TensorDim::DataType::FP32) { + d[k][j] = input.getValue(0, 0, i, j + k * lshBlockSize) >= 0 ? 1 : 0; + } else if (input.getDataType() == + nntrainer::TensorDim::DataType::FP16) { + d[k][j] = + input.getValue<_FP16>(0, 0, i, j + k * lshBlockSize) >= 0 ? 1 : 0; + } + } + for (int j = actualSize; j < lshBlockSize; j++) { + d[k][j] = 0; + } + } + std::vector simResult(vocabCnt, 0); + std::vector simCount(lshBits + 1, 0); + for (int j = 0; j < vocabCnt; j++) { + for (int k = 0; k < lshBlockNum; k++) { + simResult[j] += (d[k] ^ lshData[j * lshBlockNum + k]).count(); + } + simCount[simResult[j]]++; + } + int cut = lshBits + 1; + int leftover = 0; + int countSum = 0; + for (int j = 0; j <= lshBits; j++) { + countSum += simCount[j]; + if (countSum > lshChoices) { + cut = j; + leftover = simCount[j] - (countSum - lshChoices); + break; + } + } + std::vector selectedVocabs(lshChoices); + int pos = 0; + for (int j = 0; j < vocabCnt; j++) { + if (simResult[j] <= cut) { + if (simResult[j] < cut) { + selectedVocabs[pos] = j; + pos++; + } else if (leftover > 0) { + selectedVocabs[pos] = j; + pos++; + leftover--; + } + } + } + res[i] = selectedVocabs; + } + return res; +} diff --git a/nntrainer/layers/cl_layers/custom_vocab_selection.h b/nntrainer/layers/cl_layers/custom_vocab_selection.h new file mode 100644 index 0000000000..af3536d105 --- /dev/null +++ b/nntrainer/layers/cl_layers/custom_vocab_selection.h @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Yash Singh > + * + * @file custom_vocab_selection.h + * @date 1 Oct 2024 + * @see https://github.com/nnstreamer/nntrainer + * @author Yash Singh + * @bug No known bugs except for NYI items + * @brief Implementation of custom vocab selection + */ + +#ifndef VOCAB_SELECTION_H +#define VOCAB_SELECTION_H + +#include + +#ifndef LSH_BLOCK_SIZE +#define LSH_BLOCK_SIZE 256 +#endif + +using namespace std; + +namespace nntrainer { + +/** + * @brief Enumeration for different types of LSH algorithms used in vocab + * selection + * + */ +enum LshType { NONE = 0, SIMHASH = 1, ORTHOSIMHASH = 2 }; +typedef std::bitset lshDataBlock; + +/** + * @brief Vocab Selection class to select the vocabs from model output using LSH + * + */ +class VocabSelection { +protected: + int hiddenSize; + int vocabCnt; + const int lshBlockSize = LSH_BLOCK_SIZE; + int lshBlockNum; + int lshBits; // lshBlockSize * lshBlockNum + int lshChoices; + LshType lshType; + std::vector lshData; + +public: + /** + * @brief Constructor of VocabSelection class + * + */ + VocabSelection(LshType lshType, int lshChoices, int hiddenSize, int vocabCnt); + virtual std:: + vector> + + /** + * @brief Get the Vocabs object + */ + getVocabs(const nntrainer::Tensor &modelOutput) = 0; + + /** + * @brief Destructor of VocabSelection class + */ + ~VocabSelection(); +}; + +/** + * @brief Vocab Selection NNTrainer class to select the vocabs from model output + * using LSH + * + */ +class VocabSelectionNNTrainer : public VocabSelection { +protected: + nntrainer::Tensor lshWeight; + +public: + /** + * @brief Constructor of VocabSelectionNNTrainer class + */ + VocabSelectionNNTrainer(LshType lshType, int lshChoices, int hiddenSize, + int vocabCnt, nntrainer::Tensor &weights); + virtual std:: + vector> + + /** + * @brief Get the Vocabs object + * + */ + getVocabs(const nntrainer::Tensor &modelOutput); + + /** + * @brief Destructor of VocabSelectionNNTrainer class + */ + ~VocabSelectionNNTrainer() {}; +}; + +} // namespace nntrainer + +#endif diff --git a/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp b/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp new file mode 100644 index 0000000000..df91deaca7 --- /dev/null +++ b/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp @@ -0,0 +1,259 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Yash Singh > + * + * @file lm_head_layer_cl.cpp + * @date 1 Oct 2024 + * @see https://github.com/nnstreamer/nntrainer + * @author Yash Singh + * @bug No known bugs except for NYI items + * @brief Implementation of custom lm head layer + */ + +#include +#include +#include +#include + +#include + +namespace nntrainer { + +static constexpr size_t SINGLE_INOUT_IDX = 0; + +enum LMHeadParams { weight, bias, candidate_weight, candidate_hidden_step }; + +CustomLMHeadLayerCl::CustomLMHeadLayerCl() : + LayerImpl(), + custom_lm_head_props(nntrainer::props::Unit(), props::UseVocabSelection(), + props::LshChoices(), props::SmartReply()) { + weight_idx.fill(std::numeric_limits::max()); +} + +void CustomLMHeadLayerCl::finalize(nntrainer::InitLayerContext &context) { + auto &weight_regularizer = + std::get(*layer_impl_props); + auto &weight_regularizer_constant = + std::get(*layer_impl_props); + auto weight_initializer = nntrainer::props::InitializerInfo::Enum::ZEROS; + // auto &weight_initializer = + // std::get(*layer_impl_props); + auto &weight_decay = + std::get(*layer_impl_props); + auto &bias_decay = std::get(*layer_impl_props); + auto &bias_initializer = + std::get(*layer_impl_props); + auto &disable_bias = + std::get(*layer_impl_props); + + auto unit = std::get(custom_lm_head_props).get(); + + NNTR_THROW_IF(context.getNumInputs() != 1, std::invalid_argument) + << "lm head layer takes only one input"; + + std::vector output_dims(1); + + /// @todo fc actaully supports multidimensions. EffDimFlag shouldn't be fixed + /// like this. + context.setEffDimFlagInputDimension(0, 0b1001); + context.setDynDimFlagInputDimension(0, 0b1000); + + bool is_nchw = (context.getFormat() == nntrainer::Tformat::NCHW); + /** set output dimensions */ + auto const &in_dim = context.getInputDimensions()[0]; + output_dims[0] = in_dim; + is_nchw ? output_dims[0].width(unit) : output_dims[0].channel(unit); + + output_dims[0].setTensorType( + {context.getFormat(), context.getActivationDataType()}); + + context.setOutputDimensions(output_dims); + + /** set weight specifications */ + // @todo : This NCHW format setting is just temporal, it needs to be set by + // global configuration + ml::train::TensorDim bias_dim( + 1, is_nchw ? 1 : unit, 1, is_nchw ? unit : 1, + ml::train::TensorDim::TensorType(context.getFormat(), + context.getWeightDataType()), + is_nchw ? 0b0001 : 0b0100); + + ml::train::TensorDim weight_dim( + 1, is_nchw ? 1 : unit, is_nchw ? in_dim.width() : 1, + is_nchw ? unit : in_dim.channel(), + ml::train::TensorDim::TensorType(context.getFormat(), + context.getWeightDataType()), + is_nchw ? 0b0011 : 0b0101); + + weight_idx[LMHeadParams::weight] = context.requestWeight( + weight_dim, weight_initializer, weight_regularizer, + weight_regularizer_constant, weight_decay, "weight", true); + + if (disable_bias.empty() || disable_bias.get() == false) { + weight_idx[LMHeadParams::bias] = context.requestWeight( + bias_dim, bias_initializer, nntrainer::WeightRegularizer::NONE, 1.0f, + bias_decay, "bias", true); + } + + auto use_vocab_selection = + std::get(custom_lm_head_props).get(); + + if (use_vocab_selection) { + auto lsh_choices = std::get(custom_lm_head_props).get(); + + ml::train::TensorDim candidate_weight_dim( + 1, is_nchw ? 1 : lsh_choices, is_nchw ? lsh_choices : in_dim.channel(), + is_nchw ? in_dim.width() : 1, + ml::train::TensorDim::TensorType(context.getFormat(), + context.getWeightDataType())); + + weight_idx[LMHeadParams::candidate_weight] = context.requestTensor( + candidate_weight_dim, "candidate_weight", Initializer::NONE, false, + nntrainer::TensorLifespan::ITERATION_LIFESPAN); + + ml::train::TensorDim candidate_hidden_step_dim( + 1, 1, 1, lsh_choices, + ml::train::TensorDim::TensorType(context.getFormat(), + context.getWeightDataType())); + + weight_idx[LMHeadParams::candidate_hidden_step] = context.requestTensor( + candidate_hidden_step_dim, "candidate_hidden_step", Initializer::NONE, + false, nntrainer::TensorLifespan::ITERATION_LIFESPAN); + } +} + +void CustomLMHeadLayerCl::forwarding(nntrainer::RunLayerContext &context, + bool training) { + // NYI +} + +void CustomLMHeadLayerCl::initVocabSelection( + LshType lshType, int lshChoices, nntrainer::RunLayerContext &context) { + nntrainer::Tensor w; + nntrainer::Tensor &weight = w; + context.getWeight(weight, weight_idx[LMHeadParams::weight]); + this->vocabSelection = + std::shared_ptr(new VocabSelectionNNTrainer( + lshType, lshChoices, weight.height(), weight.width(), weight)); + weight_T = std::make_unique(weight.transpose("0:2:1")); + + weight_T->reshape({weight_T->width(), weight_T->height()}); +} + +void CustomLMHeadLayerCl::incremental_forwarding( + nntrainer::RunLayerContext &context, unsigned int from, unsigned int to, + bool training) { + nntrainer::Tensor w; + nntrainer::Tensor &weight = w; + context.getWeight(weight, weight_idx[LMHeadParams::weight]); + + nntrainer::Tensor &input_ = context.getInput(SINGLE_INOUT_IDX); + nntrainer::Tensor &hidden_ = context.getOutput(SINGLE_INOUT_IDX); + + ml::train::TensorDim input_dim = input_.getDim(); + ml::train::TensorDim hidden_dim = hidden_.getDim(); + + ml::train::TensorDim input_step_dim = input_dim; + ml::train::TensorDim hidden_step_dim = hidden_dim; + + unsigned int _from = from; + + if (from) { + NNTR_THROW_IF(to - from != 1, std::invalid_argument) + << "incremental step size is not 1"; + from = 0; + to = 1; + } + + input_step_dim.batch(1); + input_step_dim.height(1); + hidden_step_dim.batch(1); + hidden_step_dim.height(1); + + bool smart_reply = std::get(custom_lm_head_props).get(); + + unsigned int b_size = input_dim.batch(); + unsigned omp_num = 4; + if (smart_reply && !_from) { + b_size = 1; + omp_num = 1; + } + + // #pragma omp parallel for num_threads(omp_num) + for (unsigned int b = 0; b < b_size; ++b) { + nntrainer::Tensor input_step = input_.getSharedDataTensor( + input_step_dim, + b * input_dim.getFeatureLen() + + (to - from == 1 ? 0 : (to - 1) * input_.width()), + true); + nntrainer::Tensor hidden_step = hidden_.getSharedDataTensor( + hidden_step_dim, + b * hidden_dim.getFeatureLen() + + (to - from == 1 ? 0 : (to - 1) * hidden_.width()), + true); + + auto unit = std::get(custom_lm_head_props).get(); + auto use_vocab_selection = + std::get(custom_lm_head_props).get(); + + if (use_vocab_selection) { + auto lsh_choices = + std::get(custom_lm_head_props).get(); + auto vocab = vocabSelection->getVocabs(input_step); + + hidden_step.setValue(0); + + ml::train::TensorDim weight_T_ith_choice_dim = weight_T->getDim(); + weight_T_ith_choice_dim.width(1); + ml::train::TensorDim hidden_step_ith_choice_dim = hidden_step_dim; + hidden_step_ith_choice_dim.width(1); + nntrainer::Tensor weight_T_ith_choice; + + for (unsigned int i = 0; i < lsh_choices; ++i) { + weight_T_ith_choice = weight_T->getSharedDataTensor( + weight_T_ith_choice_dim, vocab[0][i] * input_step.width(), true); + nntrainer::Tensor hidden_step_ith_choice = + hidden_step.getSharedDataTensor(hidden_step_ith_choice_dim, + vocab[0][i], true); + + dotCl(input_step, weight_T_ith_choice, hidden_step_ith_choice); + } + } else { + dotCl(input_step, weight, hidden_step); + } + + if (auto &disable_bias = + std::get(*layer_impl_props); + disable_bias.empty() || disable_bias.get() == false) { + nntrainer::Tensor &bias = + context.getWeight(weight_idx[LMHeadParams::bias]); + + add_i_cl(bias, hidden_step); + } + } +} + +void CustomLMHeadLayerCl::calcDerivative(nntrainer::RunLayerContext &context) {} + +void CustomLMHeadLayerCl::setProperty(const std::vector &values) { + auto remain_props = loadProperties(values, custom_lm_head_props); + LayerImpl::setProperty(remain_props); +} + +#ifdef PLUGGABLE + +nntrainer::Layer *create_custom_lm_head_layer() { + auto layer = new CustomLMHeadLayerCl(); + return layer; +} + +void destroy_custom_lm_head_layer(nntrainer::Layer *layer) { delete layer; } + +extern "C" { +nntrainer::LayerPluggable ml_train_layer_pluggable{ + create_custom_lm_head_layer, destroy_custom_lm_head_layer}; +} + +#endif + +} // namespace nntrainer diff --git a/nntrainer/layers/cl_layers/lm_head_layer_cl.h b/nntrainer/layers/cl_layers/lm_head_layer_cl.h new file mode 100644 index 0000000000..f22e4195de --- /dev/null +++ b/nntrainer/layers/cl_layers/lm_head_layer_cl.h @@ -0,0 +1,161 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Yash Singh + * + * @file lm_head_layer_cl.h + * @date 1 Oct 2024 + * @brief Implementation of custom lm head layer for GPU + * @see https://github.com/nnstreamer/nntrainer + * @author Yash Singh + * @bug No known bugs except for NYI items + * @brief Implementation of custom lm head layer for GPU + */ + +#ifndef __CUSTOM_LM_HEAD_LAYER_H__ +#define __CUSTOM_LM_HEAD_LAYER_H__ + +#include +#include +#include +#include +#include +#include + +namespace nntrainer { + +namespace props { + +/** + * @brief indicated whether do vocab selection or not + * + */ +class UseVocabSelection : public nntrainer::Property { +public: + /** + * @brief Construct a new UseVocabSelection object + * + */ + UseVocabSelection(bool value = false) { set(value); } + static constexpr const char *key = "use_vocab_selection"; + using prop_tag = nntrainer::bool_prop_tag; +}; + +/** + * @brief LshChoices property, indicate how many words will be choose + * + */ +class LshChoices : public nntrainer::PositiveIntegerProperty { +public: + /** + * @brief Construct a new LshChoices object with a default value 1 + * + */ + LshChoices(unsigned int value = 1) { set(value); }; + static constexpr const char *key = "lsh_choices"; /**< unique key to access */ + using prop_tag = nntrainer::uint_prop_tag; /**< property type */ +}; + +} // namespace props + +/** + * @brief A Custom LM Head layer for llama. + * + */ +class CustomLMHeadLayerCl : public LayerImpl { +public: + /** + * @brief Construct a new Custom LM Head layer object + * + */ + CustomLMHeadLayerCl(); + + /** + * @brief Destroy the Custom LM Head layer object + * + */ + ~CustomLMHeadLayerCl() {} + + /** + * @copydoc Layer::finalize(InitLayerContext &context) + */ + void finalize(nntrainer::InitLayerContext &context) override; + + void initialize(nntrainer::RunLayerContext &context) override { + auto use_vocab_selection = + std::get(custom_lm_head_props).get(); + + if (use_vocab_selection) { + auto lsh_choices = + std::get(custom_lm_head_props).get(); + initVocabSelection(LshType::ORTHOSIMHASH, lsh_choices, context); + } + } + + /** + * @copydoc Layer::forwarding(RunLayerContext &context, bool training) + */ + void forwarding(nntrainer::RunLayerContext &context, bool training) override; + + /** + * @copydoc Layer::incremental_forwarding(RunLayerContext &context, unsigned + * int from, unsigned int to, bool training) + */ + void incremental_forwarding(nntrainer::RunLayerContext &context, + unsigned int from, unsigned int to, + bool training) override; + + /** + * @copydoc Layer::calcDerivative(RunLayerContext &context) + */ + void calcDerivative(nntrainer::RunLayerContext &context) override; + + /** + * @copydoc Layer::calcGradient(RunLayerContext &context) + */ + // void calcGradient(nntrainer::RunLayerContext &context) override; + + /** + * @copydoc bool supportBackwarding() const + */ + bool supportBackwarding() const override { return true; }; + + /** + * @copydoc Layer::exportTo(Exporter &exporter, ExportMethods method) + */ + void exportTo(nntrainer::Exporter &exporter, + const ml::train::ExportMethods &method) const override {}; + + /** + * @copydoc Layer::getType() + */ + const std::string getType() const override { + return CustomLMHeadLayerCl::type; + }; + + /** + * @copydoc Layer::setProperty(const std::vector &values) + */ + void setProperty(const std::vector &values) override; + + /** + * @brief Enum class for LSH Type + */ + void initVocabSelection(LshType lshType, int lshChoices, + nntrainer::RunLayerContext &context); + + inline static const std::string type = "custom_lm_head"; + + std::shared_ptr vocabSelection; + +private: + std::tuple + custom_lm_head_props; + std::array weight_idx; /**< indices of the weights */ + std::unique_ptr + weight_T; // temporary weight. will be removed +}; + +} // namespace nntrainer + +#endif /* __LM_HEAD_LAYER_CL_H__ */ diff --git a/nntrainer/layers/cl_layers/meson.build b/nntrainer/layers/cl_layers/meson.build index 57cec3e556..2772929b8b 100644 --- a/nntrainer/layers/cl_layers/meson.build +++ b/nntrainer/layers/cl_layers/meson.build @@ -6,6 +6,8 @@ cl_layer_sources = [ 'rmsnorm_layer_cl.cpp', 'concat_cl.cpp', 'transpose_cl.cpp', + 'lm_head_layer_cl.cpp', + 'custom_vocab_selection.cpp', ] foreach s : cl_layer_sources diff --git a/nntrainer/utils/custom_properties.h b/nntrainer/utils/custom_properties.h new file mode 100644 index 0000000000..d38f8909b3 --- /dev/null +++ b/nntrainer/utils/custom_properties.h @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Debadri Samaddar + * + * @file custom_properties.h + * @date 1 October 2024 + * @see https://github.com/nnstreamer/nntrainer + * @author Yash Singh + * @bug No known bugs except for NYI items + * @brief This file contains list of custom properties widely used across + * custom layers + */ + +#ifndef __CUSTOM_PROPERTIES_H__ +#define __CUSTOM_PROPERTIES_H__ + +#include + +namespace nntrainer { + +namespace props { + +/** + * @brief indicated this layer is for smart reply application + * + */ +class SmartReply : public Property { +public: + /** + * @brief Construct a new SmartReply object + * + */ + SmartReply(bool value = false) { set(value); } + static constexpr const char *key = "smart_reply"; + using prop_tag = bool_prop_tag; +}; + +} // namespace props + +} // namespace nntrainer + +#endif /* __CUSTOM_PROPERTIES_H__ */ diff --git a/test/input_gen/gen_layer_tests.py b/test/input_gen/gen_layer_tests.py index 180402fc62..060347e8a2 100644 --- a/test/input_gen/gen_layer_tests.py +++ b/test/input_gen/gen_layer_tests.py @@ -20,6 +20,7 @@ @author Debadri Samaddar @author Niket Agarwal @author Thummala Pallavi +@author Yash Singh """ import warnings @@ -978,3 +979,8 @@ def transpose_axis2(tensor, batch_size, input_channel, input_height, input_width transpose_layer_axis2 = tf.keras.layers.Lambda(lambda x: transpose_axis2(x, 2, 3, 3, 3)) record_single(transpose_layer_axis2, (2, 3, 3, 3), "transpose_axis2", input_type="float") record_single_fp16(transpose_layer_axis2, (2, 3, 3, 3), "transpose_fp16_axis2", input_type="float") + + lm_head = K.layers.Dense(5) + record_single(lm_head, (3, 1, 1, 10), "lm_head_GPU1") + lm_head1616 = K.layers.Dense(5) + record_single_fp16(lm_head1616, (3, 1, 1, 10), "lm_head_GPU1_w16a16") diff --git a/test/jni/Android.mk b/test/jni/Android.mk index 6b4eded4f1..c4e0b6f9c9 100644 --- a/test/jni/Android.mk +++ b/test/jni/Android.mk @@ -443,6 +443,7 @@ LOCAL_SRC_FILES := \ ../unittest/layers/unittest_layers.cpp \ ../unittest/layers/unittest_layers_impl.cpp \ ../unittest/layers/unittest_layers_transpose_cl.cpp \ + ../unittest/layers/unittest_layers_lm_head_cl.cpp \ ../unittest/layers/unittest_layers_concat_cl.cpp \ ../unittest/layers/unittest_layers_swiglu_cl.cpp \ ../unittest/layers/unittest_layers_fully_connected_cl.cpp \ diff --git a/test/unittest/layers/unittest_layers_lm_head_cl.cpp b/test/unittest/layers/unittest_layers_lm_head_cl.cpp new file mode 100644 index 0000000000..c0224a5d9b --- /dev/null +++ b/test/unittest/layers/unittest_layers_lm_head_cl.cpp @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: Apache-2.0 +/** + * Copyright (C) 2024 Yash Singh + * + * @file unittest_layers_lm_head_cl.cpp + * @date 1 Oct 2024 + * @brief LM Head Layer Test + * @see https://github.com/nnstreamer/nntrainer + * @author Yash Singh + * @bug No known bugs except for NYI items + */ + +#include +#include +#include +#include + +auto semantic_lm_head_gpu = LayerSemanticsParamType( + nntrainer::createLayer, + nntrainer::CustomLMHeadLayerCl::type, {"unit=1"}, + LayerCreateSetPropertyOptions::AVAILABLE_FROM_APP_CONTEXT, false, 1); + +GTEST_PARAMETER_TEST(LM_HeadGPU, LayerSemanticsGpu, + ::testing::Values(semantic_lm_head_gpu)); + +auto lm_head_gpu = LayerGoldenTestParamType( + nntrainer::createLayer, + {"unit=5", "use_vocab_selection=false"}, "3:10:1:1", + "lm_head_GPU1.nnlayergolden", + LayerGoldenTestParamOptions::SKIP_CALC_DERIV | + LayerGoldenTestParamOptions::SKIP_CALC_GRAD | + LayerGoldenTestParamOptions::USE_INC_FORWARD, + "nhwc", "fp32", "fp32"); + +GTEST_PARAMETER_TEST(LM_HeadGPU, LayerGoldenTest, + ::testing::Values(lm_head_gpu)); + +#ifdef ENABLE_FP16 +auto lm_head_gpu_w16a16 = LayerGoldenTestParamType( + nntrainer::createLayer, + {"unit=5", "use_vocab_selection=false"}, "3:1:1:10", + "lm_head_GPU1_w16a16.nnlayergolden", + LayerGoldenTestParamOptions::SKIP_CALC_DERIV | + LayerGoldenTestParamOptions::SKIP_CALC_GRAD | + LayerGoldenTestParamOptions::USE_INC_FORWARD, + "nchw", "fp16", "fp16"); + +GTEST_PARAMETER_TEST(LM_HeadGPU16, LayerGoldenTest, + ::testing::Values(lm_head_gpu_w16a16)); +#endif From 5a5509802b82d82cd2ab65425881689d273bd30c Mon Sep 17 00:00:00 2001 From: Yash Singh Date: Thu, 10 Oct 2024 12:06:49 +0530 Subject: [PATCH 2/4] [Trivial] Clang format fixed and Rebased the PR Clang format fixed and comments removed. Rebased PR with latest changes. Signed-off-by: Yash Singh --- api/ccapi/include/layer.h | 4 ++-- nntrainer/cl_context.cpp | 2 +- nntrainer/layers/cl_layers/addition_layer_cl.h | 2 +- .../layers/cl_layers/custom_vocab_selection.cpp | 15 --------------- .../layers/cl_layers/custom_vocab_selection.h | 2 +- nntrainer/layers/cl_layers/lm_head_layer_cl.h | 7 +++++-- 6 files changed, 10 insertions(+), 22 deletions(-) diff --git a/api/ccapi/include/layer.h b/api/ccapi/include/layer.h index ee43ba4ccb..364bf4f653 100644 --- a/api/ccapi/include/layer.h +++ b/api/ccapi/include/layer.h @@ -111,8 +111,8 @@ enum LayerType { LAYER_UPSAMPLE2D, /**< Upsample 2D Layer type */ LAYER_RMSNORM = ML_TRAIN_LAYER_TYPE_RMSNORM, /**, TransposeLayerCl::type, ml::train::LayerType::LAYER_TRANSPOSE); - + cc.registerFactory(nntrainer::createLayer, CustomLMHeadLayerCl::type, ml::train::LayerType::LAYER_LM_HEAD); diff --git a/nntrainer/layers/cl_layers/addition_layer_cl.h b/nntrainer/layers/cl_layers/addition_layer_cl.h index e5ad7c91cf..a2b8f55f67 100644 --- a/nntrainer/layers/cl_layers/addition_layer_cl.h +++ b/nntrainer/layers/cl_layers/addition_layer_cl.h @@ -35,7 +35,7 @@ class AdditionLayerCL : public Layer { /** * @brief Destructor of Addition Layer */ - ~AdditionLayerCL() {}; + ~AdditionLayerCL(){}; /** * @brief Move constructor of AdditionLayer. diff --git a/nntrainer/layers/cl_layers/custom_vocab_selection.cpp b/nntrainer/layers/cl_layers/custom_vocab_selection.cpp index 4b25bebb74..171942be99 100644 --- a/nntrainer/layers/cl_layers/custom_vocab_selection.cpp +++ b/nntrainer/layers/cl_layers/custom_vocab_selection.cpp @@ -32,21 +32,6 @@ nntrainer::VocabSelectionNNTrainer::VocabSelectionNNTrainer( this->lshBits = lshBlockNum * lshBlockSize; this->lshData = std::vector(this->vocabCnt * lshBlockNum); - // for (unsigned int i = 0; i < vocabCnt; ++i) { - // for (unsigned int j = 0; j < lshBlockNum; ++j) { - // unsigned int actualSize = std::min(lshBlockSize, hiddenSize - - // (int)j * lshBlockSize); lshDataBlock d; for (unsigned int k = 0; k - // < actualSize; ++k) { - // d[k] = weights.getValue<_FP16>(0, 0, i, j * lshBlockSize + k) > - // 0 ? 1 : 0; - // } - // for (unsigned int k = actualSize; k < lshBlockSize; ++k) { - // d[k] = 0; - // } - // this->lshData[i * lshBlockNum + j] = d; - // } - // } - for (unsigned int i = 0; i < lshBlockNum; ++i) { unsigned int actualSize = std::min(lshBlockSize, hiddenSize - (int)i * lshBlockSize); diff --git a/nntrainer/layers/cl_layers/custom_vocab_selection.h b/nntrainer/layers/cl_layers/custom_vocab_selection.h index af3536d105..4334679397 100644 --- a/nntrainer/layers/cl_layers/custom_vocab_selection.h +++ b/nntrainer/layers/cl_layers/custom_vocab_selection.h @@ -93,7 +93,7 @@ class VocabSelectionNNTrainer : public VocabSelection { /** * @brief Destructor of VocabSelectionNNTrainer class */ - ~VocabSelectionNNTrainer() {}; + ~VocabSelectionNNTrainer(){}; }; } // namespace nntrainer diff --git a/nntrainer/layers/cl_layers/lm_head_layer_cl.h b/nntrainer/layers/cl_layers/lm_head_layer_cl.h index f22e4195de..6378c6f778 100644 --- a/nntrainer/layers/cl_layers/lm_head_layer_cl.h +++ b/nntrainer/layers/cl_layers/lm_head_layer_cl.h @@ -80,7 +80,10 @@ class CustomLMHeadLayerCl : public LayerImpl { */ void finalize(nntrainer::InitLayerContext &context) override; - void initialize(nntrainer::RunLayerContext &context) override { + /** + * @copydoc Layer::intialize(RunLayerContext &context) + */ + void initialize(nntrainer::RunLayerContext &context) { auto use_vocab_selection = std::get(custom_lm_head_props).get(); @@ -123,7 +126,7 @@ class CustomLMHeadLayerCl : public LayerImpl { * @copydoc Layer::exportTo(Exporter &exporter, ExportMethods method) */ void exportTo(nntrainer::Exporter &exporter, - const ml::train::ExportMethods &method) const override {}; + const ml::train::ExportMethods &method) const override{}; /** * @copydoc Layer::getType() From 0c9e7aa2954e431eb9843f7b7a6fe2f86b1cf2b0 Mon Sep 17 00:00:00 2001 From: Yash Singh Date: Wed, 20 Nov 2024 15:29:50 +0530 Subject: [PATCH 3/4] [Update] Removed SmartReply property and added nnlayergolden files Addressed multiple review comments Removed unnecessary code Added nnlayer golden files Signed-off-by: Yash Singh --- .../cl_layers/custom_vocab_selection.cpp | 3 +- .../layers/cl_layers/custom_vocab_selection.h | 3 +- .../layers/cl_layers/lm_head_layer_cl.cpp | 35 ++++----------- nntrainer/layers/cl_layers/lm_head_layer_cl.h | 4 +- nntrainer/utils/custom_properties.h | 42 ------------------ packaging/unittest_layers.tar.gz | Bin 87096 -> 87581 bytes 6 files changed, 13 insertions(+), 74 deletions(-) delete mode 100644 nntrainer/utils/custom_properties.h diff --git a/nntrainer/layers/cl_layers/custom_vocab_selection.cpp b/nntrainer/layers/cl_layers/custom_vocab_selection.cpp index 171942be99..b79ed4f3ab 100644 --- a/nntrainer/layers/cl_layers/custom_vocab_selection.cpp +++ b/nntrainer/layers/cl_layers/custom_vocab_selection.cpp @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 /** - * Copyright (C) 2024 Yash Singh > + * Copyright (C) 2024 Hyeonseok Lee + * Copyright (C) 2024 Yash Singh * * @file custom_vocab_selection.cpp * @date 1 Oct 2024 diff --git a/nntrainer/layers/cl_layers/custom_vocab_selection.h b/nntrainer/layers/cl_layers/custom_vocab_selection.h index 4334679397..5424549118 100644 --- a/nntrainer/layers/cl_layers/custom_vocab_selection.h +++ b/nntrainer/layers/cl_layers/custom_vocab_selection.h @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 /** - * Copyright (C) 2024 Yash Singh > + * Copyright (C) 2024 Hyeonseok Lee + * Copyright (C) 2024 Yash Singh * * @file custom_vocab_selection.h * @date 1 Oct 2024 diff --git a/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp b/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp index df91deaca7..457c693736 100644 --- a/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp +++ b/nntrainer/layers/cl_layers/lm_head_layer_cl.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 /** - * Copyright (C) 2024 Yash Singh > + * Copyright (C) 2024 Yash Singh * * @file lm_head_layer_cl.cpp * @date 1 Oct 2024 @@ -26,7 +26,7 @@ enum LMHeadParams { weight, bias, candidate_weight, candidate_hidden_step }; CustomLMHeadLayerCl::CustomLMHeadLayerCl() : LayerImpl(), custom_lm_head_props(nntrainer::props::Unit(), props::UseVocabSelection(), - props::LshChoices(), props::SmartReply()) { + props::LshChoices()) { weight_idx.fill(std::numeric_limits::max()); } @@ -36,8 +36,6 @@ void CustomLMHeadLayerCl::finalize(nntrainer::InitLayerContext &context) { auto &weight_regularizer_constant = std::get(*layer_impl_props); auto weight_initializer = nntrainer::props::InitializerInfo::Enum::ZEROS; - // auto &weight_initializer = - // std::get(*layer_impl_props); auto &weight_decay = std::get(*layer_impl_props); auto &bias_decay = std::get(*layer_impl_props); @@ -170,14 +168,14 @@ void CustomLMHeadLayerCl::incremental_forwarding( hidden_step_dim.batch(1); hidden_step_dim.height(1); - bool smart_reply = std::get(custom_lm_head_props).get(); + // bool smart_reply = std::get(custom_lm_head_props).get(); unsigned int b_size = input_dim.batch(); unsigned omp_num = 4; - if (smart_reply && !_from) { - b_size = 1; - omp_num = 1; - } + // if (smart_reply && !_from) { + // b_size = 1; + // omp_num = 1; + // } // #pragma omp parallel for num_threads(omp_num) for (unsigned int b = 0; b < b_size; ++b) { @@ -228,7 +226,7 @@ void CustomLMHeadLayerCl::incremental_forwarding( nntrainer::Tensor &bias = context.getWeight(weight_idx[LMHeadParams::bias]); - add_i_cl(bias, hidden_step); + add_i_cl(hidden_step, bias); } } } @@ -239,21 +237,4 @@ void CustomLMHeadLayerCl::setProperty(const std::vector &values) { auto remain_props = loadProperties(values, custom_lm_head_props); LayerImpl::setProperty(remain_props); } - -#ifdef PLUGGABLE - -nntrainer::Layer *create_custom_lm_head_layer() { - auto layer = new CustomLMHeadLayerCl(); - return layer; -} - -void destroy_custom_lm_head_layer(nntrainer::Layer *layer) { delete layer; } - -extern "C" { -nntrainer::LayerPluggable ml_train_layer_pluggable{ - create_custom_lm_head_layer, destroy_custom_lm_head_layer}; -} - -#endif - } // namespace nntrainer diff --git a/nntrainer/layers/cl_layers/lm_head_layer_cl.h b/nntrainer/layers/cl_layers/lm_head_layer_cl.h index 6378c6f778..553e85ba36 100644 --- a/nntrainer/layers/cl_layers/lm_head_layer_cl.h +++ b/nntrainer/layers/cl_layers/lm_head_layer_cl.h @@ -14,7 +14,6 @@ #ifndef __CUSTOM_LM_HEAD_LAYER_H__ #define __CUSTOM_LM_HEAD_LAYER_H__ -#include #include #include #include @@ -152,13 +151,12 @@ class CustomLMHeadLayerCl : public LayerImpl { private: std::tuple + props::LshChoices> custom_lm_head_props; std::array weight_idx; /**< indices of the weights */ std::unique_ptr weight_T; // temporary weight. will be removed }; - } // namespace nntrainer #endif /* __LM_HEAD_LAYER_CL_H__ */ diff --git a/nntrainer/utils/custom_properties.h b/nntrainer/utils/custom_properties.h deleted file mode 100644 index d38f8909b3..0000000000 --- a/nntrainer/utils/custom_properties.h +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -/** - * Copyright (C) 2024 Debadri Samaddar - * - * @file custom_properties.h - * @date 1 October 2024 - * @see https://github.com/nnstreamer/nntrainer - * @author Yash Singh - * @bug No known bugs except for NYI items - * @brief This file contains list of custom properties widely used across - * custom layers - */ - -#ifndef __CUSTOM_PROPERTIES_H__ -#define __CUSTOM_PROPERTIES_H__ - -#include - -namespace nntrainer { - -namespace props { - -/** - * @brief indicated this layer is for smart reply application - * - */ -class SmartReply : public Property { -public: - /** - * @brief Construct a new SmartReply object - * - */ - SmartReply(bool value = false) { set(value); } - static constexpr const char *key = "smart_reply"; - using prop_tag = bool_prop_tag; -}; - -} // namespace props - -} // namespace nntrainer - -#endif /* __CUSTOM_PROPERTIES_H__ */ diff --git a/packaging/unittest_layers.tar.gz b/packaging/unittest_layers.tar.gz index 9f6367dcf142a323a971e03cc1a2e65fa8af6864..36755ce555c4b6ebfeefed1264c622c5e6f5f1cc 100644 GIT binary patch literal 87581 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

dA$`*vpL5#O+5vN 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 literal 87096 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¥wJ--3N%s;GiA2U4ID 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ⅅ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%0AK_FK&N(n From d08a0ec8b121201d576e2cf6fb5ac06d4653bd07 Mon Sep 17 00:00:00 2001 From: Yash Singh Date: Fri, 6 Dec 2024 11:16:18 +0530 Subject: [PATCH 4/4] [Update] Backwarding support set to false Reviewed PR comments SupportBackwarding() set to false Signed-off-by: Yash Singh --- api/ccapi/include/layer.h | 2 +- nntrainer/layers/cl_layers/lm_head_layer_cl.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/ccapi/include/layer.h b/api/ccapi/include/layer.h index 364bf4f653..0b57269413 100644 --- a/api/ccapi/include/layer.h +++ b/api/ccapi/include/layer.h @@ -111,8 +111,8 @@ enum LayerType { LAYER_UPSAMPLE2D, /**< Upsample 2D Layer type */ LAYER_RMSNORM = ML_TRAIN_LAYER_TYPE_RMSNORM, /**