作業ログ · 実験 · 筋肉 · RunPod
作業ログ: モーターの代わりに筋肉で
筋肉、ステージ1:モーターの代わりに関節の筋肉
学習コスト 約$5.75RunPod の RTX 4090 と RTX 5090 のポッド、1時間あたり $0.89–1.19 · 学習ラン8回、マシン10台、約4.9マシン時間
これまでのファイターはどれも関節のモーターで動いていました。方策(ポリシー)が各関節の目標角度を選び、サーボがそこまで動かすので、行動がゼロでもすでに参照モーションを追従します。本物の体には筋肉があり、筋肉は引くことしかできず、指令に遅れて反応し、拮抗する筋肉が両方働いたときにしか硬くなりません。10月27日、筋肉を使うと学習がどれだけ長くかかるのか、そもそもうまくいくのか、既存の成果をどれだけ再利用できるのかを尋ねました。
最初のステージでは、それ以外はすべて同じにします。骨格、質量、接触、参照モーションは同じで、各関節のモーターの代わりに MuJoCo の筋肉を1対ずつ置きます(合計86本で、それぞれが置き換えるモーターと同じ強さ)。こうするとサーボの体と直接比較できます。どのランも RunPod の GPU で、1,024 の世界を同時に動かし、構えの環境を一から学習させます。「解けた」の基準は学習プログラムのテストで、全リズムで20イテレーションにわたり、転倒が5 %以下、エピソードが500ステップ中490ステップ以上続くことです。
ラン
| ラン | 内容 | 結果 |
|---|---|---|
| muscle-check | 筋肉の体での GPU と CPU の1ステップごとの比較、速度 | 一致(qpos の差は 2e-6 以内)。筋肉による GPU 時間の増加はなし(毎秒 45.5k ステップ、サーボの体は 36.6k) |
| mbase | サーボの体を一から、シード2つ:ベースライン | 11.7 M と 12.1 M ステップで解けた、それぞれ約5分 |
| muscle1s0, muscle1s1 | 筋肉の体を一から、シード0と1、サーボの体の行動フィルタ付き | 一度も解けず:転倒は 7–9 %で頭打ち。シード0は 185 M ステップで転倒100 %に崩れた |
| muscle1t | サーボの方策をトルクの教師にした筋肉の体、200イテレーションで徐々にゼロへ | 立ち上がりは3–4倍速いが、教師が消えると同じ頭打ちに |
| muscle1t2 | 同上、ただし教師は0.2未満に下げない | 転倒約20 %で停滞 |
| muscle1f | 一から、軽い行動フィルタ(バランス時 0.8 ではなく 0.5) | 37.8 M ステップ、882 s で解けた |
| muscle1f2 | 同上、シード1 | 26.6 M ステップ、602 s で解けた |
| mbase2 | 軽いフィルタでのサーボの体、シード2つ:同条件の比較 | 12.9 M と 12.7 M ステップで解けた |
| volcheck | RunPod のボリュームを 21 GB から 50 GB に増やした設定を反映させるための1分間のポッド |
わかったこと
- 可能か:はい。 活性化の遅れと力・長さ・速度の曲線を持つ、引くことしかできない86本の筋肉で、構え、そのリズム、軽い押しを一から覚えられます。
- どれだけ長くかかるか: 同じフィルタのサーボの体と比べて、シード同士でステップ数は2.1–2.9倍、時間は1.8–2.6倍です。GPU 上の物理演算は遅くなりません。増えた分はすべてサンプル数です。
- 決め手は行動フィルタでした。 サーボの体のフィルタは、筋肉自身の遅れに加えて約 80 ms の遅れを足します。それを使った筋肉のランは一度も解けませんでした。約 20 ms にすると、1本は15分で解けました。転倒の前に飽和した筋肉は一つもありませんでした。転倒の原因は力ではなくタイミングでした。
- 再利用: チェックポイント以外はすべてそのまま引き継げました。サーボの方策を教師にしても、速くなるのは立ち上がりだけです。
採用:muscle1f-37.8M と muscle1f2-26.6M。次のステージでは、体に本物の脚の筋肉を付けます(ステージ2)。
すべてのラン
kakuto-mlのラン記録から作成しています。各ランのマシン、課金された時間とコストです(EC2のランはランのログからの推定値です)。この作業ログに含まれるテストとレンダリングも載せています。
| ラン | 結果 | マシン | 時間 | コスト |
|---|---|---|---|---|
mbase2-2026102710月27日 | 不採用 | 1 | 0.3 | $0.33 |
muscle1f2-2026102710月27日 · 採用 muscle1f2-26.6M | 採用 | 1 | 0.3 | $0.33 |
muscle1t2-2026102710月27日 | 中止 | 1 | 0.4 | $0.42 |
muscle1f-2026102710月27日 · 採用 muscle1f-37.8M | 採用 | 1 | 0.4 | $0.42 |
muscle1t-2026102710月27日 | 中止 | 1 | 0.7 | $0.79 |
mbase-2026102710月27日 · 採用 mbase-11.7M | 採用 | 1 | 0.3 | $0.33 |
muscle1s0-2026102710月27日 | 中止 | 1 | 1.6 | $1.89 |
muscle1s1-2026102710月27日 | 中止 | 1 | 1 | $1.14 |
| 学習ラン8回 | 8 | 4.8 | $5.66 |
- a 1-minute RunPod pod to make the volume resize to 50 GB take effect, 27 October: マシン1台、0時間、$0.01
- GPU against CPU parity check of the muscle body on a RunPod RTX 4090, 27 October: マシン1台、0.1時間、$0.08