| 4218 | } |
| 4219 | |
| 4220 | static bool llama_model_load(const std::string & fname, llama_model & model, const llama_model_params & params, const llama_context_params * cparams) { |
| 4221 | try { |
| 4222 | llama_model_loader ml(fname, params.use_mmap); |
| 4223 | |
| 4224 | if (ml.sparse_deriv == GGML_SPARSE_INFERENCE) { |
| 4225 | LLAMA_LOG_INFO("%s: PowerInfer model loaded. Sparse inference will be used.\n", __func__); |
| 4226 | } |
| 4227 | |
| 4228 | model.hparams.vocab_only = params.vocab_only; |
| 4229 | model.sparse_deriv = ml.sparse_deriv; |
| 4230 | |
| 4231 | llm_load_arch (ml, model); |
| 4232 | llm_load_hparams(ml, model); |
| 4233 | llm_load_vocab (ml, model); |
| 4234 | |
| 4235 | llm_load_print_meta(ml, model); |
| 4236 | |
| 4237 | if (model.hparams.n_vocab != model.vocab.id_to_token.size()) { |
| 4238 | throw std::runtime_error("vocab size mismatch"); |
| 4239 | } |
| 4240 | |
| 4241 | if (params.vocab_only) { |
| 4242 | LLAMA_LOG_INFO("%s: vocab only - skipping tensors\n", __func__); |
| 4243 | return true; |
| 4244 | } |
| 4245 | |
| 4246 | if (llama_use_sparse_inference(&model)) { |
| 4247 | if (params.n_gpu_layers > 0) { |
| 4248 | LLAMA_LOG_WARN("%s: sparse inference ignores n_gpu_layers, you can use --vram-budget option instead\n", __func__); |
| 4249 | return false; |
| 4250 | } |
| 4251 | #if defined GGML_USE_CUBLAS |
| 4252 | llama_set_vram_budget(params.vram_budget_gb, params.main_gpu); |
| 4253 | #endif |
| 4254 | llm_load_sparse_model_tensors( |
| 4255 | ml, model, cparams, params.main_gpu, vram_budget_bytes, params.reset_gpu_index, params.disable_gpu_index, |
| 4256 | params.use_mlock, params.progress_callback, params.progress_callback_user_data |
| 4257 | ); |
| 4258 | } else { |
| 4259 | llm_load_tensors( |
| 4260 | ml, model, params.n_gpu_layers, params.main_gpu, params.tensor_split, params.use_mlock, |
| 4261 | params.progress_callback, params.progress_callback_user_data |
| 4262 | ); |
| 4263 | } |
| 4264 | |
| 4265 | } catch (const std::exception & err) { |
| 4266 | LLAMA_LOG_ERROR("error loading model: %s\n", err.what()); |
| 4267 | return false; |
| 4268 | } |
| 4269 | |
| 4270 | return true; |
| 4271 | } |
| 4272 | |
| 4273 | // |
| 4274 | // llm_build |
no test coverage detected