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
February 17, 2025
2
140
Rustで作る強化学習エージェント
NearMeの技術発表資料です
PRO
February 17, 2025
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
Kiro触ってみた
nearme_tech
PRO
0
24
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
310
ReactNative のアップグレード作業が (意外に)楽しかった話
nearme_tech
PRO
2
88
強化学習アルゴリズムPPOの改善案を考えてみた
nearme_tech
PRO
0
21
Apple Containerについて調べて触ってみた
nearme_tech
PRO
0
280
Rust 並列強化学習
nearme_tech
PRO
0
27
並列で⽣成AIにコーディングをやらせる
nearme_tech
PRO
1
180
希望休勤務を考慮したシフト作成
nearme_tech
PRO
0
46
Hub Labeling による高速経路探索
nearme_tech
PRO
0
110
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Balancing Empowerment & Direction
lara
4
680
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Code Review Best Practice
trishagee
72
19k
Designing for Performance
lara
610
69k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Visualization
eitanlees
148
16k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Transcript
0 Rustで作る強化学習エージェント 2024-02-14 第113回NearMe技術勉強会 Takuma KAKINOUE
1 概要 • Rust製のOSS強化学習フレームワークを開発中 ◦ https://github.com/kakky-hacker/reinforcex • 深層学習にはpytorchのrust版であるtchを使⽤ • 今回の勉強会では、reinforcexのサンプルを動かす
2 なぜRustなのか? • メモリ効率性が良い ◦ Pythonだとメモリリークで学習が中断されてしまうことがよくある ◦ Rustだと所有権システムによって使われなくなったメモリが即解放される • 並列処理に強い
◦ 複数エージェントで並列学習するアルゴリズムにおいてPythonより有利に • Rust製の深層学習フレームワークの開発が活発になってきている ◦ https://github.com/huggingface/candle ◦ https://github.com/tracel-ai/burn
3 強化学習アルゴリズム • REINFORCE(実装済) ◦ episodicなアルゴリズム ▪ step単位ではなくepisode単位で学習する ◦ ⽅策ベース
◦ 実装が簡単 • DQN(実装中) ◦ 価値ベース ◦ 実装はやや⼤変 ▪ Replay Buffer ▪ ε-Greedy • その他 ◦ DDPG, TD3, SAC, PPO, A3Cなど追って実装予定
4 サンプルを動かす • rust環境が未構築の場合は以下を実⾏してください ◦ brew install rustup-init ◦ rustup-init
◦ シェルの再起動 • 実験⽤にOpenAI-Gymを使うのでPythonをinstallして以下を実⾏してください ◦ pip3 install gymnasium==0.26.3 • リポジトリ(https://github.com/kakky-hacker/reinforcex)をcloneして、 cargo runを実⾏すればサンプルが動きます
5 インターフェース設計 • サンプルコードを元に解説 ◦ https://github.com/kakky-hacker/reinforcex/blob/master/src/examples/train_c artpole_with_reinforce.rs • 意識したこと ◦
Pythonの強化学習フレームワークであるChainerrlやPFRLと近い設計にした
6 ⼯夫したポイント • NNの重みの初期化メソッドの実装 ◦ https://github.com/kakky-hacker/reinforcex/blob/master/src/misc/weight_ini tializer.rs ◦ ランダム初期化よりもXavierやHeを使うことで学習がちゃんと進むようになった ◦
XavierとHeの使い分けは、該当の層の直後に噛ませる活性化関数の種類による ▪ Xavierの場合、tanhなどと相性が良い ▪ Heの場合、reluなどと相性が良い
7 ⼯夫したポイント • リプレイバッファにおいて、Reference Counterによる変数のライフタイム管理 ◦ https://github.com/kakky-hacker/reinforcex/blob/master/src/replay_buffer/replay_bu ffer.rs ◦ nステップ分の状態遷移を保持するとき、各状態に直前nステップの状態への参照を持たせ
ることで、無駄にメモリを使うことなく保持できる ◦ Reference Counterを使わない場合、nステップ分の状態のコピーが逐⼀保存されるので、 無駄にメモリを使う上に計算コストも増えてしまう
8 今後の展望 • アルゴリズムの拡充 ◦ DQN, PPO, SACなど • tchをcandle(or
burn)に移⾏ • 並列学習周りの実装 • Decision Transformerの実装 スター付けてもらえると、やる気が出ます! https://github.com/kakky-hacker/reinforcex
9 Thank you