@akshay_pachaar:如何将大语言模型转变为决策模型?假设我们有一张客服工单,上面写着:“发票 4411 被重复扣款了……”

X AI KOLs Timeline 工具

摘要

教程演示如何用 Unsloth Studio 无代码微调 Qwen 基础模型,将其转变为可输出结构化决策与置信度分数的决策模型,准确率从约 34% 提升到 65%。

如何将 LLM 转变为决策模型? 假设我们收到一张客服工单,内容是:“编号为 4411 的发票被重复扣款了。请退款。” 我们的应用需要做出两个决策:由哪个团队处理这张工单,以及是否退款。 语言模型会逐个生成文本 token,而决策模型则会直接为可选项打分。 以下是将 LLM 转变为决策模型的方法: → 定义问题和选项。 将工单与需要做出的决策一起提供给模型。负责团队的选项是账单、技术和销售。是否退款的选项是“是”和“否”。 → 保留主干网络并冻结其权重。 主干网络处理输入,并构建输入的内部表示。加入 LoRA 这些小型可训练组件,在保持原始权重冻结的同时,对这些表示进行调整。 → 替换语言模型头。 语言模型头用于预测下一个 token。将其替换为决策头,针对每个选项从工单中收集证据,让问题与选项相互交互,并为每个选项输出一个分数。 → 将分数转换为概率。 对每个问题分别应用 softmax,将分数转换为概率。这样就能得到一个关于负责团队的概率分布,以及另一个关于是否退款的概率分布。 → 使用正确答案进行训练。 对于这个训练样本,标签是“账单”和“是”。交叉熵损失衡量预测结果与这些标签的匹配程度,而训练只更新决策头和 LoRA 组件。 → 使用留出样本进行校准。 训练完成后,使用未参与训练的样本来调整模型的置信度。模型预测的概率应反映这些预测实际正确的频率。 推理时,只需一次前向传播即可为所有选项打分。应用获得这些概率后,就可以用它们来分派工单并决定是否退款。 我使用 Qwen3.5 0.8B 在本地训练了一个 JEV 风格的决策模型。仅用 60 个训练步骤,准确率就从 37% 提升到了 65%,训练耗时 10 分钟,显存占用为 4GB。 欢迎观看我的 YouTube 视频,了解从环境搭建、训练到评估和推理的完整流程。 YouTube 视频:https://youtu.be/yKEesJaCwEc (订阅以获取更多此类内容)
查看原文
查看缓存全文

缓存时间: 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 机器。操作步骤:

  1. 复制安装命令并在远程机器上执行。
  2. 环境类似 VS Code,正在运行 Studio 安装程序。
  3. 安装器询问是否启动 Studio,选择“是”,Studio 会在 localhost 8888 启动。
  4. 因为是远程服务器,需要把端口公开暴露出来,才能在浏览器中访问。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

相似文章

表格数据上的类型化决策模型

arXiv cs.CL

该论文研究了在表格数据上使用“类型化决策模型”(返回每个固定选项的概率而非生成文本的语言模型),并在行分类、事实验证和异常检测任务上将其与三个大语言模型进行对比:决策模型成本更低,且在21种等义改写下更鲁棒,但所有模型对表格组织方式的改变都不鲁棒。