Mistral 與 Mixtral
Mistral 與 Mixtral 模型之安全分析,包括 Mixture of Experts 攻擊、稀疏啟動攻擊、最小化安全對齊之意涵,以及開源權重部署風險。
Mistral AI 對開源權重模型發布採取獨特做法:最小化安全對齊、強大能力,並明確定位為「客製化之基礎」——而非「可直接部署之安全模型」。此哲學造就獨特之安全側寫——基準模型提供最小安全抵抗,而 Mixture of Experts(MoE)架構再引入額外攻擊面。
Mistral 模型家族
可用模型
| 模型 | 參數 | 架構 | 安全層級 |
|---|---|---|---|
| Mistral 7B | 7B | 密集 transformer | 最小對齊 |
| Mistral 7B Instruct | 7B | 密集 transformer | 基本指令遵循 |
| Mixtral 8x7B | 46.7B(12.9B 啟動) | MoE,8 專家 | 最小對齊 |
| Mixtral 8x22B | ~176B(39B 啟動) | MoE,8 專家 | 中等對齊 |
| Mistral Large | 未揭露 | 未揭露 | 家族中最多對齊 |
| Mistral Small | 未揭露 | 未揭露 | 中等對齊 |
最小化安全哲學
Mistral 對安全之做法與 Meta 對 Llama 之做法有根本不同:
- 具最小 guardrail 之基礎模型 —— Mistral 明確以最小安全訓練發布模型,將安全視為應用層之關切
- 無搭配之安全分類器 —— 不同於 Meta 之 Llama Guard,Mistral 不提供伴隨之安全模型
- 寬鬆授權 —— 鼓勵無限制之使用與修改
- 社群責任 —— 將安全之擔子置於部署者而非模型供應商
這意味著許多 Mistral 模型實質上於預設即未審查或近乎未審查,幾乎無需工夫即可用於有害目的。
Mixture of Experts 架構
MoE 如何運作
Mixtral 使用 Mixture of Experts 架構——其中:
- 每個 transformer 層有多個「專家」前饋網路(Mixtral 為 8 個)
- 學習之閘控(router)機制為每個 token 選擇 top-K 專家(Mixtral 為 2 個)
- 僅所選專家處理每個 token,降低運算
- 最終輸出結合所選專家之輸出,依閘控分數加權
輸入 Token
│
▼
┌─────────┐
│ Router │ ── 自 8 個中選擇 top-2 專家
└─────────┘
│
├──► 專家 3(權重:0.6)
│
├──► 專家 7(權重:0.4)
│
▼
專家 3 + 專家 7 輸出之加權組合
MoE 安全意涵
MoE 架構引入稀疏模型特有之安全考量:
專家專門化與安全分布: 若安全行為集中於特定專家,繞過這些專家之輸入可能繞過安全:
- 部分專家可能專門化於安全相關領域
- 其他專家可能處理安全訓練較不徹底之領域
- Router 之決策決定哪些安全相關專家被啟動
Router 操弄: 選擇專家之閘控機制是輸入之函式。精心打造之輸入可能操弄路由決策:
- 轉移 router 機率之對抗前綴
- 優先啟動特定專家之 token 模式
- 利用 router 對「哪些專家處理何種內容」之學得偏誤
專家層級分析: 具開源權重,每個專家可獨立分析:
# 概念性專家分析
def analyze_expert_specialization(model, expert_idx, prompts):
"""分析每個專家專門化於何種內容類型。"""
activations = []
for prompt in prompts:
tokens = tokenize(prompt)
for token in tokens:
router_probs = model.router(token)
if expert_idx in top_k(router_probs, k=2):
activations.append({
"prompt_type": classify_prompt(prompt),
"router_weight": router_probs[expert_idx],
"position": token.position,
})
return aggregate_specialization(activations)稀疏啟動攻擊
專家路由分析
繪製哪些專家為不同類型內容啟動:
- 處理涵蓋不同安全類別之大量提示
- 記錄每個提示啟動哪些專家
- 辨識哪些專家與安全相關處理相關
- 測試繞過這些專家是否降低安全
對抗 router 操弄
打造操弄 router 專家選擇之輸入:
def find_routing_adversarial_prefix(model, target_experts, harmful_prompt):
"""找到將有害內容路由離開安全專家之前綴。"""
# 對 router 權重使用以梯度為本之最佳化
# 尋找轉移路由機率之 token
# 目標:將 harmful_prompt token 路由至 target_experts
# (已辨識為較不具安全意識者)
prefix = optimize_prefix(
model=model,
objective=route_to_experts(target_experts),
constraint=preserve_semantics(harmful_prompt),
)
return prefix + harmful_prompt專家修剪攻擊
移除或抑制特定專家以影響安全行為:
- 經由啟動分析辨識安全關鍵專家
- 移除這些專家並評估對安全 vs. 能力之影響
- 若安全退化較能力快,此確認了集中之安全分布
部署特定風險
近乎零之安全基準
因 Mistral 模型自最小安全開始,部署安全幾乎完全仰賴部署者之基礎設施:
常見部署模式:
-
裸模型部署 —— 模型直接服務,無任何安全層。所有能力(含有害者)皆可存取。
-
外部 guardrail —— 於模型周圍加入第三方安全分類器或過濾器。安全完全仰賴 guardrail 實作。
-
客製微調 —— 經由額外微調加入安全。品質差異巨大。
測試 Mistral 部署
對 Mistral 部署,紅隊焦點應為:
- 枚舉安全層 —— 部署者加了哪些安全基礎設施?
- 獨立測試每一層 —— 輸入過濾器可被繞過嗎?輸出過濾器可被繞過嗎?
- 測試各層之間的互動 —— 各層之間是否有缺口?
- 測試基礎模型 —— 若安全層可被繞過,未審查模型能做什麼?
社群微調生態系
未審查變體
Mistral 社群已產出眾多微調變體:
- 明確未審查之指令遵循模型
- 無安全考量之領域特定微調
- 結合 Mistral 與其他模型家族之合併模型
- 上述所有之量化版本,供消費級硬體使用
品質與安全變異度
社群微調於品質與安全上差異巨大:
- 部分專門設計為有害
- 其他因訓練實務不佳而無意間移除安全
- 社群模型之來源與訓練資料常不明
- 分享模型前無需標準安全評估
與其他開源權重模型之比較
| 面向 | Mistral/Mixtral | Llama | Qwen |
|---|---|---|---|
| 基礎安全 | 最小 | 中等 | 中等 |
| 安全分類器 | 無 | Llama Guard | 無 |
| MoE 架構 | Mixtral 變體 | 否 | 部分變體 |
| 移除安全之難度 | 微不足道 | 容易 | 中等 |
| 社群未審查 | 豐富 | 豐富 | 有限 |
| 紅隊焦點 | 外部基礎設施 | 模型 + 基礎設施 | 模型 + 基礎設施 |
相關主題
- 開源權重模型安全 -- 一般開源權重威脅模型
- Llama 家族攻擊 -- 比較目標
- 新興模型 -- 其他 MoE 與開源權重模型
- 防禦規避 -- 繞過外部安全過濾器
參考資料
- Jiang, A. et al.(2024). "Mixtral of Experts"
- Jiang, A. et al.(2023). "Mistral 7B"
- Shazeer, N. et al.(2017). "Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer"
- Fedus, W. et al.(2022). "Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity"
為何 Mixtral 之 MoE 架構較密集 transformer 模型造就獨特之攻擊面?