MCPcopy Create free account
hub / github.com/appdevforall/CodeOnTheGo / load_hparams

Method load_hparams

subprojects/llama.cpp/src/llama-model.cpp:490–2465  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

488}
489
490void llama_model::load_hparams(llama_model_loader & ml) {
491 const gguf_context * ctx = ml.meta.get();
492
493 // get metadata as string
494 for (int i = 0; i < gguf_get_n_kv(ctx); i++) {
495 gguf_type type = gguf_get_kv_type(ctx, i);
496 if (type == GGUF_TYPE_ARRAY) {
497 continue;
498 }
499 const char * name = gguf_get_key(ctx, i);
500 const std::string value = gguf_kv_to_str(ctx, i);
501 gguf_kv.emplace(name, value);
502 }
503
504 // get general kv
505 ml.get_key(LLM_KV_GENERAL_NAME, name, false);
506
507 // everything past this point is not vocab-related
508 // for CLIP models, we only need to load tensors, no hparams
509 if (hparams.vocab_only || ml.get_arch() == LLM_ARCH_CLIP) {
510 return;
511 }
512
513 ml.get_key(LLM_KV_CONTEXT_LENGTH, hparams.n_ctx_train);
514 ml.get_key(LLM_KV_EMBEDDING_LENGTH, hparams.n_embd);
515 ml.get_key(LLM_KV_EMBEDDING_LENGTH_OUT, hparams.n_embd_out_impl, false);
516 ml.get_key(LLM_KV_BLOCK_COUNT, hparams.n_layer);
517 ml.get_key(LLM_KV_EXPERT_COUNT, hparams.n_expert, false);
518 ml.get_key(LLM_KV_EXPERT_USED_COUNT, hparams.n_expert_used, false);
519 ml.get_key(LLM_KV_EXPERT_GROUP_COUNT, hparams.n_expert_groups, false);
520 ml.get_key(LLM_KV_EXPERT_GROUP_USED_COUNT, hparams.n_group_used, false);
521
522 if (arch == LLM_ARCH_WAVTOKENIZER_DEC) {
523 ml.get_key(LLM_KV_FEATURES_LENGTH, hparams.n_embd_features);
524
525 ml.get_key(LLM_KV_POSNET_EMBEDDING_LENGTH, hparams.posnet.n_embd);
526 ml.get_key(LLM_KV_POSNET_BLOCK_COUNT, hparams.posnet.n_layer);
527
528 ml.get_key(LLM_KV_CONVNEXT_EMBEDDING_LENGTH, hparams.convnext.n_embd);
529 ml.get_key(LLM_KV_CONVNEXT_BLOCK_COUNT, hparams.convnext.n_layer);
530 }
531
532 GGML_ASSERT(hparams.n_expert <= LLAMA_MAX_EXPERTS);
533 GGML_ASSERT(hparams.n_expert_used <= hparams.n_expert);
534 if (hparams.n_expert > 0) {
535 GGML_ASSERT(hparams.n_expert_used > 0);
536 GGML_ASSERT(hparams.n_expert_groups < hparams.n_expert);
537 if (hparams.n_expert_groups > 1) {
538 GGML_ASSERT(hparams.n_expert % hparams.n_expert_groups == 0);
539 GGML_ASSERT(hparams.n_group_used > 0);
540 GGML_ASSERT(hparams.n_group_used < hparams.n_expert_groups);
541 }
542 } else {
543 GGML_ASSERT(hparams.n_expert_used == 0);
544 GGML_ASSERT(hparams.n_expert_groups == 0);
545 }
546
547 std::fill(hparams.n_head_arr.begin(), hparams.n_head_arr.end(), 0);

Callers 3

llama_model_loadFunction · 0.45

Calls 15

gguf_get_n_kvFunction · 0.85
gguf_get_kv_typeFunction · 0.85
gguf_get_keyFunction · 0.85
llm_arch_is_recurrentFunction · 0.85
formatFunction · 0.85
llama_model_rope_typeFunction · 0.85
get_keyMethod · 0.80
get_archMethod · 0.80
get_key_or_arrMethod · 0.80
n_headMethod · 0.80
get_arr_nMethod · 0.80

Tested by

no test coverage detected