From 85422801531799dcecf33f85ef92a2923622cd22 Mon Sep 17 00:00:00 2001 From: Xydane <300356+Xydane@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:29:50 -0800 Subject: [PATCH 1/2] add support for DeepSeek-R1 models --- llama.cpp/llama.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/llama.cpp/llama.cpp b/llama.cpp/llama.cpp index 21b582f003..84fa28f6d3 100644 --- a/llama.cpp/llama.cpp +++ b/llama.cpp/llama.cpp @@ -5187,7 +5187,7 @@ static void llm_load_vocab( vocab.type_pre = LLAMA_VOCAB_PRE_TYPE_COMMAND_R; vocab.tokenizer_clean_spaces = false; } else if ( - tokenizer_pre == "qwen2") { + tokenizer_pre == "qwen2" || tokenizer_pre == "deepseek-r1-qwen") { vocab.type_pre = LLAMA_VOCAB_PRE_TYPE_QWEN2; vocab.tokenizer_clean_spaces = false; } else if ( @@ -5427,7 +5427,7 @@ static void llm_load_vocab( t.first == "<|im_end|>" || t.first == "<|end|>" || t.first == "" || - t.first == "<|endoftext|>" + t.first == "<|endoftext|>" ) ) { vocab.special_eot_id = t.second; @@ -19160,6 +19160,21 @@ static int32_t llama_chat_apply_template_internal( if (add_ass) { ss << "Assistant:"; } + } else if (tmpl == "deepseek3" || tmpl_contains(LU8("<|Assistant|>")) && tmpl_contains(LU8("<|User|>")) && tmpl_contains(LU8("<|end▁of▁sentence|>"))) { + // DeepSeek-V3 + for (auto message : chat) { + std::string role(message->role); + if (role == "system") { + ss << message->content << "\n\n"; + } else if (role == "user") { + ss << LU8("<|User|>") << message->content; + } else if (role == "assistant") { + ss << LU8("<|Assistant|>") << message->content << LU8("<|end▁of▁sentence|>"); + } + } + if (add_ass) { + ss << LU8("<|Assistant|>"); + } } else if (tmpl == "exaone3" || (tmpl_contains("[|system|]") && tmpl_contains("[|assistant|]") && tmpl_contains("[|endofturn|]"))) { // ref: https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct/discussions/8#66bae61b1893d14ee8ed85bb // EXAONE-3.0-7.8B-Instruct From 7af11153b064a7f2859d9f7f05c5b0d0bdaac7eb Mon Sep 17 00:00:00 2001 From: Xydane <300356+Xydane@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:33:13 -0800 Subject: [PATCH 2/2] remove space --- llama.cpp/llama.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llama.cpp/llama.cpp b/llama.cpp/llama.cpp index 84fa28f6d3..0da39aee1d 100644 --- a/llama.cpp/llama.cpp +++ b/llama.cpp/llama.cpp @@ -5427,7 +5427,7 @@ static void llm_load_vocab( t.first == "<|im_end|>" || t.first == "<|end|>" || t.first == "" || - t.first == "<|endoftext|>" + t.first == "<|endoftext|>" ) ) { vocab.special_eot_id = t.second;