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
非同期AMI Sys ロードマップ to Milestone 2
Search
Geson Anko
March 19, 2024
0
20
非同期AMI Sys ロードマップ to Milestone 2
Geson Anko
March 19, 2024
Tweet
Share
More Decks by Geson Anko
See All by Geson Anko
2024年3月27日 ML集会 非同期AMI基盤システムα
gesonanko
0
32
AMI System 非同期処理の事前知識
gesonanko
0
33
非同期更新AMI基盤システム
gesonanko
0
66
仮想AI研 ML集会 2023年12月27日
gesonanko
0
22
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Visualization
eitanlees
145
15k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
How to train your dragon (web standard)
notwaldorf
88
5.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Bash Introduction
62gerente
608
210k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Happy Clients
brianwarren
98
6.7k
Transcript
ロードマップ to Milestone 2 2024/03/20 Geson Anko
1 ⽬的・⽬標 • 以上の課題より、推論と学習を⾮同期に並⾏して⾏う システムが必須。 • ⽬標 • ⾮同期更新システムが実装され、推論(ロールアウト、インタラ クション)処理と学習処理が並⾏して⾏われることによって、
AMIが常時動作していること。 • ⾮同期システムを新たに作成し、そこに既存のモデルを移⾏する。 • さらに、今まで不可能だったモデルの⼤規模化の試運転までやっ てみたい。
2 ロードマップ • ステップ1 ⾮同期システムが動作する。 • 推論スレッド:モデルの推論をしつつ、データ収集 • 学習スレッド:集められたデータでパラメータ更新、同期 •
メインスレッド:終了、⼀時停⽌、再開ができる モデル • ランダムな⼊⼒を与えて、AutoEncoderを学習してみる(構想) • AutoEncoderは Encoderのみしか推論では使わない → 簡単に実装できて実際の動作形式に近い ✅ ୡ ✅ ✅ ✅
3 ロードマップ • ステップ2 既存の深層モデルが引き継がれる 現状P-AMI<Q>に使われているモデル群を移⾏する。 • Observation Encoder: VAE
• Forward Dynamics: SConv • Policy: PPO • Hydraによる設定ファイルからの起動✅ ✅
4 スケージューリング 1/21 2/4 2/18 3/3 3/17 3/27 ⾮同期システム 既存モデル引き継ぎ
モデル規模拡⼤ 最終報告・振り返り ΠϚ ίί なぜ遅れたか? • メンバー全員が2~3週間 まともに 動けない期間が発⽣(病気、卒研、引越し) • マイルストーン 2のHydraまでやった。(システムの起動のために) • 3つのマイルストーンのうち、最初が⼀番⼤変だったから。(実は全体の6~7割くらい進んでいる)
5 To Do
6 To Do: マイルストーンステップ2 • 既存実装の引き継ぎ • Environment (Sensor, Actuator)
• Models • Data Buffers • Agent • Trainers • システムの状態セーブ・ロード機能 • モデルパラメータ、オブジェクトの状態情報 • 学習記録の可視化 • TensorBoard, MLFlowなど
7 Environment (Sensor & Actuator) • I/O • ⼊⼒:3 x
84 x 84のRGB画像 OBSでキャプチャして OpenCVで読み取り • 出⼒:OSCで操作 前後左右の移動、⽔平回転 ジャンプ、ラン • 作るもの • OpenCVImageSensor • VRChatOSCDiscreteActuator OBS OpenCV VRChat OSC API Ubuntu Linux Python 観測 ⾏動
8 Models • Observation Encoder 𝜙 𝑜! → 𝑧! ✅
• マイルストーン1で作ったVAEを使う。 • Forward Dynamics 𝑓 𝑧! , ℎ! , 𝑎! → 𝑧!"# , ℎ!"# • MyxyさんのSConv を引継ぐ。 • 隠れ状態は⼊出⼒上で明⽰的に扱う。 • Primitive AMIでは存在した 𝑎!"# は使わない。 • Policy 𝜋 𝑜! → 𝑎! • PPOを引継ぐ。PolicyValueCommonNet. • Policyは 5次元の離散⾏動を返す。
9 Data Buffers • Random Image Buffer (for VAE) ✅
• 観測画像をランダムに集める。 • 既に実装済。Random Data Bufferを特殊化するか? (わかりやすさのために) • Time Series Dynamics Buffer (for Forward Dynamics) • 時系列を維持して 観測、隠れ状態、⾏動 𝑜!, ℎ!, 𝑎! を集める。 • Time Series Trajectory Buffer (for PPO Policy) • 時系列を維持して、PPOの学習に必要なデータを集める。
10 Agent (Curiosity Image PPO Agent) • インタラクション処理 • 観測を処理、⾏動を返す
• 学習データをBufferに渡す。 • PrimitiveAMIのものを引継 • ただし 前ステップの情報を保持する 時は Agentの属性に付ける。 StepData は DataBufferのためのオ ブジェクト。 • Reward 計算モジュール • 報酬の計算⽅法を内部構造から分離 3/19のmyxyさんとの議論より。 観測 取得 ⾏動 ⽣成 次の観測 予測 報酬(予測誤差)計算 インタラクション 10 fps 観測 取得 次の観測 予測 ⾏動 ⽣成 セット アップ
11 Trainers • Image VAE Trainer ✅ • 既に実装済 •
学習記録処理を実装する • Forward Dynamics Trainer • Primitive AMIのLitモジュールから引継。 • PPO Policy Trainer • Primitive AMIのLitモジュールから引継。
12 システムの状態セーブ・ロード • セーブするもの • モデルパラメータ • オプティマイザなどの Trainer の状態
• Agent, Environmentなどの状態 • 特に Forward Dynamicsの 隠れ状態を忘れずに • Data Bufferの保持データ • 保存⽅法 • ⼀つのディレクトリに、階層に分けて保存。 • リスタート • python launch.py checkpoint=<path/to/checkpoint> YYYY-MM-DD_hh-mm-ss/ ├── models/ │ ├── image_encoder.pth │ └── ... ├── data/ │ └── ... ├── trainers/ │ └── ... └── interaction/ ├── agent/ │ └── ... └── environment/ └── ... 想定される Checkpointの構造
13 学習記録の可視化 • ツール要件 • ⻑時間の学習記録を⾏なえるツールであること • 結局 学習記録は全て残すと思うので Rotating
File Handlerのような、古い記 録が削除される機能は無くても良い。 • 既存ツール • TensorBoard • MLFlow. MLFlowの⽅が多機能で拡張性が⾼い。良さげ • 記録ツールは1種類にしておきたい。