Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rust 並列強化学習
Search
NearMeの技術発表資料です
PRO
July 18, 2025
0
80
Rust 並列強化学習
NearMeの技術発表資料です
PRO
July 18, 2025
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
【Browser Automation × AI】 Stagehandを試してみよう
nearme_tech
PRO
0
37
AIを用いた PID制御で部屋 の温度制御をしてみた
nearme_tech
PRO
0
44
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
2
200
Tile38 Overview
nearme_tech
PRO
0
59
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
560
実践で使えるtorchのテンソル演算
nearme_tech
PRO
0
35
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
580
初めてのmarimo (ハンズオン)
nearme_tech
PRO
0
52
ローカルLLM
nearme_tech
PRO
0
93
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
GitHub's CSS Performance
jonrohan
1032
470k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
160
The Art of Programming - Codeland 2020
erikaheidi
57
14k
SEO for Brand Visibility & Recognition
aleyda
0
4.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
How to make the Groovebox
asonas
2
2k
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