分類 LLM 下的文章

評估結果如下,這是按照生成的數據進行訓練並進行測試給出的結果:

- precision recall f1-score support
喜悅 0.79 1.00 0.88 11
悲傷 0.44 1.00 0.62 8
憤怒 1.00 0.40 0.57 10
恐懼 1.00 0.11 0.20 9 ← 幾乎全错
驚訝 0.75 0.75 0.75 8
厭惡 0.83 0.62 0.71 8
macro avg 0.80 0.65 0.62 54

下面是評估結論

指標 結果 lab目標 達標
Macro F1 0.62 ≥0.75
Accuracy 0.65 ≥0.80
推理延遲中位數 178ms ≤500ms
最容易混淆 恐懼 ↔ 悲傷(5 次)

- 閱讀剩餘部分 -

下面將每筆資料透過 _to_chat_text(...) 組成 ChatML 風格輸入

def _to_chat_text(tokenizer, instruction, user_input, output=None):
    """組成 ChatML 訓練 / 推理文本。output 為 None 時只到 assistant 起始。"""
    messages = [{"role": "user", "content": f"{instruction}\n\n文本:{user_input}"}]
    if output is not None:
        messages.append({"role": "assistant", "content": output})
        return tokenizer.apply_chat_template(messages, tokenize=False)
    return tokenizer.apply_chat_template(
        messages, tokenize=False, add_generation_prompt=True
    )

- 閱讀剩餘部分 -

我們將使用 Qwen2.5-1.5B 加上 QLoRA 進行情緒語句的訓練與測試,原本的參數量來説 0.8B 模型就必須 12.8GB vram(全量微調),需要在消費級顯卡上進行測試,那麽就必須將參數量降下來,所以我們將在這裏使用 QLoRA 進行訓練推理,QLoRa 可以將 4bytes 降到 0.5bytes,并且凍結梯度、優化器狀態。

全量微調

组成 内容 FP32 參數
模型權重 x 4
梯度 x 4
優化器 Adam 的 m + v = 2x 8
合计 4x 16 bytes/參數

所以 0.8B × 16 = 12.8 GB,結果就是消费级顯卡(4080/16GB)連 1.5B 全量微調都做不到。

- 閱讀剩餘部分 -

將之前做的產圖寫一份報告

整個 pipeline 拆成三層:

  • 訓練端(kohya_ss + 自製多姿勢 base img2img)
  • 出圖端(ComfyUI A+B+F workflow:LoRA → Hi-Res Fix → FaceDetailer)
  • 操作端(Streamlit 角色管線)。

資料源是單一 YAML,從外觀 prompt、表情、CG 階段、LoRA,檔名全部寫在一處,下游全靠 loader 拼裝。

- 閱讀剩餘部分 -

成員推斷攻擊(Membership Inference Attack)

目標: 判斷某筆資料是否曾經出現在模型的訓練集中。

攻擊原理&手段

模型對於訓練過的資料會表現出「過度自信」——因為見過這筆資料,所以預測時損失更低、信心度更高。

攻擊者輸入一筆資料 x
        ↓
查詢模型輸出(機率分佈、損失值、logits)
        ↓
觀察信心度是否異常高?損失是否異常低?
        ↓
推斷:x 是否在訓練集中?

- 閱讀剩餘部分 -