DeepSeek模型的核心模板规范及使用注意事项
格式,需严格使用预设的标识符分隔不同对话回合。DeepSeek模型的对话模板通常遵循。需根据实际文件调整数据格式。需根据具体模型文档调整。
·
一、基础对话模板结构
DeepSeek模型的对话模板通常遵循多角色分块标记格式,需严格使用预设的标识符分隔不同对话回合。以官方发布的7B/67B对话模型为例,典型结构如下:
<|im_start|>system
{系统提示内容}<|im_end|>
<|im_start|>user
{用户输入内容}<|im_end|>
<|im_start|>assistant
{模型应答内容}<|im_end|>
- 关键标记:
<|im_start|>:标识对话角色(system/user/assistant)的起始<|im_end|>:标识当前对话块的结束
- 强制要求:每个对话块必须包含完整的开始和结束标记,否则可能导致生成失控13。
二、模板配置来源
-
Tokenizer配置文件
模型目录中的tokenizer_config.json会明确指定对话模板参数,例如:{ "chat_template": "{% for message in messages %}<|im_start|>{{ message['role'] }}\n{{ message['content'] }}<|im_end|>\n{% endfor %}", "roles": ["system", "user", "assistant"] }需根据实际文件调整数据格式3。
-
Hugging Face官方指南
通过apply_chat_template方法自动格式化输入:from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-llm-7b-chat") messages = [{"role": "user", "content": "你好!"}] inputs = tokenizer.apply_chat_template(messages, return_tensors="pt")
三、微调数据格式要求
-
数据集规范
训练数据需转换为与模板匹配的JSON格式,示例:{ "messages": [ {"role": "system", "content": "你是一个助手"}, {"role": "user", "content": "如何学习机器学习?"}, {"role": "assistant", "content": "建议从线性代数和Python编程开始..."} ] } -
常见错误规避
四、模板变体与适配
-
非对话任务模板
对于非对话场景(如文本续写),需禁用对话标记,直接输入原始文本:inputs = tokenizer("今天天气晴朗,", return_tensors="pt", add_special_tokens=False) -
第三方衍生模型
基于Llama架构的DeepSeek变体(如DeepSeek-R1-Distill-Llama)可能采用Llama模板:[INST] <<SYS>>{系统提示}<</SYS>>\n\n{用户输入} [/INST] {模型回答}需根据具体模型文档调整5。
五、调试与验证方法
- 生成效果检查
通过对比格式化前后的输入数据,验证模板是否正确应用:print(tokenizer.decode(inputs[0]()[2]()[3]() 。
附:参考资料
更多推荐


所有评论(0)