
摘要
我们刚刚在 Together 的无服务器平台上,基于 Qwen3.5 4B 推出了我们自己的类 Jev 分类器 together/Tev1-4B-experimental。在这篇博客文章中,我们将向你展示如何微调你自己的版本!
Jev 迅速成为 AI 领域最受关注的模型发布之一。它是一个强大的分类模型,运行起来既快速又极其便宜。
给 Jev 一段状态加上预定义的问题,它就会迅速以分数、布尔值或多选答案的形式返回结果。
这类分类模型有许多现实世界的应用,例如电商网站评估自动客户退货、对机器学习论文进行分类,甚至为一段文本提供情感评分。
今天我们将微调我们自己的类 Jev 分类模型,它接收状态并返回答案。我们的目标是创建一个能够快速高效地回答如下问题的模型:
在这篇博客文章中,我们将介绍如何微调和部署一个能够回答这类问题的分类模型。等我们完成时,你将拥有自己的模型,并部署好一个易于集成到任何软件中的 API 端点。
让我们先在你的电脑上设置好训练模型所需的一切。
*如果你更想直接使用分类器,而不想费心训练自己的模型,请查看 *together/Tev1-4B-experimental
- 在 Together 的无服务器平台上。*
入门
我们需要做的第一件事是克隆 tev1 GitHub 仓库。
克隆仓库后,我们需要使用以下命令安装必要的依赖:
最后一步设置是创建一个 .env
文件,用于保存必要的环境变量。
复制 .env.example
:
编辑新的 .env
文件并添加你的 TOGETHER_API_KEY
。你暂时不需要添加 JEV_MODEL
。先留空即可。
就这样。我们现在准备好微调我们的模型了。
微调分类模型
下一步是拿一个现有的语言模型,把它变成一个专门用于分类的模型。为此,我们需要使用一个基础模型和若干现有数据集来创建一个微调。
对于基础模型,我们将使用 Qwen3.5 4B;对于数据集,我们将使用托管在 Hugging Face 上的几个数据集。
选择数据集
我们将从各种数据集中抽取 38,000 个问题,每个数据集专注于不同类型的分类。
以下是我们将使用的数据集及示例数量:
我们只使用 38,340 个示例,以保持微调成本较低。针对这种规模的数据集进行训练只需花费约 17.0 美元,而更大的数据集训练起来更昂贵且耗时。
规范化数据
现在我们已经选好了六个数据源,我们需要从中抽取有限数量的问题,并对这些问题进行规范化,使它们都采用相同的格式。
该仓库包含许多自动化此过程的 Python 脚本。
首先,下载数据集:
接下来,抽取并规范化我们将用于训练的问题:
对于这些命令,你应该会看到一些输出,并且没有错误。
现在我们已经有了训练数据集,可以进入下一步,微调分类模型了。
训练模型
我们可以使用 Together AI 的微调 服务来启动一个微调任务。
有一个 Python 脚本可以帮助自动化这个过程。使用以下命令运行它:
这个脚本处理了训练模型所需的多个步骤。首先,它将训练数据上传到 Together,然后使用数据集和适当的参数启动一个微调任务。
一旦微调任务启动,训练脚本将输出一个训练任务 ID。
你可以使用 Together CLI 检查训练状态:
你也可以通过 Together AI 上的 微调仪表板 检查训练任务的状态。

训练任务大约需要 25 分钟完成,完成后我们将拥有一个准备好进行分类的模型。
部署模型
在部署模型之前,我们首先需要从微调任务中获取其名称。运行以下命令:
此命令将打印模型的 model_output_name
。我们将使用此名称将模型部署到 Together AI 上的专用端点。
专用端点负责通过 HTTP 服务器暴露微调后的模型,以便我们可以向其发送查询。
运行此命令将返回有关新端点的信息:
创建后,你将在输出中看到端点的名称。你也可以通过 Together AI 上的 专用端点仪表板 找到有关端点的更多信息。
将端点的名称放入你的 .env
中作为 JEV_MODEL
。例如,如果你的端点名为 account_855c/Qwen3.5-4B-jev-efde5bd5-068f756b
那么你的 .env
应该包含:
就这样。你的模型现在已部署在 Together AI 上,并准备好回答任何分类问题。
在下一节中,我们将学习如何查询我们的模型。
查询模型
代码仓库包含许多测试用例,用于验证模型是否正常工作。让我们使用分类模型来找出客户关于其订阅的问题的意图:
Customer message: Hi, I checked my statement and your company charged my card twice for the October subscription. The amounts are both $19.99 on the same day. I have not changed my plan.
由于我们的模型是在 JSON 输入和输出上进行微调的,我们需要使用 JSON 数据结构来格式化该问题及其可能的答案,如下所示:
我们可以使用以下命令将此数据结构发送到我们的模型进行分类:
examples/charge-dispute.json
文件包含我们上面的 JSON 示例,而 decide.py
是一个 Python 脚本,将其发送到我们微调后的模型。
一旦我们发送请求,我们很快会看到模型响应:
这正是我们想要看到的。不仅是正确的答案,而且也是模型从我们的训练数据中学到的正确输出格式。
examples/
文件夹中还有更多示例。这些示例包括与意图、是/否理解、布尔策略检查和情感分析相关的问题。尝试更改这些示例,并针对你部署的模型运行它们。
注意:我们的示例脚本会自动提供系统提示和推理设置。当直接调用 API 或使用 Chat Playground 时,请显式设置 temperature=0、max_tokens=8 和 chat_template_kwargs={"enable_thinking": false}。当前的公共端点不会自动注入这些默认值。
使用此系统提示:
总结
在完成对新模型的实验后,您可以使用以下命令关闭专用端点:
要稍后再次使用您的模型,请重新启动专用端点,或在我们无服务器平台上使用 Together 托管的 together/Tev1-4B-experimental 版本。
只需约 17 美元的训练成本和二十五分钟的等待时间,您现在拥有了自己的微调分类模型,部署在 HTTP 端点后,能够以您的软件期望的格式进行响应。
