对比语言模型CLM完整入门:System One决策模型为何能以9倍低延迟比肩LLM?
对比语言模型CLM完整入门System One决策模型为何能以9倍低延迟比肩LLM【免费下载链接】CLM项目地址: https://gitcode.com/gh_mirrors/clm2/CLMCLMContrastive Language Models对比语言模型是一类专为快速决策设计的 System One 模型它用对比学习目标把状态state与动作action连接起来不做逐字生成而是直接给候选动作打分并选出最优解。开源的 CLM-8B 在计算机操作、游戏、工具调用等任务上比肩 LLM 方案延迟却低至其 1/9轻量微调后还能作为验证器verifier刷新智能体编程基准的 SOTA。本文将从零带你搞懂CLM 是什么、为什么这么快、三步跑起来、以及怎么微调。 什么是CLM不是生成模型而是打分模型理解 CLM 的关键在于它彻底换了一种做事方式传统 LLM 做决策≈ 系统二慢思考一个字一个字地生成答案每个 token 都要走一次完整的前向推理CLM 做决策≈ 系统一直觉判断看到当前状态瞬间给所有候选动作算出对齐度分数softmax 之后就是答案分布。具体机制拆解环节CLM 的做法训练状态编码器 动作编码器用双向 InfoNCE 对比损失把正确动作拉近、把错误动作推远推理当前状态做一次嵌入每个候选动作做一次点积选最高分架构冻结的 Qwen3-8B 骨干 仅20M 参数的可训练投影头见 src/clm/heads.py一句话总结CLM 把决策从生成变成了检索/打分这是它快的根本原因。核心推理引擎在 src/clm/engine.py客户端类型CLMClient、Noul、Choice、Score在 src/clm/client.py。⚡ 为什么延迟能低到LLM的1/9三大核心机制机制一没有自回归解码没有逐token税LLM 生成 50 个 token 就要跑 50 次解码循环而 CLM 一次前向嵌入 若干次向量点积就出结果。候选动作越多、状态越可复用优势越夸张——这正是 WikiRacing、T-Rex 游戏上加速比最大的原因。机制二状态与动作解耦嵌入独立缓存CLM 把状态嵌入和动作嵌入分开缓存向量缓存见 src/clm/cache.py服务器启动时预留一块设备内存类似 vLLM 的 KV cache命中即跳过编码器调用。实测在一张 RTX 4090 上重复状态场景下 P50 延迟从 28ms 降到 0.6ms。机制三只跑 20M 参数的小头编码器负责重活重计算集中在 vLLM 跑池化编码器而 CLM 自己的投影头非常轻甚至可以在 CPU 上跑热更新权重不影响服务。效果有多直观在仓库自带的 Chrome 恐龙游戏实时对决examples/t_rex/中模型平均延迟60秒存活率CLM-8B16.5 ms5/5JevTypeSafe149.8 ms5/5同样的胜率快了近9 倍——因为游戏每秒要做几十次决策低延迟就是生存力。 CLM是怎么训练出来的三阶段数据配方CLM-8B 的训练分三步每一阶段都是更难一点的状态-动作对齐预训练约 6000 万条 Nemotron 问答对问题状态答案动作学宽泛语义表征中期训练约 3000 万条合成的困难负样本语义相似但错误的答案学会在相似候选间精细区分后训练约 100 万条智能体轨迹每个步骤就是一个状态-动作对其中保留 40% 问答对回放防止遗忘。值得一提的是它的缩放定律验证损失随训练算力、数据量、投影头大小、编码器大小呈幂律下降在固定算力下最优头大小约等于每参数 310 个训练 token且随数据量近线性增长——这意味着 CLM 是可以被系统性放大的。 三步跑起来安装、起服务、问问题第 1 步安装 Python 包pip install contrastive-lm第 2 步启动嵌入编码器GPU 上跑 Qwen3-8B 池化模式vllm serve Qwen/Qwen3-8B --served-model-name qwen3-8b --runner pooling --port 8090第 3 步启动 CLM API 服务首次运行会自动下载 75MB 参考头clm-serve服务起来后http://localhost:8700/自带一个Playground 网页界面左边写状态、加问题右边立刻看到答案分布还支持查看等价的 JSON / curl / Python 请求界面静态文件在 src/clm/static/。CLM 一次调用最多支持三种类型化问题这也是它好用的地方类型用途返回Noul判断某陈述是否为真如这件事紧急吗真实概率 p_trueChoice从若干选项中选一个如该派给哪个团队选项 各选项概率Score在有序量级上打分如客户有多不满期望等级 分布 实战成绩零样本比肩微调后刷出SOTA除了上面的零样本对标CLM 还有一个杀手级用法——当验证器让强模型生成多个候选解再用 CLM 挑出最好的。基准CLM微调后Jev延迟对比DeepSWE38 个留出任务81.6%SOTA71.1%79ms vs 449ms5.7×Terminal-Bench 2.130 个留出任务87.6%SOTA83.1%32ms vs 131ms4.1×注意一个细节Jev 在这些长程任务上甚至无法胜任验证器得分低于 pass1而 CLM 不仅能用还最快——比肩 更快 更稳三重优势。️ 如何用CLM微调自己的任务微调文档见 docs/FINETUNING.md。核心思路非常轻量编码器保持冻结只训练 20M 参数的投影头train/finetune.py成本远低于微调完整 LLM支持智能体轨迹、类型化决策等多类数据集适配器train/adapters.py统一的最佳-N 评估脚本在 evaluation/bon_eval.py一行命令即可复现 DeepSWE 81.6% 的留出结果。 仓库结构速查路径说明src/clm/推理包clm-serve服务、CLMClient客户端、Playgroundsrc/clm/embedder.py嵌入客户端 归一化向量 LRU 缓存train/微调脚本与数据适配器evaluation/bon_eval.py统一 best-of-N 评估examples/t_rex/恐龙游戏实时对决CLM vs Jev 完整可复现docs/FINETUNING.md微调指南✅ 新手FAQ什么时候该用CLM而不是LLMQCLM 能替代 LLM 写代码、写文章吗不能。CLM 不做自由文本生成它的主场是封闭候选集决策工具路由、best-of-N 挑解、检索池初筛、游戏/计算机操作、类型化判断紧急吗归哪个部门。Q硬件要求高吗编码器在单张 RTX 4090 级别显卡上即可流畅服务Qwen3-8B 池化 vLLMCLM 头本身很轻CPU 也能跑。长状态可把--max-model-len与clm-serve --max-tokens一起调大。Q候选动作很多时会不会变慢不会。缓存命中时每个候选只是一次点积动作越多、复用越多CLM 相对 LLM 的延迟优势反而越大。小结CLM 用对比学习 状态/动作解耦 嵌入缓存三板斧把决策模型的延迟压到 LLM 的 1/9 而不牺牲精度。如果你的 Agent 里存在高频、候选有限、要快的决策点值得一试——仓库已把服务、Playground、微调和可复现示例全部备好。【免费下载链接】CLM项目地址: https://gitcode.com/gh_mirrors/clm2/CLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考