Qwen 2.5-Coder 7B Instruct微调提示模板正确性及Token疑问
Qwen 2.5-Coder 7B Instruct 提示模板疑问解答
已知CodeLlama 7B Instruct的官方提示模板如下:
<s>[INST] <<SYS>> {context} <</SYS>> {question} [/INST] {answer} </s>
你自行修改的Qwen 2.5-Coder模板存在核心问题——混用了Llama系列的专用标记和Qwen系列的对话规则,以下是具体说明及正确模板:
错误点说明
你模板里的[INST]、[/INST]、<<SYS>>、<</SYS>>都是CodeLlama等Llama系模型的专属标记,Qwen 2.5-Coder并不识别这些内容,强行套用会干扰模型对对话结构的理解,导致输出质量下降。
正确的Qwen 2.5-Coder 7B Instruct提示模板
Qwen系列Instruct模型(包括Coder分支)采用角色分隔符区分对话轮次与角色,官方标准格式如下:
单轮对话(带系统提示)
<|im_start|>system {context} <|im_end|> <|im_start|>user {question} <|im_end|> <|im_start|>assistant {answer} <|im_end|>
单轮对话(无系统提示)
<|im_start|>user {question} <|im_end|> <|im_start|>assistant {answer} <|im_end|>
多轮对话示例
<|im_start|>system 你是专业代码助手,擅长编写高效、可维护的代码。 <|im_end|> <|im_start|>user 写一个Python函数计算斐波那契数列。 <|im_end|> <|im_start|>assistant def fibonacci(n): if n <= 0: return "请输入正整数" elif n == 1: return 0 elif n == 2: return 1 else: a, b = 0, 1 for _ in range(3, n+1): a, b = b, a + b return b <|im_end|> <|im_start|>user 优化这个函数,添加缓存机制。 <|im_end|> <|im_start|>assistant from functools import lru_cache @lru_cache(maxsize=None) def fibonacci(n): if n <= 0: return "请输入正整数" elif n == 1: return 0 elif n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) <|im_end|>
各标记作用说明
<|im_start|>/<|im_end|>:Qwen系列的对话分隔符,用来包裹每个角色的消息,system/user/assistant是对应的角色标识,模型通过这些标记识别对话上下文的角色和轮次。[INST]/[/INST]:仅适用于Llama系Instruct模型,用来界定用户指令范围,Qwen模型不识别该标记。<<SYS>>/<</SYS>>:Llama系模型中包裹系统提示的专用分隔符,Qwen模型的系统提示直接放在<|im_start|>system和<|im_end|>之间即可,无需额外分隔符。
内容的提问来源于stack exchange,提问作者Md Golam Rassel Lincoln
相关产品推荐
相关产品推荐

