CoolFace
Modelpublic

mikuhhn1239/qwen3-8b-attribution-assist-lora

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
2likes16downloads
Model Card

Qwen3-8B Attribution Best Candidate LoRA (v3.2) ⭐

All Novel Can Be Galgame — Agent 3: 角色归因

从候选角色中为目标对话选出最可能的说话人。 ChatGPT Image 2026年7月4日 12_42_39 基座: Qwen3-8B-Novel-Base-SFT | 方法: LoRA r=64 α=128 | 硬件: A800 80GB

项目地址:https://github.com/lin1753/novel2galgame

训练代码仓库:https://github.com/lin1753/novel-agent


任务

  • —输入: 候选角色列表 + 上下文(含目标对话)
  • —输出: {"best_candidate": "角色名", "uncertain": true/false}
  • —测试集: 30 条

示例

输入:
  候选: 林秋、苏晚、陈遥
  上下文:
    [1] "你今天又迟到了。"苏晚把笔放下。
    [2] 我把书包丢到桌上,没接话。
    [3] 陈遥坐在后排憋笑。
    [4] "路上堵车。" 【目标对话】

输出:
  {"best_candidate": "林秋", "uncertain": true}
  ← 第2句"我把书包丢到桌上"暗示"我"说了[4],陈遥在憋笑排除,苏晚说了[1];证据不足,不确定

加载

python
from transformers import AutoModelForCausalLM
from peft import PeftModel

base = AutoModelForCausalLM.from_pretrained(
    "mikuhhn1239/qwen3-8b-novel-base-sft",
    torch_dtype="auto", device_map="auto",
)
model = PeftModel.from_pretrained(
    base, "mikuhhn1239/qwen3-8b-attribution-assist-lora"
)

训练

基座: Qwen3-8B-Novel-Base-SFT (Stage1 全参 SFT, 72K 小说续写数据)
方法: LoRA (r=64, α=128, dropout=0.05)
数据: 495 条 (465 train / 30 val / 30 test)
框架: transformers Trainer + PEFT
优化器: AdamW (adamw_torch_fused), cosine schedule, warmup=5%
epoch: 5 | LR: 1e-4 | batch: 1×16(accum) | bf16 | max_length: 4096

版本历史

版本数据量epochsLRJSON解析最佳候选准确率说明
零基座———0%0%Qwen3-8B 原始完全不会
+Stage1———3.3%0%读完 669 本也不会
v16632e-4100%14.3%端到端(排序+打分)
v224032e-4100%33.3%只选最佳+不确定
v3.124051e-4100%43.3%Clean 标注
v3.2 ⭐46551e-4100%86.7%候选清洁 + 数据增强 +94%

v3.1验证集指标如下

570d3a273788c14c489e0b29bacda843

结论

  • —零基座 / +Stage1 全 0%:不做 Agent SFT 就不会角色归因 ✅
  • —v3.2 大幅跃升:acc 43.3%→86.7%(+43.4pp)
  • —扩标效果显著:240→465 条后准确率翻倍,说明该任务对数据量敏感
  • —v1→v2 +19pp, v2→v3.1 +10pp, v3.1→v3.2 +43.4pp