mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	llama : MiniCPM support tied embeddings (#7664)
* support lm_head * remove the code block --------- Co-authored-by: zhangkaihuo <zhangkaihuo@modelbest.cn>
This commit is contained in:
		| @@ -645,6 +645,7 @@ MODEL_TENSORS: dict[MODEL_ARCH, list[MODEL_TENSOR]] = { | |||||||
|     ], |     ], | ||||||
|     MODEL_ARCH.MINICPM: [ |     MODEL_ARCH.MINICPM: [ | ||||||
|         MODEL_TENSOR.TOKEN_EMBD, |         MODEL_TENSOR.TOKEN_EMBD, | ||||||
|  |         MODEL_TENSOR.OUTPUT, | ||||||
|         MODEL_TENSOR.OUTPUT_NORM, |         MODEL_TENSOR.OUTPUT_NORM, | ||||||
|         MODEL_TENSOR.ROPE_FREQS, |         MODEL_TENSOR.ROPE_FREQS, | ||||||
|         MODEL_TENSOR.ATTN_NORM, |         MODEL_TENSOR.ATTN_NORM, | ||||||
|   | |||||||
| @@ -5124,14 +5124,12 @@ static bool llm_load_tensors( | |||||||
|                     // output |                     // output | ||||||
|                     { |                     { | ||||||
|                         model.output_norm = ml.create_tensor(ctx_output,       tn(LLM_TENSOR_OUTPUT_NORM, "weight"), {n_embd}); |                         model.output_norm = ml.create_tensor(ctx_output,       tn(LLM_TENSOR_OUTPUT_NORM, "weight"), {n_embd}); | ||||||
|                         if (model.arch != LLM_ARCH_MINICPM){ |  | ||||||
|                         model.output = ml.create_tensor(ctx_output_split, tn(LLM_TENSOR_OUTPUT, "weight"), {n_embd, n_vocab}, llama_model_loader::TENSOR_NOT_REQUIRED); |                         model.output = ml.create_tensor(ctx_output_split, tn(LLM_TENSOR_OUTPUT, "weight"), {n_embd, n_vocab}, llama_model_loader::TENSOR_NOT_REQUIRED); | ||||||
|                         // if output is NULL, init from the input tok embed |                         // if output is NULL, init from the input tok embed | ||||||
|                         if (model.output == NULL) { |                         if (model.output == NULL) { | ||||||
|                             model.output = ml.create_tensor(ctx_output, tn(LLM_TENSOR_TOKEN_EMBD, "weight"), {n_embd, n_vocab}, llama_model_loader::TENSOR_DUPLICATED); |                             model.output = ml.create_tensor(ctx_output, tn(LLM_TENSOR_TOKEN_EMBD, "weight"), {n_embd, n_vocab}, llama_model_loader::TENSOR_DUPLICATED); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                     } |  | ||||||
|  |  | ||||||
|                     for (int i = 0; i < n_layer; ++i) { |                     for (int i = 0; i < n_layer; ++i) { | ||||||
|                         ggml_context * ctx_layer = ctx_for_layer(i); |                         ggml_context * ctx_layer = ctx_for_layer(i); | ||||||
| @@ -10212,7 +10210,7 @@ struct llm_build_context { | |||||||
|         cb(cur, "lmhead_scaling", -1); |         cb(cur, "lmhead_scaling", -1); | ||||||
|  |  | ||||||
|         // lm_head |         // lm_head | ||||||
|         cur = ggml_mul_mat(ctx0, model.tok_embd, cur); |         cur = ggml_mul_mat(ctx0, model.output, cur); | ||||||
|         cb(cur, "result_output", -1); |         cb(cur, "result_output", -1); | ||||||
|  |  | ||||||
|         ggml_build_forward_expand(gf, cur); |         ggml_build_forward_expand(gf, cur); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zhangkaihuo
					zhangkaihuo