- 大模型
- 基础模型
- 本地部署
- 人工智能
【免费下载链接】DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit
DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit 是面向 Apple Silicon 芯片的 MLX 16-bit 量化版本,基于 Qwen2 1.5B 架构蒸馏自 DeepSeek-R1。本文带你一次读懂其中的对话模板 chat_template.jinja:多轮对话如何拼接、思维链(Chain of Thought)如何"先思考再回答"、工具调用采用什么格式——即使你没有模板开发经验也能轻松理解。
一、先认识这个模型:DeepSeek-R1 蒸馏版 + Apple Silicon 专属优化
在拆解模板之前,先用一分钟了解它的"底色"🧠
| 关键属性 | 说明 | 来源 |
|---|---|---|
| 模型架构 | Qwen2(Qwen2ForCausalLM),1.5B 参数,28 层 | config.json |
| 精度 | 16-bit(bfloat16 全精度,无量化损失) | conversion_metadata.json |
| 运行平台 | Apple Silicon(M1 及以上)+ MLX 框架 | README.md |
| 实测速度 | M1(8GB)下约16.97 tokens/s,峰值内存 280.3 MB | benchmark_results.json |
| 生成参数 | temperature 0.6,top_p 0.95(采样式生成) | generation_config.json |
💡 简单来说:这是一个"轻量级 R1",把 DeepSeek-R1 的推理能力蒸馏进了 1.5B 的小模型,并转换成了苹果芯片上跑得快的 MLX 格式。
二、chat_template.jinja 是干什么的?对话模板为什么不可或缺
如果把模型比作一位"只懂标准语法的专家",那么chat_template.jinja 就是翻译+编剧:
- 翻译:把你的消息列表(system / user / assistant / tool)翻译成模型认识的特殊标记文本;
- 编剧:决定每一轮的开场白、结束语,以及"接下来轮到谁说"。
它是标准的Jinja2 模板(和 Qwen、Llama 系列对话模板同一体系),每次你调用chat或generate时,框架都会自动执行它。文件本体只有一行(chat_template.jinja),却包含三个"状态开关":is_first、is_tool、is_output_first,像一个小型状态机一样跟踪对话走到了哪一步——这正是它能同时支持多轮对话和工具调用的秘诀。
三、多轮对话格式:<|User|>与<|Assistant|>如何拼接
模板对四种角色的渲染规则非常整齐,看这张表就明白了:
| 消息角色 | 渲染结果 |
|---|---|
system | 不加任何角色标签,原文紧跟在 BOS token 之后 |
user | <|User|>+ 用户内容 |
assistant | <|Assistant|>+ 回答内容 +<|end▁of▁sentence|>(结束符) |
tool | 包裹在工具输出块中(见第五节) |
其中<|begin▁of▁sentence|>(BOS)和<|end▁of▁sentence|>(EOS)这两个特殊 token 定义在 tokenizer_config.json 中,分别标记对话的开始与单轮回答的结束。
一次简单的两轮对话渲染后大致长这样(已省略换行):
<|begin▁of▁sentence|>你是一个乐于助人的助手。 <|User|>你好! <|Assistant|>你好!有什么可以帮你?<|end▁of▁sentence|> <|User|>帮我写个打油诗 <|Assistant|> </think>注意一个精妙细节:模板在回放历史 assistant 消息时,会执行content.split(' </think>')[-1]——即只保留最后一个</think>之后的内容,把"思考过程"从历史记录里裁掉,只留最终答案。这样既节省上下文,又避免模型偷懒照抄旧思考。
四、思维链揭秘:模型为什么"先思考再回答"
DeepSeek-R1 系列的灵魂是推理链,而这个模板用一行代码就把它"激活"了⚡
当对话轮到你(用户)发起新请求、且需要模型生成时(add_generation_prompt为真),模板会在末尾自动追加:
<|Assistant|> </think>这就像提前替模型"开了个头":</think>告诉模型"现在开始思考",后面留一个换行让它自由书写推理过程,想清楚后再用</think>收尾并给出答案。你不需要手动添加任何前缀,这就是 R1 风格"自动思考"的实现方式。
而配合上一节的历史裁剪逻辑,完整机制就成了一个闭环:
- 生成时:自动补上 `
五、工具调用格式:从tool_calls_begin到tool_outputs_end的完整闭环
这个模板原生支持 DeepSeek 风格的函数调用(Function Calling),涉及一组专属标签:
| 标签 | 作用 |
|---|---|
<|tool_calls_begin|>/<|tool_calls_end|> | 一个"调用块"的开始 / 结束 |
<|tool_call_begin|>/<|tool_call_end|> | 单个工具调用的开始 / 结束 |
<|tool_sep|> | 分隔调用类型(function)与函数名 |
<|tool_outputs_begin|>/<|tool_outputs_end|> | 工具结果区的开始 / 结束 |
<|tool_output_begin|>/<|tool_output_end|> | 单条工具结果的开始 / 结束 |
完整的"问天气"调用流程渲染后如下(为排版省略部分换行):
<|User|>北京今天天气怎么样? <|Assistant|><|tool_calls_begin|><|tool_call_begin|>function<|tool_sep|>get_weather ```json {"city": "北京"} ``` <|tool_call_end|> <|tool_outputs_begin|><|tool_output_begin|>晴,25℃<|tool_output_end|> <|tool_outputs_end|> 北京今天晴,气温25℃。<|end▁of▁sentence|>两个值得注意的设计:
- 函数参数用 JSON 传递:
function['arguments']被包在```json代码块里,模型输出即合法 JSON,便于程序解析; - 工具结果结束后不加生成提示:如果对话最后一条是
tool消息,模板只补一个<|tool_outputs_end|>而不追加<|Assistant|>,把"思考+作答"完全交给模型自行发挥——这正是 R1 式的"看完工具结果再推理"。
六、快速上手:三步体验这个对话模板
在 Apple Silicon 机器上,装好mlx-lm即可直接使用,模板会由框架自动套用,无需任何配置:
pip install mlx-lm # 交互式聊天(自动启用思维链) mlx_lm.chat --model SirSahOl/DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit # 单次生成 mlx_lm.generate --model SirSahOl/DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit --prompt "你好"如果想把仓库拉到本地逐行对照文件,也可以克隆:
git clone https://gitcode.com/hf_mirrors/mlx-community/DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit七、常见疑问 FAQ
Q1:改错或删掉模板会怎样?模板决定消息拼接方式。如果模板与训练时不一致,模型会"看不懂"对话结构,输出变得混乱。所以换模型时模板必须配套。
Q2:标签里那个|为什么是全角竖线?这是 Qwen2 系列特殊 token 的视觉写法(词汇表中真实存在这类 token),并非笔误。本模型基于 Qwen2 架构蒸馏,因此</think>、<|User|>等标记与 tokenizer.json 词表严格对应。
Q3:16-bit 版本适合我现在的机器吗?建议按内存选量化档位(详见 README.md):8GB 选 4-bit,16–32GB 选 8-bit,64GB 以上再上 16-bit 全精度版本。
八、相关文件速查
| 文件 | 用途 |
|---|---|
| chat_template.jinja | 本文主角:Jinja2 对话模板(多轮 + 思维链 + 工具调用) |
| tokenizer_config.json | BOS/EOS 等特殊 token 定义 |
| tokenizer.json | 完整词表(约 15 万词元) |
| config.json | 模型架构参数(Qwen2 / 1.5B) |
| generation_config.json | 生成参数(temperature 0.6 等) |
| benchmark_results.json | M1 8GB 实测性能数据 |
| conversion_metadata.json | MLX 转换元信息 |
| README.md | 安装、使用与量化选择指南 |
读懂了这份模板,你就掌握了 DeepSeek-R1 系列对话模型的"底层剧本"——无论以后换到哪个蒸馏版本或量化规格,多轮对话、思维链与工具调用的格式套路都如出一辙。
- 大模型
- 基础模型
- 本地部署
- 人工智能
【免费下载链接】DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考