@akshay_pachaar:如何将大语言模型转变为决策模型?假设我们有一张客服工单,上面写着:“发票 4411 被重复扣款了……”
摘要
教程演示如何用 Unsloth Studio 无代码微调 Qwen 基础模型,将其转变为可输出结构化决策与置信度分数的决策模型,准确率从约 34% 提升到 65%。
查看缓存全文
缓存时间: 2026/10/10 16:56
如何将 LLM 转变为决策模型?
假设我们收到一张支持工单,内容是:“发票 4411 被重复扣款了。请退款。”
我们的应用需要做出两个决策:由哪个团队处理这张工单,以及是否退款。
语言模型会逐个 token 生成文本,而决策模型会直接为可用选项打分。
下面介绍如何将 LLM 转变为决策模型:
→ 定义问题和选项。
将工单连同需要做出的决策一起提供给模型。对于处理团队,选项是账单、技术和销售。对于退款,选项是“是”和“否”。
→ 保留骨干网络并冻结其权重。
骨干网络处理输入并构建其内部表示。添加 LoRA,即小型可训练组件,在原始权重保持冻结的同时调整这些表示。
→ 替换语言模型头。
语言模型头负责预测下一个 token。将其替换为决策头,后者会从工单中为每个选项收集依据,让问题与选项相互交互,并为每个选项输出一个分数。
→ 将分数转换为概率。
对每个问题分别应用 softmax,将分数转换为概率。这样就能得到一个关于处理团队的概率分布,以及另一个关于退款选项的概率分布。
→ 使用正确答案进行训练。
对于这个训练样本,标签是“账单”和“是”。交叉熵损失衡量预测与这些标签的匹配程度,训练只更新决策头和 LoRA 组件。
→ 使用留出样本进行校准。
训练结束后,使用未参与训练的样本调整模型的置信度。模型预测的概率应反映这些预测实际正确的频率。
推理时,一次前向传播就能为所有选项打分。应用获得这些概率后,就可以用它们分派工单并决定是否退款。
我使用 Qwen3.5 0.8B,在本地训练了一个 JEV 风格的决策模型。仅用 4GB 显存训练 10 分钟、完成 60 步,准确率就从 37% 提升到了 65%。
欢迎观看我的 YouTube 视频,了解从环境设置、训练到评估和推理的完整流程。
YouTube 视频:https://youtu.be/yKEesJaCwEc
(订阅以获取更多此类内容)
简要总结:本教程演示如何用 Unsloth 的无代码 Studio(桌面应用或远程 GPU/Colab)和配套代码,把一个 Qwen 基础模型微调成“决策模型”——给定状态、问题与有限选项,输出结构化决策与置信度分数,准确率从约 34% 提升到 65%。
把 LLM 变成决策模型:用 Unsloth 从零微调实战
什么是决策模型
决策模型的工作方式很直接:你给它一个状态(state)、一个关于该状态的问题(question),以及一组有限的选项,它需要在其中做出决策,并给出置信度分数。
典型的输入结构包含三部分:
- 状态(state):当前状态描述
- 问题(questions):针对该状态的问题
- 标准答案状态(gold state):标准答案状态
输出则是结构化响应:模型名称、答案(如“需要批准”)、类型(二选一,是/否)、以及置信度。置信度分数尤其有用——如果你要把决策结果接入自己的应用程序,可以用它来做更好的判断。
视频标题给出的示例场景是:一张支持工单写着“我在发票 4411 上被收了两次费”,问题则是“这个工具在运行前是否需要人工批准?”
准备环境:桌面应用与远程 GPU 两种方式
方式一:下载 Unsloth 桌面应用
第一件事是下载 Unsloth 桌面应用程序。它是一个 Mac 应用,但用什么机器、什么系统完全由你自己决定——Windows 用户也可以通过命令行安装。作者当前在 Mac 上,已经下载好了。
方式二:远程 GPU(Lightning 或免费 Google Colab)
问题在于:想训练并转换为决策模型的这些模型,目前在 Apple Silicon 上还不受支持。这不是障碍——如果你有一台带 GPU 的机器,或者想用免费的 Google Colab,都可以复现。
作者使用的是 Lightning,一个托管 GPU 机器服务,本质上就是一台他可以访问的 Linux 机器。操作步骤:
- 复制安装命令并在远程机器上执行。
- 环境类似 VS Code,正在运行 Studio 安装程序。
- 安装器询问是否启动 Studio,选择“是”,Studio 会在
localhost 8888启动。 - 因为是远程服务器,需要把端口公开暴露出来,才能在浏览器中访问。Lightning 提供端口查看器(port viewer)功能,点击暴露端口后,Unsloth Studio 就会在浏览器中打开。
一个可能遇到的小麻烦:远程环境下需要运行 unsloth studio reset-password 命令。你需要进入服务器运行的目录下执行该命令,它会给出一个密码;把它粘贴进去重置为自己的新密码即可。这些麻烦在本地运行桌面应用时不存在,但掌握远程/Colab 上的同样体验很有价值。
搞定之后,最难的部分就过去了——现在你已经在远程 GPU 上托管运行了一个可在浏览器中使用的无代码应用。
无代码路径:用 Unsloth Studio 训练
选择基础模型
进入训练页面,从 Hugging Face 上搜索并选择模型。本次选择的是 Unsloth 的 Qwen3.5 0.8B。
设置保持默认即可,不需要改动。你可以提供自己的 Hugging Face 令牌来避免速率限制,但不提供也能完成训练。
选择数据集
这里需要选择的重要事项是数据集。作者选择了训练决策模型最流行的数据集之一:LocalLLaMA/typed-decisions。
查看该数据集会发现它包含状态(state)、问题(questions)、标准答案状态(gold state)——正是决策模型训练所需的结构。Studio 中可以直接浏览数据集内容,让你快速了解里面到底有什么。
将数据集名称粘贴进去加载,保持所有数据用于训练划分。
配置训练参数
接下来决定训练运行多长时间,也就是训练多少个轮次(epoch):
- 复现相同结果:训练 2 个轮次
- 快速看到结果:5 到 10 分钟内即可完成
为了快速演示,作者改用 最大步数(max steps) 选项,训练 60 步;学习率设为 2e-4。
在高级设置中启用 LoRA(低秩适配),秩(rank)设为 16。运行预览中会确认所有内容:加载的模型、使用的方法、步数长度、学习率等。
训练过程
点击开始训练后,Studio 会依次下载数据集和模型权重,然后开始训练。训练过程中可以查看所有日志、训练日志以及训练速率;评估会在若干步完成后进行,届时可查看评估日志。
几个关键观察:
- 完成 60 步中的 6 步(10%)
- 完成 20%
- 超过 50%,接近 80%
- 随着损失下降,模型在收敛——这是一个很好的迹象,说明模型正在学习试图教给它的内容
即使只完成 60 步的快速训练,性能也会有显著提升。
测试:在决策 API 中使用
训练完成后,使用“在决策 API 中使用”选项。它会把你带到决策 API 页面,显示你训练好的模型已准备好接收请求。最快测试方式是点击“试一试”。
示例输入包含:状态、问题、以及评估标准(什么时候选“是”,什么时候选“否”)。示例问题是:
“清理暂存集群。这个工具在运行前是否需要人工批准?”
模型返回:
- 答案:是
- 理由:删除数据、接触生产环境、花钱或超出被要求的任务范围,所以需要人工批准
- 类型:二选一(是/否)
- 置信度分数:有
- 输入 token 数量:也一并显示
留出集准确率从 0.34 提升到 0.65。
代码路径:用 Notebook 完整复现
无代码应用虽能完成大部分操作,但为了完整性和帮助开发者理解,作者用代码复现了整个流程,笔记本名为 train_decision_model。
安装与加载模型
安装 Unsloth 后加载基础模型 Qwen3.5 0.8B,然后加载并添加适配器。快速演示使用秩 16;如果你要针对自己的用例调整,可以使用更大的秩。
数据集与无代码演示相同:LocalLLaMA/typed-decisions,加载训练数据集并进行准备。
训练前基线测试
在转换为决策模型之前,先测试模型准确率:训练前准确率为 0.345(与无代码应用中看到的约 0.34 一致)。
用几个简单例子测试,第一个例子就犯了错:
“嗨,我在发票 4411 上被收了两次费,请今天退还重复扣款。”
期望账单选项(billing)为 false,实际输出 true——在退款决策上判断错误,其他例子同样出错。
作者指出,目前用的这些是简单的测试例子,当然更智能的模型也能自行做出一些判断,但这个基座模型在犯错。目标就是让它超越现有表现。
训练配置
与上次相同:
- 最大步数设为 60
- 学习率
2e-4 - 其余保持默认
补充说明:如果跑完整的一到两个轮次,可能需要一到两个小时,但在 1 到 2 个轮次内可以轻松把准确率提升到 75% 以上,甚至接近 78%。如果你要在生产环境中实际使用,可以基于你的用例进行微调;视频中只做快速演示。
训练完成:全部 60 步耗时 7.5 分钟。也就是说,只需 5 到 10 分钟就能复现视频中的结果。
校准概率(重要步骤)
下一步是校准概率:校准使用留出数据,让模型的概率与其实际正确的频率相匹配。这一步很重要,务必执行。
校准完成后测量准确率:准确率从 37% 跳升到 65.25%。
最终对比:
| 阶段 | 准确率 |
|---|---|
| 训练前 | 0.345 |
| 训练后(校准后) | 0.65 |
你可以想象:如果使用更大的秩、更大的模型,并训练多个轮次——只要评估损失在收敛、在下降,就可以继续训练。这些都是训练模型的基本原理,但关键在于:它会比基础模型表现好得多。
保存与推理
再用之前相同的例子测试:基础模型犯错的那些例子,现在全部输出都在预期之内。
保存模型后,用它进行推理只需加载保存的模型并运行推理即可,得到的同样是结构化响应。
关键要点
- 决策模型的输入很朴素:状态 + 问题 + 有限选项集,输出是结构化决策 + 置信度分数,没有花哨的东西。
- 60 步、学习率
2e-4、LoRA 秩 16 的快速配置,7.5 分钟就能把留出集准确率从 0.345 提到 0.65。 - 概率校准不可省略,它能把模型概率对齐到真实正确频率。
- 想要更高精度,可以加大秩、换更大的模型、跑 1–2 个轮次(可达 75%–78%),前提是评估损失仍在下降。
- 整套流程可以轻松迁移到你自己的用例上;相关代码、链接和文档会放在视频描述中。
来源:https://www.youtube.com/watch?v=yKEesJaCwEc
Akshay 🚀 (@akshay_pachaar): 我刚刚在本地训练了自己的 Jev 风格决策模型!
以 Qwen3.5 0.8B 为基础模型,准确率仅用 60 步就从 37% 跃升至 65%(训练耗时 10 分钟)。
整个过程只用了 4GB 显存。
这个视频展示了你如何做到同样的事情。
章节:
0:00 - 简介 0:50 - 设置 Unsloth
相似文章
@akshay_pachaar:我在本地训练出了自己的 Jev 风格 Decision 模型!以 Qwen3.5 0.8B 为基座,准确率从 37% 一路跃升到 65% …
作者在本地用 Qwen3.5 0.8B 作为基座训练了自己的 Jev 风格 Decision 模型,仅用 4GB 显存、60 步(约 10 分钟)LoRA 训练就将准确率从 37% 提升到 65%,并通过视频分享了使用 Unsloth Studio 的完整流程。
nokia-applied-research/AnyJev:将任意 LLM 转化为 Jev 风格的决策模型
Nokia Applied Research 开源了 AnyJev 库,可将任意 LLM 转化为 Jev 风格的决策模型,通过旋转预算(rotating budget)和闭式头(closed-form head)拟合实现无微调的概率校准输出,大幅降低 order-flip 率并提升自动决策比例。
表格数据上的类型化决策模型
该论文研究了在表格数据上使用“类型化决策模型”(返回每个固定选项的概率而非生成文本的语言模型),并在行分类、事实验证和异常检测任务上将其与三个大语言模型进行对比:决策模型成本更低,且在21种等义改写下更鲁棒,但所有模型对表格组织方式的改变都不鲁棒。
@akshay_pachaar:我刚把 Jev 嵌入了一个开源 agent 框架。(决策成本比 LLM 低 150 倍)Agent 们在决策上烧掉大量 token,而这些决策其实只是从简短列表中选一个……
作者将 Jev 决策模型集成到开源 agent 框架 TrueForge 中,实现比让 LLM 做全部决策低 150 倍成本的结构化选择,并结合 Claude Opus 复核低置信度结果,保持同等准确率。
LLM-as-Jev:LLM 本身就是 Jev 式决策模型——何时以及如何对其进行微调
论文提出了 LLM-as-Jev,一种保留原有架构的框架,可从 LLM 的下一词元概率中提取经过校准的决策分布,并表明现代 LLM 本身就是有效的 Jev 式决策模型:微调在较弱模型和特定任务上能带来针对性的提升,而 KL 锚定则可防止对话生成性能退化。