
大模型基础模型本地部署人工智能【免费下载链接】DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit项目地址https://ai.gitcode.com/hf_mirrors/mlx-community/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 专属优化在拆解模板之前先用一分钟了解它的底色关键属性说明来源模型架构Qwen2Qwen2ForCausalLM1.5B 参数28 层config.json精度16-bitbfloat16 全精度无量化损失conversion_metadata.json运行平台Apple SiliconM1 及以上 MLX 框架README.md实测速度M18GB下约16.97 tokens/s峰值内存 280.3 MBbenchmark_results.json生成参数temperature 0.6top_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 之后userUser 用户内容assistantAssistant 回答内容 end▁of▁sentence结束符tool包裹在工具输出块中见第五节其中begin▁of▁sentenceBOS和end▁of▁sentenceEOS这两个特殊 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北京今天天气怎么样 Assistanttool_calls_begintool_call_beginfunctiontool_sepget_weather json {city: 北京} tool_call_end tool_outputs_begintool_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七、常见疑问 FAQQ1改错或删掉模板会怎样模板决定消息拼接方式。如果模板与训练时不一致模型会看不懂对话结构输出变得混乱。所以换模型时模板必须配套。Q2标签里那个为什么是全角竖线这是 Qwen2 系列特殊 token 的视觉写法词汇表中真实存在这类 token并非笔误。本模型基于 Qwen2 架构蒸馏因此/think、User等标记与 tokenizer.json 词表严格对应。Q316-bit 版本适合我现在的机器吗建议按内存选量化档位详见 README.md8GB 选 4-bit16–32GB 选 8-bit64GB 以上再上 16-bit 全精度版本。八、相关文件速查文件用途chat_template.jinja本文主角Jinja2 对话模板多轮 思维链 工具调用tokenizer_config.jsonBOS/EOS 等特殊 token 定义tokenizer.json完整词表约 15 万词元config.json模型架构参数Qwen2 / 1.5Bgeneration_config.json生成参数temperature 0.6 等benchmark_results.jsonM1 8GB 实测性能数据conversion_metadata.jsonMLX 转换元信息README.md安装、使用与量化选择指南读懂了这份模板你就掌握了 DeepSeek-R1 系列对话模型的底层剧本——无论以后换到哪个蒸馏版本或量化规格多轮对话、思维链与工具调用的格式套路都如出一辙。赞分享大模型基础模型本地部署人工智能【免费下载链接】DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit项目地址https://ai.gitcode.com/hf_mirrors/mlx-community/DeepSeek-R1-Distill-Qwen-1.5B-chat-mlx-16bit点击查看免费下载相关推荐DeepSeek-R1-Distill-Qwen-1.5B模型转换ONNX格式部署性能测试DeepSeek R1 Distill Qwen 1.5B模型转换ONNX格式部署性能测试 引言为什么需要模型格式转换 你是否遇到过这些问题训练好的大模上一篇当你的输入法词库被困在不同平台时这个工具能做什么下一篇QQ空间历史说说导出完整指南用 GetQzonehistory 免费把多年的动态搬回本地创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考