基于 Gemma3 训练一个 Home Assistant 专用的轻量模型,示例基于 google/gemma-3-1b-it,引入 HA 的数据集进行微调,训练 LoRA 权重。
极其痛苦的炼丹经历:
最大的难点在于 Gemma3 原生不支持 Function Calling,而这是 HA 的智能语音助手必须的。网上有大量文章教你用歪门邪道让 Gemma3 知道怎么样进行 Function Calling(包括谷歌官方的方案)。
但最致命的关键是:Gemma3-1b 实在是太蠢了!
我浪费了 6 度电的算力也没把它教会!连谷歌官方的方法塞进去也一样,甚至训练开始没多久就开始严重的过拟合、数据污染、各种离谱的幻觉,甚至是退化重复输出。不知道谷歌看到自家 1B 模型蠢成这样会不会笑。
我也求助过 Gemini 分析,但是 Gemini 每次思考到一半莫名其妙卡死了,说自己是文本模型,无法处理这种问题。猜测是模型内部出 Bug,Gemini 本身是支持 Function Calling 的,当对话上下文中出现 tool_call 代码格式后,可能大模型自己以为要触发真实的 Function Calling 了,然后就在原地死等客户端汇报结果,最后卡死导致系统故障处理自动退出。目前是完全无计可施。