MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / load_hparams

Method load_hparams

smallthinker/src/llama-model.cpp:457–1512  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

455}
456
457void llama_model::load_hparams(llama_model_loader & ml) {
458 const gguf_context * ctx = ml.meta.get();
459
460 // get metadata as string
461 for (int i = 0; i < gguf_get_n_kv(ctx); i++) {
462 gguf_type type = gguf_get_kv_type(ctx, i);
463 if (type == GGUF_TYPE_ARRAY) {
464 continue;
465 }
466 const char * name = gguf_get_key(ctx, i);
467 const std::string value = gguf_kv_to_str(ctx, i);
468 gguf_kv.emplace(name, value);
469 }
470
471 // get general kv
472 ml.get_key(LLM_KV_GENERAL_NAME, name, false);
473
474 // everything past this point is not vocab-related
475 if (hparams.vocab_only) {
476 return;
477 }
478
479 ml.get_key(LLM_KV_CONTEXT_LENGTH, hparams.n_ctx_train);
480 ml.get_key(LLM_KV_EMBEDDING_LENGTH, hparams.n_embd);
481 ml.get_key(LLM_KV_BLOCK_COUNT, hparams.n_layer);
482 ml.get_key(LLM_KV_EXPERT_COUNT, hparams.n_expert, false);
483 ml.get_key(LLM_KV_EXPERT_USED_COUNT, hparams.n_expert_used, false);
484
485 if (arch == LLM_ARCH_WAVTOKENIZER_DEC) {
486 ml.get_key(LLM_KV_FEATURES_LENGTH, hparams.n_embd_features);
487
488 ml.get_key(LLM_KV_POSNET_EMBEDDING_LENGTH, hparams.posnet.n_embd);
489 ml.get_key(LLM_KV_POSNET_BLOCK_COUNT, hparams.posnet.n_layer);
490
491 ml.get_key(LLM_KV_CONVNEXT_EMBEDDING_LENGTH, hparams.convnext.n_embd);
492 ml.get_key(LLM_KV_CONVNEXT_BLOCK_COUNT, hparams.convnext.n_layer);
493 }
494
495 GGML_ASSERT(hparams.n_expert <= LLAMA_MAX_EXPERTS);
496 GGML_ASSERT(hparams.n_expert_used <= hparams.n_expert);
497 if (hparams.n_expert > 0) {
498 GGML_ASSERT(hparams.n_expert_used > 0);
499 } else {
500 GGML_ASSERT(hparams.n_expert_used == 0);
501 }
502
503 std::fill(hparams.n_head_arr.begin(), hparams.n_head_arr.end(), 0);
504 std::fill(hparams.n_head_kv_arr.begin(), hparams.n_head_kv_arr.end(), 0);
505 std::fill(hparams.n_ff_arr.begin(), hparams.n_ff_arr.end(), 0);
506
507 std::fill(hparams.rope_sections.begin(), hparams.rope_sections.end(), 0);
508
509 std::fill(hparams.swa_layers.begin(), hparams.swa_layers.end(), 0);
510
511 ml.get_key_or_arr(LLM_KV_FEED_FORWARD_LENGTH, hparams.n_ff_arr, hparams.n_layer, false);
512 ml.get_key_or_arr(LLM_KV_ATTENTION_HEAD_COUNT, hparams.n_head_arr, hparams.n_layer, false);
513
514 // n_head_kv is optional, default to n_head

Callers 3

llama_model_loadFunction · 0.45

Calls 15

fillFunction · 0.85
sqrtFunction · 0.85
llama_model_rope_typeFunction · 0.85
get_keyMethod · 0.80
get_key_or_arrMethod · 0.80
n_headMethod · 0.80
get_arr_nMethod · 0.80
n_head_kvMethod · 0.80
set_swa_patternMethod · 0.80
n_ffMethod · 0.80
ftype_nameMethod · 0.80

Tested by

no test coverage detected