Home 論文解説: Llama Guard — LLMベースの入出力セーフガードモデル
投稿
キャンセル

📄 論文解説: Llama Guard — LLMベースの入出力セーフガードモデル

論文概要(Abstract)

Llama Guardは、Meta AIが開発したLLMベースの入出力セーフガードモデルである。人間とAIの会話におけるプロンプト(入力)とレスポンス(出力)の安全性を、独自の安全性リスク分類タクソノミーに基づいて分類する。Llama 2-7Bをベースにファインチューニングし、OpenAI Moderations APIやPerspective APIを上回る性能を達成した。

この記事は Zenn記事: LLM出力検証フレームワーク実践:本番運用で99%精度を実現する3層戦略 の深掘りです。

情報源

  • arXiv ID: 2312.06674
  • URL: https://arxiv.org/abs/2312.06674
  • 著者: Hakan Inan, Kartikeya Upasani, Jianfeng Chi, et al.
  • 発表年: 2023(Llama Guard 3は2024年リリース)
  • 分野: cs.CL, cs.AI

背景と動機(Background & Motivation)

LLMの本番運用において、Safety Validation(安全性検証)は3層戦略の中核をなす。従来のコンテンツモデレーションツール(OpenAI Moderations API、Perspective API等)は、固定的な分類カテゴリしか対応できず、組織固有のポリシーに適応できないという課題があった。

Llama Guardは、LLM自体をセーフガードモデルとして活用するアプローチを採用し、以下の問題を解決する:

  • カスタマイズ性: プロンプトテンプレートでタクソノミーを自由に変更可能
  • 入出力両方の分類: プロンプトとレスポンスの両方を統一モデルで検証
  • ゼロショット適応: 新しいカテゴリを定義するだけで、再学習なしに対応

主要な貢献(Key Contributions)

  • 貢献1: 6カテゴリの安全性リスクタクソノミーを設計し、人間とAIの会話における包括的な安全性分類体系を構築
  • 貢献2: LLMベースのコンテンツモデレーションにおいて、入力と出力を統一フレームワークで分類する手法を提案
  • 貢献3: 7Bパラメータのモデルで既存商用APIを上回る性能を達成し、オープンソースとして公開

技術的詳細(Technical Details)

安全性リスクタクソノミー

Llama Guardは以下の6カテゴリを定義する:

カテゴリ内容具体例
O1: Violence & Hate暴力・ヘイトスピーチ脅迫、差別的表現
O2: Sexual Content性的コンテンツ明示的な性的描写
O3: Guns & Illegal Weapons銃器・違法武器武器の製造方法
O4: Controlled Substances規制物質違法薬物の使用法
O5: Suicide & Self-Harm自殺・自傷行為自傷の助長
O6: Criminal Planning犯罪計画詐欺の手順

分類アーキテクチャ

Llama Guardの推論は、以下の入出力フォーマットで行われる:

入力テンプレート:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[INST] Task: Check if there is unsafe content in
'{agent_type}' messages in conversations.

<BEGIN UNSAFE CONTENT CATEGORIES>
O1: Violence and Hate. ...
O2: Sexual Content. ...
...
<END UNSAFE CONTENT CATEGORIES>

<BEGIN CONVERSATION>
{role}: {message}
<END CONVERSATION>

Provide your safety assessment. [/INST]

出力形式:

1
safe

または

1
2
unsafe
O3

分類の損失関数は標準的な交差エントロピーを使用する:

\[\mathcal{L} = -\sum_{i=1}^{N} \left[ y_i \log \hat{y}_i + (1-y_i) \log (1-\hat{y}_i) \right]\]

ここで、

  • $N$: 学習サンプル数
  • $y_i \in {0, 1}$: 安全/非安全のラベル(0=safe, 1=unsafe)
  • $\hat{y}_i$: モデルの予測確率

Llama Guard 3への進化

2024年にリリースされたLlama Guard 3(Llama-3.1-8Bベース)は、以下の改善を含む:

  • MLCommons標準タクソノミーへの準拠
  • 8言語対応(多言語コンテンツモデレーション)
  • ツール呼び出しの安全性検証(検索・コード実行の安全性)
  • 1Bパラメータの軽量版(Llama Guard 3-1B)
  • Vision対応版(Llama Guard 3-11B-Vision:画像入力の安全性検証)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

def classify_safety(
    text: str,
    role: str = "User",
    model_name: str = "meta-llama/Llama-Guard-3-8B",
) -> dict[str, str | list[str]]:
    """Llama Guard 3による安全性分類

    Args:
        text: 分類対象のテキスト
        role: "User"(入力分類)または "Agent"(出力分類)
        model_name: 使用するモデル名

    Returns:
        {"result": "safe"|"unsafe", "categories": [...]}
    """
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(
        model_name, torch_dtype=torch.bfloat16, device_map="auto"
    )

    chat = [{"role": role.lower(), "content": text}]
    input_ids = tokenizer.apply_chat_template(
        chat, return_tensors="pt"
    ).to(model.device)

    output = model.generate(
        input_ids=input_ids, max_new_tokens=100, pad_token_id=0
    )
    result = tokenizer.decode(
        output[0][len(input_ids[0]):], skip_special_tokens=True
    )

    if "unsafe" in result:
        categories = [
            line.strip() for line in result.split("\n")
            if line.strip().startswith("O")
        ]
        return {"result": "unsafe", "categories": categories}
    return {"result": "safe", "categories": []}

実装のポイント(Implementation)

  • デプロイ戦略: 7Bモデルは消費者向けGPU(RTX 4090等)で推論可能。1Bモデルはさらに軽量でエッジデバイスにも展開可能
  • レイテンシ最適化: vLLMやTGIを使用したバッチ推論で、1リクエストあたり50-100msのレイテンシを実現
  • カスタマイズ: プロンプトテンプレートのタクソノミー部分を変更するだけで、組織固有のポリシーに適応可能
  • 制限事項: 文脈依存の判断(風刺、比喩等)での誤分類リスクがあるため、閾値チューニングが必要

実験結果(Results)

ベンチマークOpenAI ModerationPerspective APILlama Guard
ToxicChat0.588 F10.541 F10.749 F1
OpenAI Mod0.837 F10.793 F10.855 F1
推論速度(GPU)API依存API依存50-100ms

分析:

  • ToxicChatでは既存手法を大幅に上回る(+16%以上のF1改善)
  • オープンソースモデルのため、API依存なしにオンプレミス運用可能
  • カスタムカテゴリ追加時もゼロショットで動作

実運用への応用(Practical Applications)

Zenn記事で紹介されたSafety Validation層(Toxicity・Bias・PII検出)の中核として、Llama Guardは以下のように活用できる:

  • Guardrails AI統合: Guardrails AIのカスタムバリデータとしてLlama Guardを組み込み、入出力の安全性を検証
  • マルチ層防御: PII検出(DetectPII)と組み合わせた多層的な安全性検証パイプラインの構築
  • コスト効率: OpenAI Moderations APIの課金を回避し、自前GPU or Amazon SageMakerでの運用によるコスト削減

関連研究(Related Work)

  • LlamaFirewall (Meta, 2025): Llama Guardの発展形。PromptGuard 2、Agent Alignment Checks、CodeShieldを統合した包括的セキュリティフレームワーク
  • ShieldGemma (Google, 2024): Gemmaベースの安全性分類モデル。Llama Guardと類似のアプローチだが、異なるタクソノミー
  • NeMo Guardrails (NVIDIA, 2024): Colangベースのルールエンジン。Llama Guardとは相補的(ルールベース vs LLMベース)

まとめと今後の展望

Llama Guardは、LLMベースの安全性分類という新しいパラダイムを確立した。7Bモデルで商用APIを上回る性能を達成し、カスタマイズ可能なタクソノミーにより組織固有のポリシーに柔軟に対応できる。本番運用のSafety Validation層における中心的なコンポーネントとして、Guardrails AIやDeepEvalとの統合が進むことが期待される。

参考文献

この投稿は CC BY 4.0 でライセンスされています。

論文解説: Continual Quantization-Aware Pre-Training — 16-bitから1.58-bitへの最適移行戦略

論文解説: PromptBench — LLM評価を統一するベンチマークライブラリの設計と実装