RikiyaT/lm_understand-logs
Complete logs of the experiments in the blog post 'LLMs can understand and write neural network weights'
これは何か
このリポジトリには、「重み空間プログラミングの火花:LLMはニューラルネットワークの重みを理解し、書き込むことができる」というブログ記事の背後にあるすべての実験の完全な生ログが含まれています。この記事は、大規模言語モデル(LLM)がニューラルネットワークの重み(訓練されたAIモデルを定義する数値)を読み取るだけでなく、ネットワークの動作を変更するために書き込んだり編集したりできると主張しています。
各実験について、リポジトリは以下を提供します:
- 研究者がモデルに送信したすべての内容(プロンプト)、
- モデルが返信したすべての内容(推論の要約を含む)、
- モデルが書いたすべてのコードとそのコードが生成した出力、
- 記事で引用された各数値を生成した評価、
- モデルが読み取ったまたは書き込んだ実際のニューラルネットワーク。
各実験フォルダには、どの実行がブログ記事のどのタブまたは行に対応するか、および報告された各数値がどのファイルから来ているかを説明するREADMEがあります。
8つの実験
| # | モデルに求められたこと | 詳細 |
|---|---|---|
| 1 | このネットワークはどのビデオゲームで訓練されたか? | ブロック崩し、ポン、パックマン、フリーウェイ — 自由回答 |
| 2 | この拡散モデルは何を生成するか? | 円、正方形、三角形 |
| 3 | 中間層から判断して、言語モデルはどの言語を学習したか? | Python、ローマ字、英語 — 各2会話 |
| 4 | 重みを編集して失敗しているネットワークを修正する | 1回のワンショット編集 |
| 5 | ゼロからネットワークを書く | ブロック崩し、シークエスト、アステリックス(MinAtarゲーム) |
| 6 | 150万重みの囲碁ネットワークを書く | 0、10、25、50パス |
| 7 | どの言語モデルがお世辞(あなたが聞きたいことを言う)か? | 重みのみの試行4回、その後アテンションツール |
| 8 | 言語モデルを数学に強くする | Qwen3.5-0.8Bで10/25/50パス、さらにGemma 3 270Mフォローアップ |
記事で実際に報告された実行のみが含まれています — 初期のプロンプトバージョンの試行は除外されました。
モデルの実行方法
記事で「Astra」と呼ばれるモデルは、OpenAIのgpt-6-astraです。各ターンはCodex CLIの1回の呼び出し(codex exec、または会話を続けるためのcodex exec resume)です。推論の努力は呼び出しごとに設定され、記録されました:実験1、2、4ではhigh、3、5、6、7ではxhigh、8ではmax。
モデルには意図的に独自のツールが与えられませんでした。シェル、ファイル編集、ウェブ検索、画像表示、サブエージェント、プラグインなど、ツールを提供するすべての組み込みCodex機能がオフにされました。設定はharness/codex_config.tomlにあり、システム指示はharness/instructions.mdの1行の中立的なテキストです。
すべてのターンが監査されました。研究者は各ターンのイベントストリームをチェックし、モデルのメッセージ、推論の要約、およびコードモードが無効であるというCodexの通知のみが含まれていることを確認しました。結果は各ターンのrun.jsonのaudit.tool_freeフィールドです。このリリースの全1,125ターンが監査に合格しました。
コードが許可された場所(実験3、6、7、8):モデルはターンごとに1つのPythonブロックを書くことができました。そのコードは研究者自身のサンドボックスで実行されました — bubblewrap分離、ネットワークなし、実行間で作業フォルダが保持され、時間制限があります。印刷された出力は次のメッセージとしてモデルに送り返されました。各実行のコードと出力はtool_calls.jsonlにあります。
ファイルの内容
すべてのファイルがすべての実行に存在するわけではありませんが、一般的なものは次のとおりです:
prompt.txt/message.txt— モデルに送信された内容(最初のメッセージ、その後はターンごとの後続メッセージ)。events.jsonl— 生のCodexイベントストリーム:モデルのメッセージ、推論の要約、トークン使用量。answer.md/turn_text.md/final_answer.md— 1ターンでのモデルの応答、および最終応答。explanations.md— プロンプトが要求した場合のモデルのステップバイステップの説明。tool_calls.jsonl— サンドボックス実行ごとに1行:コード、印刷された出力、所要時間。run.json— 1ターンの記録:モデル、努力、トークン、壁時計時間、監査結果。state.json— 1つの会話の記録:ターン、使用された実行、完了したかどうか。loop.log/driver.log/run.log— ハーネスのログ。eval/— スコアリング、回答キーまたはグラウンドトゥルース付き。networks/— モデルが読み取ったまたは書き込んだネットワーク。
内部パスはプレースホルダー(<data>、<repo>、<codex>、<codex_home>、<venvs>、<home>、<remote>)に置き換えられ、ログが研究者のインフラストラクチャを漏らさないようにしています。CodexスレッドIDはid-プラス8桁の16進数に置き換えられます。同じスレッドはすべてのファイルで同じIDを保持するため、1つの会話のターンは引き続き一致します。
含まれていないもの
- 実験7のGemma 3 270Mファインチューン(17 GB)。データ、トレーニングスクリプト、ハッシュは再構築できるようにあります。
- モデルが作業中に書いた中間ファイル — アクティベーション、生成テキストのダンプ、ドラフトネットワーク。最終ネットワークと重み編集は含まれています。実験8のものは公開ベース重みに対する正確な差分であり、適用するスクリプトが付属しています。
- 実験3のPythonコーパスのテキスト — 他のプロジェクトのコードであるため、マニフェストと再構築スクリプトが代わりに提供されます。
- 実験8の生成におけるGPQA問題テキスト — スコアと質問ごとの結果は保持されます。
ライセンス
- ログ、データ、ネットワーク:CC BY 4.0
- 研究者のスクリプト:MIT
- 実験5のプロンプトのMinAtarソース:GPL-3.0(
exp5_write_from_scratch/LICENSE-MinAtarを参照) - サードパーティのベンチマークデータ(MATH、GSM8K、IFEval、MMLU-Proなど、実験8)は独自のライセンスを保持します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト