Skip to content

Commit 865ec17

Browse files
committed
talk-llama : sync llama.cpp
1 parent 0a62a57 commit 865ec17

129 files changed

Lines changed: 1593 additions & 395 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

examples/talk-llama/llama-arch.cpp

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -757,14 +757,15 @@ static const std::map<llm_tensor, llm_tensor_info> LLM_TENSOR_INFOS = {
757757
{LLM_TENSOR_INDEXER_PROJ, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
758758
{LLM_TENSOR_INDEXER_ATTN_K, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
759759
{LLM_TENSOR_INDEXER_ATTN_Q_B, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
760-
// NextN/MTP tensors are currently ignored (reserved for future MTP support)
761-
// These tensors only exist in the last layer(s) and are treated as output tensors
762-
{LLM_TENSOR_NEXTN_EH_PROJ, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
763-
{LLM_TENSOR_NEXTN_EMBED_TOKENS, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_GET_ROWS}},
764-
{LLM_TENSOR_NEXTN_ENORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_GET_ROWS}},
765-
{LLM_TENSOR_NEXTN_HNORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
766-
{LLM_TENSOR_NEXTN_SHARED_HEAD_HEAD, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL_MAT}},
767-
{LLM_TENSOR_NEXTN_SHARED_HEAD_NORM, {LLM_TENSOR_LAYER_OUTPUT, GGML_OP_MUL}},
760+
// NextN/MTP tensors are stored per-block (blk.%d.nextn.*) even though only the
761+
// last nextn_predict_layers blocks carry them. Classify as LAYER_REPEATING so
762+
// the model loader doesn't fault on the block index.
763+
{LLM_TENSOR_NEXTN_EH_PROJ, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
764+
{LLM_TENSOR_NEXTN_EMBED_TOKENS, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_GET_ROWS}},
765+
{LLM_TENSOR_NEXTN_ENORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
766+
{LLM_TENSOR_NEXTN_HNORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
767+
{LLM_TENSOR_NEXTN_SHARED_HEAD_HEAD, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL_MAT}},
768+
{LLM_TENSOR_NEXTN_SHARED_HEAD_NORM, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
768769
// Nemotron 3 Super
769770
{LLM_TENSOR_FFN_LATENT_DOWN, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
770771
{LLM_TENSOR_FFN_LATENT_UP, {LLM_TENSOR_LAYER_REPEATING, GGML_OP_MUL}},
@@ -877,6 +878,16 @@ bool llm_arch_is_diffusion(const llm_arch & arch) {
877878
}
878879
}
879880

881+
bool llm_arch_supports_rs_rollback(const llm_arch & arch) {
882+
switch (arch) {
883+
case LLM_ARCH_QWEN35:
884+
case LLM_ARCH_QWEN35MOE:
885+
return true;
886+
default:
887+
return false;
888+
}
889+
}
890+
880891
bool llm_arch_supports_sm_tensor(const llm_arch & arch) {
881892
switch (arch) {
882893
case LLM_ARCH_GROK:

examples/talk-llama/llama-arch.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,3 +637,4 @@ bool llm_arch_is_recurrent (const llm_arch & arch);
637637
bool llm_arch_is_hybrid (const llm_arch & arch);
638638
bool llm_arch_is_diffusion (const llm_arch & arch);
639639
bool llm_arch_supports_sm_tensor(const llm_arch & arch);
640+
bool llm_arch_supports_rs_rollback(const llm_arch & arch);

examples/talk-llama/llama-chat.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ static const std::map<std::string, llm_chat_template> LLM_CHAT_TEMPLATES = {
7373
{ "hunyuan-moe", LLM_CHAT_TEMPLATE_HUNYUAN_MOE },
7474
{ "gpt-oss", LLM_CHAT_TEMPLATE_OPENAI_MOE },
7575
{ "hunyuan-dense", LLM_CHAT_TEMPLATE_HUNYUAN_DENSE },
76-
{ "hunyuan-ocr", LLM_CHAT_TEMPLATE_HUNYUAN_OCR },
76+
{ "hunyuan-vl", LLM_CHAT_TEMPLATE_HUNYUAN_VL },
7777
{ "kimi-k2", LLM_CHAT_TEMPLATE_KIMI_K2 },
7878
{ "seed_oss", LLM_CHAT_TEMPLATE_SEED_OSS },
7979
{ "grok-2", LLM_CHAT_TEMPLATE_GROK_2 },
@@ -218,7 +218,7 @@ llm_chat_template llm_chat_detect_template(const std::string & tmpl) {
218218
} else if (tmpl_contains("<|start|>") && tmpl_contains("<|channel|>")) {
219219
return LLM_CHAT_TEMPLATE_OPENAI_MOE;
220220
} else if (tmpl_contains("<|hy_Assistant|>") && tmpl_contains("<|hy_begin▁of▁sentence|>")) {
221-
return LLM_CHAT_TEMPLATE_HUNYUAN_OCR;
221+
return LLM_CHAT_TEMPLATE_HUNYUAN_VL;
222222
} else if (tmpl_contains("<|hy_Assistant|>") && tmpl_contains("<|hy_place▁holder▁no▁3|>")) {
223223
return LLM_CHAT_TEMPLATE_HUNYUAN_DENSE;
224224
} else if (tmpl_contains("<|im_assistant|>assistant<|im_middle|>")) {
@@ -825,8 +825,8 @@ int32_t llm_chat_apply_template(
825825
ss << "<|hy_User|>" << chat[i]->content << "<|hy_Assistant|>";
826826
}
827827
}
828-
} else if (tmpl == LLM_CHAT_TEMPLATE_HUNYUAN_OCR) {
829-
// tencent/HunyuanOCR
828+
} else if (tmpl == LLM_CHAT_TEMPLATE_HUNYUAN_VL) {
829+
// tencent/HunyuanOCR & tencent/HunyuanVL
830830
ss << "<|hy_begin▁of▁sentence|>";
831831
for (size_t i = 0; i < chat.size(); i++) {
832832
std::string role(chat[i]->role);

examples/talk-llama/llama-chat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ enum llm_chat_template {
5353
LLM_CHAT_TEMPLATE_HUNYUAN_MOE,
5454
LLM_CHAT_TEMPLATE_OPENAI_MOE,
5555
LLM_CHAT_TEMPLATE_HUNYUAN_DENSE,
56-
LLM_CHAT_TEMPLATE_HUNYUAN_OCR,
56+
LLM_CHAT_TEMPLATE_HUNYUAN_VL,
5757
LLM_CHAT_TEMPLATE_KIMI_K2,
5858
LLM_CHAT_TEMPLATE_SEED_OSS,
5959
LLM_CHAT_TEMPLATE_GROK_2,

0 commit comments

Comments
 (0)