ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

233、【AI】【模型部署】基座模型研究:基座与 Instruct 的差别

233、【AI】【模型部署】基座模型研究:基座与 Instruct 的差别 【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除标题233、【AI】【模型部署】基座模型研究基座与 Instruct 的差别背景上篇 blog【AI】【模型部署】基座模型研究一次前向、KV cache 与采样在推理侧做了三个实验一次前向把(1,1)的 token 变成(1,1,151936)的 logits24 层维持(1,1,896)同形KV cache 复用历史 K/V实测开 6.83s、关 10.91s慢约 60%采样用do_sample/temperature/top_k控制稳定 vs 多样。结构、训练、推理三条线闭环。本篇做最后一个对比实验把同一系列的两个模型——Qwen2.5-0.5B基座与Qwen2.5-0.5B-Instruct指令版——放到同一提示下看预训练与指令微调到底差在哪模型部署前面下载的一直是-Instruct对话版。本篇把不带后缀的基座版也下下来两个模型用同一个分词器、同一句提示输出却会完全不同——这正是理解基座是什么最直观的一次实验。两个模型一个分词器Qwen2.5-0.5B与Qwen2.5-0.5B-Instruct共用同一套词表与分词器参数量也相同都是 0.494B差别只在训练阶段INSThome/Qwen--Qwen2.5-0.5B-Instruct/snapshots/masterBASEhome/Qwen--Qwen2.5-0.5B/snapshots/mastertokAutoTokenizer.from_pretrained(INST)本机内存只有 14GiB两个 0.5B 模型不能同时常驻fp32 各约 2GB加上运行时开销会撑爆所以实验里先用基座、释放后再加载 Instruct——这也顺带印证了模型常驻内存的代价223 的服务化讨论过。基座版只会续写不会回答基座Base是纯预训练产物训练目标只是预测下一个 token所以它的行为是把提示词当成文章开头继续写下去实测idstok(prompt,return_tensorspt)[input_ids]obase.generate(ids,max_new_tokens48,do_sampleFalse)print(tok.decode(o[0],skip_special_tokensTrue))实测输出用一句话介绍什么是 Transformer 模型。 Transformer 模型是一种基于自注意力机制的 神经网络架构它通过将输入序列映射到一个高维的向量空间从而能够捕捉到序列中的 上下文信息。这种架构特别适用于自然语言处理任务注意开头它把提问原样复述了一遍然后接着往下写——因为在预训练语料里用一句话介绍什么是 Transformer 模型。更可能出现在文章中间后面本来就该跟着正文。基座没有该轮到助手作答的概念。Instruct 版听得懂指令-Instruct版在基座之上做了指令微调SFTSupervised Fine-Tuning监督微调用大量指令 → 回答数据训练让它学会按对话格式回应。同样的提示输出是直接给答案实测msg[{role:user,content:prompt}]inptok.apply_chat_template(msg,add_generation_promptTrue,tokenizeTrue,return_tensorspt,return_dictTrue)oinst.generate(**inp,max_new_tokens48,do_sampleFalse)print(tok.decode(o[0][inp[input_ids].shape[1]:],skip_special_tokensTrue))实测输出Transformer 是一种基于自注意力机制的神经机器翻译模型能够处理大规模文本数据 并实现高精度的翻译效果。关键差别没有复述问题直接作答。apply_chat_template给输入套上了对话格式|im_start|user ... |im_end|模型在这种格式下被训练成轮到 assistant 说话。换个提示再验证一次再用什么是机器学习测一遍实测模型输出节选基座“什么是机器学习它有哪些应用领域 机器学习是一种人工智能技术…”Instruct“机器学习是一种人工智能的分支它使计算机能够通过数据自动改进和优化其性能…”基座版又把问题复述一遍、还反问一句像在续写一篇 FAQ 文章Instruct 版直接给定义——两次实验结论一致差别来自训练阶段不是参数。同一个基座两种行为维度基座Qwen2.5-0.5B指令版-Instruct训练目标预测下一个 token先预训练再指令微调对提示的反应当作文章开头续写当作问题来回答输入格式原始文本对话模板带角色标记典型用途作为微调的起点直接对话/助手这也解释了前面几篇的一个现象221 里如果没加add_generation_promptTrue模型会自己回显user角色标记——因为对话格式是 Instruct 版才认得的约定。对话模板Instruct 的暗号Instruct 版能听懂靠的是输入被套上了训练时见过的格式。apply_chat_template生成的文本大致长这样|im_start|system You are Qwen...|im_end| |im_start|user 什么是机器学习|im_end| |im_start|assistant|im_start|/|im_end|就是 225 里那些特殊 token。模型看到assistant开头就知道该自己接着说了——这也是 221 里不加add_generation_promptTrue会回显user的原因。SFT 用的数据长什么样指令微调的数据是指令 → 回答对比如{instruction: 用一句话解释…, response: …}训练时把 response 当作要预测的目标损失函数仍是 next-token 交叉熵——目标没变变的是数据形态预训练喂文章SFT 喂问答。阶段数据学到的行为预训练海量原文语言与知识会续写SFT指令-回答对听懂指令会对话对齐人类偏好更符合期望安全、有用所以基座是地基、Instruct 是精装修能力上限由预训练决定后两步只改变怎么用这些能力。回到研究基座这条线把 224 到本篇连起来看config.json定义结构 → 分词器把文字变 id → 嵌入层变向量 → 24 层RMSNorm/RoPE/GQA/SwiGLU做变换 → LM 头出 logits训练用预测下一个 token把随机权重变成基座指令微调再把它变成助手。基座是这一切的地基Instruct 只是在地基上加的一层行为规范。一句话记忆基座与 Instruct 共用分词器和 0.494B 参数差别只在训练阶段基座只做 next-token 预测把提示当文章开头续写实测会把问题原样复述再往下写Instruct 经过指令微调用对话模板把提示当问题回答直接给答案想研究模型本身就看基座想直接当助手用就取 Instruct——下一篇收尾讲预训练到底在做什么。OK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog【AI】【模型部署】基座模型研究预训练到底在做什么
返回列表