HN公開: Sparse Autoencodersを活用したLlama 3.2の解釈可能性研究
(github.com/PaulPauls)プロジェクト概要
- 現代の大規模言語モデル(LLM)は、複数の特徴を同じニューロンに重ね合わせて概念をエンコードし、各ニューロンの活性化が他のニューロンの活性化に応じて複数の解釈可能な意味を持つようにする。これを_重ね合わせ(superposition)_と呼ぶ。
- スパースオートエンコーダ(Sparse Autoencoders, SAE)は、学習済みLLMに挿入され、活性化を非常に大きな疎な潜在空間へ射影することで、重ね合わされた表現を分離し、解釈可能な特徴へ変換する。
- このプロジェクトは、Anthropic、OpenAI、Google DeepMindが成功裏に進めた研究を再現し、解釈可能な特徴を抽出することを目標としている。
- Llama 3.2-3Bモデル向けに、機能的かつ解釈可能なスパースオートエンコーダを生成するための完全なパイプラインを提供する。
主な機能
- PyTorchで書かれた活性化キャプチャからSAEの学習、特徴の解釈と検証まで、完全なエンドツーエンドのパイプラインを提供。
- 大規模言語モデルから残差活性化をキャプチャし、SAE学習用データセットとして使用。
- 学習データを効率的に前処理し、複数GPUを活用した大規模分散学習をサポート。
- SAE学習中に補助損失を実装し、死んだ潜在変数を防ぎ、学習ダイナミクスを安定化。
- Weights & BiasesによるSAE学習の包括的なロギング、可視化、チェックポイントを提供。
- 解釈可能性分析ツールにより、学習済み特徴の意味分析を支援。
- Llama 3.1/3.2の純粋なPyTorch実装により、外部依存なしで一般利用および結果検証が可能。
- テキストおよびチャット補完タスクを通じて、モデルの振る舞いに対するSAEの影響を検証し、抽出された意味的特徴を調整可能。
公開されたリソース
-
OpenWebText文データセット:
- 活性化キャプチャに使用されたOpenWebTextデータセットのカスタム版。
- 元のテキストを保持しつつ、高速アクセスのため各文をParquet形式で保存。
- NLTK 3.9.1の"Punkt"トークナイザーを使用して文分割。
-
キャプチャ済みLlama 3.2-3B活性化:
- Llama 3.2-3Bの第23層の残差活性化、2,500万文分。
- 4TBの生データを3.2TBに圧縮し、100個のアーカイブに分割。
-
SAE学習ログ:
- Weights & Biasesによる学習、検証、デバッグメトリクス可視化ログ。
- 10エポックと10,000件の記録済みステップを含む。
-
学習済み65,536潜在SAEモデル:
- 10エポック後の最終学習済みSAEモデル。
プロジェクト構成
1. データキャプチャ
capture_activations.py: LLM残差活性化のキャプチャ。openwebtext_sentences_dataset.py: 文レベル処理向けカスタムデータセット。
2. SAE学習
sae.py: 中核となるSAEモデル実装。sae_preprocessing.py: SAE学習のためのデータ前処理。sae_training.py: 分散SAE学習の実装。
3. 解釈可能性
capture_top_activating_sentences.py: 特徴活性化を最大化する文を特定。interpret_top_sentences_send_batches.py: 解釈用バッチの生成と送信。interpret_top_sentences_retrieve_batches.py: 解釈結果の収集。interpret_top_sentences_parse_responses.py: 解釈結果の分析。
4. 検証とテスト
llama_3_inference.py: 中核となる推論実装。llama_3_inference_text_completion_test.py: テキスト補完テスト。llama_3_inference_chat_completion_test.py: チャット補完テスト。llama_3_inference_text_completion_gradio.py: 対話型テスト用Gradioインターフェース。
1件のコメント
Hacker Newsのコメント
LLMの機械的解釈可能性は、モデルが自分自身を説明する際にもっともらしい回答を生成してしまう問題に対処するもの。モデルが強力であるほど、「嘘」を正当化する際の説得力が増し、自己検知テストでより低いスコアになる可能性がある。目標は真実ではなく一貫性にある
Sparse Autoencoders(SAE)に関する研究では、損失曲線の下限がべき乗則でスケーリングすることが観察された。補助損失によって死んだ潜在変数を完全に解消でき、学習反復のあいだに滑らかな正弦波パターンも観察された
機械的解釈可能性に関する問いの提起。将来のAIが自らの訓練を監督しつつ、あいまいさを利用して機械的解釈の観察者を欺けるモデルを作る可能性への懸念がある
SAE評価の難しさに関するブログ記事を読み、この問題をどのように解決したのか気になっている。リポジトリ内でアプローチを理解できる箇所を探したい
この作業はアラインメントに前向きな影響を与える可能性があると思うが、まだ詳細は確認していない。時間、コスト、リスクに見合うにはどれくらい支払う必要があるのか気になっている
ドキュメント作成に多くの時間を割いてくれたことに感謝する
とても素晴らしい取り組みで、SAELensと統合する計画があるのか気になっている