用途:在消费级 GPU(约 8 GB 显存)上本地微调小型开源权重模型,适用于文本分类、抽取、翻译等任务,前提是输入为原始文本而非表格特征,且至少有几百条标注样本。目标是获得模型自主权,避免 API 依赖与按 token 计费,数据留在本地。
主要能力与流程:选择模型(如 unsloth/Qwen3-0.6B、unsloth/Llama-3.2-1B-Instruct、unsloth/gemma-4-E2B-it 等,按显存选型);将数据整理为指令微调对(user 为任务提示加原文,assistant 为标签);使用 Unsloth 的 FastModel 加载 4bit 模型并添加 LoRA 适配器;用 TRL 的 SFTTrainer 训练,并通过 train_on_responses_only 只对回复计算损失;与零样本基线对比,记录 F1 macro、各类 F1、混淆矩阵与解析成功率;用 MLflow 记录参数与指标;最后 save_pretrained_gguf 导出 GGUF,并用 llama-server 部署。
必要用法:不同模型族需匹配聊天模板与指令/回复掩码(如 Gemma 4 用 gemma-4-thinking,掩码为 <|turn>user\n 与 <|turn>model\n)。示例运行:marimo edit --sandbox demo.py 与 marimo edit --sandbox demo_nhtsa.py。若沙盒安装 unsloth 失败,可手动建虚拟环境安装:pip install unsloth torch trl datasets mlflow scikit-learn numpy matplotlib requests marimo。
限制:输入为表格数据应改用 XGBoost;标注少于 50 条宜用零样本/少样本提示;追求最先进效果且不在意成本可用 Claude/GPT API;无监督文本分析应使用嵌入加聚类。需注意模板一致性、避免过多步数导致过拟合、防止 BOS 重复,并同时报告解析成功率,否则准确率可能失真;显存不足时降低序列长度或改用更小模型。