はじめに
GMOコネクトの永田です。
前回の記事でGitHub CopilotのAgentを試したのですが、流石に1関数のUnit Test Code作成ではお題が簡単すぎました。
ということで、別のお題を試してみます!
まとめ
- GPT-5 mini、Claude Sonnet 4.5、GPT-5 Codexどれも論文を要約し、プロトタイプ実装に向けての情報整理は必要十分な品質がありそう
- プロンプト1回だけでここまでの整理してくれるの、やばいですね😅
- GPT-5 miniは足りない観点があったものの、実運用では人がレビューしてコメントをするなら、十分実用的
- GPT-5 Codexが次のプロトタイプ実装に向けての必要情報の整理や、具体的なプロセスが詳細化できていた
- ただ、プロトタイプ向けにはちょっとオーバースペックなAgent-Server間通信があったり、Agent毎にpyが分かれていたりとツッコミどころはあるが、実装前にコメントしてあげれば、おそらく大丈夫はなず
- Next: GPT-5 Codexが生成したdocをベースに、それぞれPythonでの実装・実行を試す!
- 「実装能力の差」を確認したいので、ベースになるdocを今回は合わせる
Agentへのお題
「面白い論文を見つけたもののサンプルコードがなく、論文を読み解いて1から作成している時間がないが、ちょっと試してみたい!」っていう経験は皆様もよくあるかと思います。
ということでお題はこちらです。
学術論文の内容を要約し、プロトタイプ実装向けに方針提案
※方針の認識合わせをした上で実装して欲しいので、一気に実装まで行わず、一度ここまででタスクを分解します。
具体的には、こちらの論文をお題に使います。
GANの分散学習(Federated Generative Adversarial Network)です。
データセットを集約しなくても、分散してGANがでるという、データのプライバシーに配慮した学習ができちゃうようです。
学術論文はPDFだけではなく、TeX形式も公開されていることが多いので、AIフレンドリーですね😊
Federated Learningとは
Federated Learningのプライバシー保護の観点だとこの辺りの記事が参考になります。
また、LLMの学習でもFederated Learningは注目されています。こちらは計算リソースを「元気玉」する目的で使われるようです。
Agentに依頼したprompt
では、早速Github Copilot Agentに依頼していきます。
今回はいつもの雑ではなく、まとめて欲しい方向性を、ある程度丁寧に指示しています。
アウトプットがドキュメントの場合、アウトプットの方針や書いて欲しいことなどをちゃんと指示してあげるほうが、期待に沿ったものがでてきます。
(これ自体は、人手で要件整理・設計するときも同じですが)
FedGANの論文(paper/arXiv-2006.07228v2/neurips_2020.tex)を日本語で要約し、
doc/fedgan_summary_{model}.md にMarkdownで保存
- 「Algorithm 1: Federated Generative Adversarial Network (FedGAN)」および、それに関連する記載を重点的に
- DatasetはMNIST部分のみで良い
- FedGANの処理シーケンスをMermaidで作成
- 目的: シーケンスを元にPython(Tensorflow)でFedGANの実装をしたい
- 注意: TeX 記法がMermaidのパーサーエラーを引き起こすため、Texから転記する場合、すべてプレーンテキスト(カンマ・バックスラッシュなどの特殊文字を除去)に置き換え
- 次に実施できること(提案)もMarkdownの最後に記載
- まずは、最小限動くプロトタイプが良い(まずはSingle-Process、Single-Loopでも良い)
- プロトタイプの設計、実装にあたり、決めるべき値や追加で必要な情報があれば、Markdownに記載
- Actorは、Server(Intermediary)、Agent1、Agent2、AgentBとする
なお、モデル間の違いがわかりやすいよう、今回はprompt 1回のみでやる、としました。
※実務ではAgentと何度かやりとりして、アウトプットの質を向上させてください。レビューしてコメントしてあげる感じです。(普通の開発プロセスと同じ)
試してみた
利用したモデル
前回の結果を考慮して、以下の3モデルとしました。
モデル | 選定理由 |
---|---|
GPT-5 mini | 0x の中で一番良かった |
Claude Sonnet 4.5(preview) | 新しいので、その1 |
GPT-5-Codex(preview) | 新しいので、その2 |
GPT-5 miniの場合
- 総評: 良い感じ😊
- なんかもうこれで十分じゃね?
- FedGANの要点をほぼ抑えている
- 各エージェントはローカルのジェネレータと識別器(discriminator)を持ち
- 一定間隔(同期間隔K)で仲介者(サーバー)にパラメータ(重み)を送付
- 仲介者は重み付き平均を計算
- 仲介者自体は学習を行わず、単に平均化の役割を果たす
- 各エージェントのデータ量比 p_j を利用
- 仲介者が平均化した重みを各Agentに送付し、各Agentのlocalのパラメータ(重み)に反映
- シーケンスも上記要点に沿って必要事項が簡潔に書かれている
- プロトタイプ向けの方針もシンプルで要点を抑えている
- 最初は Single-Process, Single-Loop で各 Agent をスレッドやループの中で順にシミュレートする方式で実装。通信は関数呼び出しで模擬。
- 「実装フロー(簡単)」もイメージにあっている
Claude Sonnet 4.5の場合
- 総評: より良い感じ😊
- FedGANの要点を抑えている
- 各エージェント(データ所有者)が**ローカルな生成器(Generator)と識別器(Discriminator)**を保持
- **中間サーバー(Intermediary)**が周期的にパラメータを平均化して同期
- データは共有せず、モデルパラメータのみを通信
- 生データを共有しない
- 中間サーバーが重み付き平均を計算
- 全エージェントが同じ初期パラメータで開始 ★GPT-5 miniでは抜けていた要点
- 平均化されたパラメータを全エージェントに配信、各エージェントが受信したパラメータで更新
- シーケンスも上記要点に沿って必要事項が簡潔に書かれている
- 同じ初期パラメータで重みを初期化する処理も記載あり
- 生成されたドキュメントが、GPT-5 miniより読みやすい(主観)
GPT-5-Codexの場合
- 総評: 一番良い感じ😊
- FedGANの要点を抑えている
- FedGANは各エージェント(Agent)に局所的なGeneratorとDiscriminatorの両方を配置し
- 仲介者(Intermediary/Server)を通じて定期的にパラメータを同期
- 仲介者は全エージェントのパラメータを平均し、各エージェントに配信
- 生データを共有せず、モデルパラメータのみを交換
- 仲介者が重み付き平均を計算、(エージェントjのデータ比率)
- 全エージェントのDiscriminatorとGeneratorパラメータを初期化
- w_0^i = ŵ、θ_0^i = θ̂ (全エージェント共通)
- 仲介者が平均パラメータを全エージェントに送信、各エージェントがパラメータを更新
- シーケンスも上記要点に沿って必要事項が簡潔に書かれている(Claude Sonnet4.5とほぼ同じ)
- 同じ初期パラメータで重みを初期化する処理も記載あり
- 「次に実施できること(プロトタイプ実装提案)」が一番具体的かつ、割と適切で、どんな実装をしてくれそうか、一番イメージがしやすかった
- 「開発ステップ」が具体的。(STEP4は、最初のpromptを無視している点はあれだけど)
(再掲)まとめ
- GPT-5 mini、Claude Sonnet 4.5、GPT-5 Codexどれも論文を要約し、プロトタイプ実装に向けての情報整理は必要十分な品質がありそう
- プロンプト1回だけでここまでの整理してくれるの、やばいですね😅
- GPT-5 miniは足りない観点があったものの、実運用では人がレビューしてコメントをするなら、十分実用的
- GPT-5 Codexが次のプロトタイプ実装に向けての必要情報の整理や、具体的なプロセスが詳細化できていた
- ただ、プロトタイプ向けにはちょっとオーバースペックなAgent-Server間通信があったり、Agent毎にpyが分かれていたりとツッコミどころはあるが、実装前にコメントしてあげれば、おそらく大丈夫はなず
- Next: GPT-5 Codexが生成したdocをベースに、それぞれPythonでの実装・実行を試す!
- 「実装能力の差」を確認したいので、ベースになるdocを今回は合わせる
弊社では、機械学習・AI・LLMなどを使ったサービスの開発や技術支援をはじめ、幅広い支援を行っておりますので、何かありましたらお気軽にお問合せください。