$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rust 並列強化学習
Search
NearMeの技術発表資料です
PRO
July 18, 2025
0
53
Rust 並列強化学習
NearMeの技術発表資料です
PRO
July 18, 2025
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
30
初めてのmarimo (ハンズオン)
nearme_tech
PRO
0
18
ローカルLLM
nearme_tech
PRO
0
30
LlamaIndex Workflow: Build Practical AI Agents Fast
nearme_tech
PRO
0
17
Box-Muller法
nearme_tech
PRO
1
30
Kiro触ってみた
nearme_tech
PRO
0
210
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
4
490
ReactNative のアップグレード作業が (意外に)楽しかった話
nearme_tech
PRO
2
120
強化学習アルゴリズムPPOの改善案を考えてみた
nearme_tech
PRO
0
73
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to Ace a Technical Interview
jacobian
280
24k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
BBQ
matthewcrist
89
9.9k
The Cult of Friendly URLs
andyhume
79
6.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Practical Orchestrator
shlominoach
190
11k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
0 Rust 並列強化学習 2025-07-18 第126回NearMe技術勉強会 Takuma KAKINOUE
1 今回のテーマ • Rustで強化学習のDQNアルゴリズムを実装した ◦ https://zenn.dev/kakky_hacker/articles/652bd7f9a1e6c1 • 今回はDQNを並列化し、マルチエージェントで強化学習してみる
2 並列化のアーキテクチャ 環境サーバ_1 環境サーバ_n ・・・ n台 Agent_1 Agent_m ・・・ m個
リプレイバッファ gRPC通信 gRPC通信 1プロセス mスレッド
3 実装解説 • 左のコードのようにmemoryをMutexで包みつつTransitionBufferを定義 • 各agentにArc::cloneでTransitionBufferのインスタンスの参照を渡す ※TransitionBufferに経験をappendするとき、Q関数ネットを更新するために経験をサン プリングするときは、self.memory.lock()を⾏うことで排他制御する
4 実験概要 • OpenAI GymのLunarLander-v3で実験 ◦ https://gymnasium.farama.org/environments/box2d/lunar_lander/ ◦ DQN(single) vs
並列DQN(multi)で⽐較
5 実験結果 • 横軸:エピソード、縦軸:訓練中の報酬(10エピソード移動平均) ※ 並列DQN(multi)は9個並列で学習し、一番性能の良かったagentの軌跡をプロットした 並列化した方が安 定している!
6 パフォーマンス⽐較 • single(Python) ※参考 ◦ 実⾏時間:410 s ◦ 使⽤メモリ:93.3
MB • single(Rust) ◦ 実⾏時間:360 s ← Pythonと⽐べて約12%削減! ◦ 使⽤メモリ:79.7 MB ← Pythonと⽐べて約15%削減! • multi(Rust)※9並列 ◦ 実⾏時間:727 s ← singleの約2.0倍に留まった! ◦ 使⽤メモリ:- ※ 実行時間は始め200エピソードにかかった時間 今回の本筋と関係ないが、 一応Rustの優位性を実証 とはいえ、 9並列はtoo muchだったかも(最適な並 列数はありそう ..!)
7 まとめ • リプレイバッファを複数agentで共有するだけというシンプルなアプ ローチで、学習を安定化&効率化させることに成功! • Rustを使うことで、簡単に並列学習を実装できた!
8 今後の展望 • リプレイバッファからのサンプリングの⼯夫 • エージェント毎にハイパーパラメータを変化させて並列学習 • DQNだけでなくPPOやSACなどのアルゴリズムも並列化させて性能検証
9 おわりに • Starよろしくお願いします!⭐ ◦ https://github.com/kakky-hacker/reinforcex
10 実験⽅法詳細 • モデル ◦ 全結合ネットワーク ◦ ニューロン数:300個 ◦ 中間層:2層
◦ 活性化関数:relu • 最適化関数 ◦ Adam ◦ 学習率:3e-4 • DQNのハイパーパラメータ ◦ 更新間隔:8 step ◦ ターゲットネットワークの更新間隔:50 step ◦ ⽅策:ε decay ε-greedy(1.0→0.05, 10000 step) ◦ 割引率:0.99 • CPU → Intel Corei7-10870H, GPU→なし
11 Thank you