Broken Hill
Broken Hill は、「Universal and Transferable Adversarial Attacks on Aligned Language Models」という論文(Andy Zou、Zifan Wang、Nicholas Carlini、Milad Nasr、J. Zico Kolter、Matt Fredrikson 著) で説明されている greedy coordinate gradient(GCG)攻撃を使用して、大規模言語モデル(LLM)の制限を回避するための巧妙に作られたプロンプトを生成する、本番運用に対応したすぐに使える自動攻撃ツールです。
Broken Hill は、プロンプトの生成に使用されたモデルとは異なる構成の LLM を jailbreak できる堅牢なプロンプトを生成できます。たとえば、次のとおりです。
- パラメータ数が多い/少ない同じモデル
- 例:プロンプトは Gemma の 20 億パラメータ版を使用して生成されたが、Gemma の 70 億パラメータ版に基づく実装に対して使用される。
- 重みが異なるタイプに量子化された同じモデル
- 例:プロンプトは重みが
FP16 形式で格納された Phi 3 のバージョンを使用して生成されたが、重みが 4 ビット q4_0 整数形式に量子化された ollama デフォルト版の Phi 3 に対して使用される。
- 同じモデルだが、ランダム化設定が異なる場合
- 例:デフォルト以外の temperature やランダムシード。
- さらには、プロンプトの生成に使用されたモデルとは異なるモデルである可能性もあります
このツールは、「Universal and Transferable Adversarial Attacks on Aligned Language Models」論文に関連する llm-attacks リポジトリ の大幅にカスタマイズされたバージョンに一部基づいています。また、nanoGCG のアルゴリズムもいくつか組み込んでいます。
Zou、Wang、Carlini、Nasr、Kolter、Fredrikson による元の研究は、Nvidia A100 や H100 など、80GiB の VRAM を搭載したハイエンドのクラウド/ホスティングプロバイダーのハードウェアを使用して行われました。これらの GPU を個人が購入するのは通常あまりにも高価であり、レンタルすると高額な請求になる可能性があります。
私たちの当初の目標は、CUDA をサポートする現行世代のコンシューマー GPU の中で最も VRAM(24GiB)を搭載する GeForce RTX 4090 上で、できるだけ多くのモデルに対して GCG 攻撃を実行できるツールを製作し、この魅力的な研究分野へのアクセシビリティを大幅に拡大することでした。RTX 4090 も依然として高価ですが、一括購入する場合の価格は(本稿執筆時点で)A100 または H100 を搭載したクラウドインスタンスを 1 か月レンタルするのとほぼ同じです。さらに、情報セキュリティ分野の人々の少なくとも一部は、ハッシュクラックやゲーム用に RTX 4090 をすでに所有しています。
バージョン 0.34 以降、Broken Hill は CUDA ハードウェアを搭載していないデバイスでも許容可能な速度で処理を実行でき(ただし、CUDA ハードウェアが提供するパフォーマンスよりは低下します)、macOS および Windows でも使用できます(主に Linux でテストされていますが)。これにより、以前のバージョンよりもはるかに多くのユーザーが、より大きなモデルに対して攻撃を実行できるようになります。
ドキュメント
資料量が多いため、Broken Hill のドキュメントは専用のディレクトリツリーに格納されています。
Broken Hill のバージョン履歴
Broken Hill を紹介するハイレベルなブログ記事
BishopFox.com の Broken Hill ツールページ
機能
- 充実したコマンドラインインターフェース
- 多数のモデルファミリーをサポート。その多くは RTX 4090 で実行できる十分に小さいサイズで利用できます(詳細は「Model notes」ドキュメントを参照)。主なハイライト:
- Azurro の APT ファミリー
- Falcon
- Gemma(
Vikhr-Gemma-2B-instruct などのサードパーティ製派生モデルを含む)
- Gemma 2
- GLM-4
- GPT-J、GPT-Neo、GPT-NeoX
- Guanaco
- Llama(
Llama-68M-Chat-v1 や alpaca-13b などのサードパーティ製派生モデルを含む)
- Llama-2(Meta-Llama-Guard-2、Swallow、Youri などのファーストパーティおよびサードパーティ製派生モデルを含む)
- Llama-3(Llama-Guard-3、Swallow、Youko などのファーストパーティおよびサードパーティ製派生モデルを含む)
- MPT
- Mamba
- Mistral(Intel の Neural Chat などの派生サードパーティモデルを含む)
- Mixtral
- OPT
- Orca-2
- Phi-1 から Phi-3.5
- Pythia(OpenAssistant モデルの Pythia ベースのサブセットなどの派生サードパーティモデルを含む)
- Qwen 1、1.5、2(
nekomata-7b-instruction などのサードパーティ製派生モデルを含む)
- RedPajama-INCITE
- SOLAR
- SmolLM
- Snowflake Arctic
- StableLM 1 および 2
- TinyLlama
- Vicuna
- 結果はフィルタリング/分析用に JSON 形式で出力可能
- 敵対的データの各イテレーションを、複数の異なるランダム化設定で同じ LLM に対してテストすることをサポートし、脆弱な結果を排除するのに役立ちます
- 各イテレーションで自動的に状態をバックアップし、エラーが発生した場合のチェックポイントからの再開や、テスト終了後の追加イテレーションの継続を可能にします。
- 攻撃が正しく構成され、有用な結果が得られることを検証するためのセルフテスト機能
- 会話がモデルのトレーニング形式で提供されていることの検証
- 敵対的コンテンツが含まれていない場合に、モデルが要求された出力を提供しないことの検証
- GCG 攻撃の理想的な結果をシミュレートするプロンプトが与えられた場合に、モデルが要求された出力を提供することの検証
- 損失値以外の敵対的コンテンツ生成の方向付けのための追加テクニック
- jailbreak 数に基づく最高水準(high-water-mark)結果へのロールバック
- 損失値が以前の結果を満たす(またはそれに近い)ことを要求
- テストケースの検出をより正確にするために、カスタム jailbreak 検出ルールを JSON 形式で指定する機能
- Zou、Wang、Carlini、Nasr、Kolter、Fredrikson によって開発されたデフォルト方式の改良された jailbreak 検出ルール
今後のリリースで計画されている機能
- 既存の結果を(別のモデル/構成に対して、別の jailbreak 検出ルールでなど)テストまたは再分析する機能
- 「転移可能な」敵対的コンテンツをより簡単に発見できるようになります
- GCG 攻撃に必要なデータ(勾配、バックプロパゲーションデータなど)がデバイスメモリに収まらない場合でも、デバイスメモリに収まるモデルに対して結果をテストできるようになります
- コンテンツ生成を再実行するオーバーヘッドなしに、改訂された jailbreak 検出ルールをテストできるようになります
- 会話テンプレートをさらに改良するための、より広範なセルフテスト
- より柔軟なロールバックモデル
- より多くの独自バリエーションを生成するための設定可能なランダム化ルール(「Gamma garden mode」)
- 後続作業用に結果データを出力する組み込み機能(現在のバージョンでは
jq を使用)
- 改良されたデフォルトの jailbreak 検出ロジック
- 追加の損失アルゴリズム
- 中央ノードが調整する、Broken Hill を実行する複数システムのクラスターを運用する機能
- 追加の攻撃モード
- 国際化