返回

文章详情

对像Qwen 3:0.6B的本地LLM进行微调以分类问题取得了良好效果

Hacker News2026年6月21日 22:55

作为一个有趣的个人项目,我一直在开发一个聊天机器人,用于回答我家庭的各种常见问题,从维护问题到约医生的预约。整体想法是,聊天机器人将通过从矢量数据库查询获得家庭知识,但为了获得更好的结果,我使矢量搜索对元数据有意识。基本上,我在预处理步骤中运行问题,将问题分类到已知的元数据类别中(例如:游泳池、汽车、暖通空调、烹饪)。这一实验的主要目标是缩小矢量排名的搜索空间,仅限于与问题类别匹配的已索引条目。例如,问题“我们什么时候更换的游泳池水泵?”将在查询索引数据库之前映射到一个名为“游泳池”的类别。我想在这个实验中测试的假设是,是否一个非常小的本地LLM可以在以家庭相关问题的训练数据集上进行微调,以实现可靠的问题分类。在这个项目中,我使用了两个不同的本地LLM——Qwen 3:4B和Qwen 3:0.6B。4B参数版本用于一般问题回答,而超级小的0.6B版本用于分类问题。这一实验的整个前提是查看一个只有600M参数的微小LLM是否可以被微调成一个可靠的家庭问题分类器。微调方面,我使用了一个流行的开源框架Unsloth,它似乎很适合微调像Qwen和Llama这样的本地模型。为了训练,我的初始数据集大约由850条数据条目组成,并根据70/15/15的比例划分为训练数据、评估数据和测试数据。训练数据和评估数据在训练过程中使用,而测试数据集则被保留用于训练后的测试。以下是示例数据: [ { "question": "谁清理我们家里的排水沟?", "category": "排水沟" }, { "question": "谁为家里的热水器进行了维护?", "category": "热水器" }, { "question": "谁修理了院子里的喷 irrig 系统?", "category": "灌溉" }, { "question": "我们通常从哪家商店购买pinnekjott?", "category": "烹饪" }, { "question": "家用空调的空气过滤器尺寸是多少?", "category": "暖通空调" }, { "question": "我们在哪一年更换了楼下的空调?", "category": "暖通空调" } ]基本想法是对家庭问题进行足够的训练,以教会它成为一个可靠的问题分类器。基准在进行任何微调之前,确定基准以进行测量是很重要的。在本实验中,基准是尝试通过仅使用提示来“原样”使用原始Qwen 0.6B模型。用于基准的示例提示如下:将房主的问题分类为以下列表中的一个类别。只返回列表中的类别名称。绝不要返回代码、数字、同义词、解释或任何其他文本。答案必须是列表中的一个类别名称。根据问题的含义选择最佳类别。有效类别:- 家电 - 砌砖 - 汽车 - 烹饪 - 门铃 - 电 - 栅栏 - 喷泉 - 花园灯 - 排水沟 - 暖通空调 - 灌溉 - 蚊子 - 油漆 - 游泳池 - 树服务 - 热水器 - 窗口服务 问题:谁为房子安装了无水箱热水系统?类别:基线模型的准确性:作为我的离线评估方法之一,我创建了大约130个集成测试,以测试模型在第二个数据集中的场景。对于基线模型,结果较差。在131个测试中,模型仅正确分类了13个问题(正确响应约10%)。摘要如下:{ "scenario": "baseline-category", "model_kind": "baseline", "model_name": "qwen3:0.6b", "label_mode": "category", "total": 131, "correct": 13, "incorrect": 118, "accuracy": 0.0992 } 当深入挖掘实际失败时,会出现一些常见模式:模型大多过度使用广泛的标签,如电/家电,而错过了大多数其他类别(例如游泳池、烹饪、暖通空调)。模型发明了新的类别(例如公寓),并没有坚持我提供的允许类别的列表。我提供了测试报告的摘录如下:[{ "case_id": 1, "question": "什么时候更换了下层空调系统?", "expected_category": "暖通空调", "scenario": "baseline-category", "model_kind": "baseline", "model_name": "qwen3:0.6b", "label_mode": "category", "predicted_category": "电", "correct": false }, { "case_id": 64, "question": "哪位画家为乔的房间工作?", "expected_category": "油漆", "scenario": "baseline-category", "model_kind": "baseline", "model_name": "qwen3:0.6b", "label_mode": "category", "predicted_category": null, "predicted_code": null, "correct": false, "status_code": 422, "error": "Ollama返回了未知的类别名称'apartments',响应为'apartments'" }] 微调

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡