| 13 | LFM2::LFM2(xrt::device* npu_device_inst) : AutoModel(npu_device_inst, "LFM2") {} |
| 14 | |
| 15 | void LFM2::load_model(std::string model_path, json model_info, int default_context_length, bool enable_preemption) { |
| 16 | this->_shared_load_model(model_path, model_info, default_context_length, enable_preemption); |
| 17 | |
| 18 | this->q4nx = std::make_unique<Q4NX>(this->model_path); |
| 19 | // model_type == llama |
| 20 | this->lm_engine = std::make_unique<lfm2_npu>(*this->lm_config, this->npu.get(), this->MAX_L); |
| 21 | |
| 22 | this->lm_engine->load_weights(*this->q4nx); |
| 23 | |
| 24 | //free the q4nx |
| 25 | this->q4nx.reset(); |
| 26 | this->lm_engine->clear_context(); |
| 27 | this->setup_tokenizer(model_path); |
| 28 | this->sampler.reset(); |
| 29 | |
| 30 | sampler_config config; |
| 31 | config.top_p = 0.95; |
| 32 | config.top_k = 10; |
| 33 | config.min_p = 0.1; |
| 34 | config.temperature = 0.3; |
| 35 | |
| 36 | this->set_sampler(config); |
| 37 | for (size_t i = 0; i < PROFILER_TYPE_NUM; i++) { |
| 38 | this->profiler_list[i].reset(); |
| 39 | } |
| 40 | } |
| 41 | |
| 42 | void LFM2::setup_tokenizer(std::string model_path) { |
| 43 | auto tokenizer_config = this->_shared_setup_tokenizer(model_path); |
nothing calls this directly
no test coverage detected