作業ログ · 蒸留 · 生徒
作業ログ: シャドウクローン:ムエタイの4つの技を並行して学ぶ
蒸留:生徒 distill4 までの6本のラン
学習コスト 約$16.27vast.ai の RTX 5090 での蒸留ラン6本に加え、ゲート、スナップショットの評価、動画(vast.ai と RunPod)、2026年10月24〜25日 · 学習ラン6回、マシン24台、約22.9マシン時間
生徒は guard18-124.5M から始まり、入力を自身のものから opponent_knee の448に増やしています(新しい入力の重みは0なので、始まりは guard18 とまったく同じです)。教師は、新しい技を出している間はその技の教師、それ以外はすべて guard18 です(--skill-teacher、--teacher-free none)。各ランはすべての種類のエピソードを混ぜて学習します。パンチ環境のエピソードが約26%(distill4 からは34%)、押し、ブロック、歩き、対戦相手です。入力は8つの技に分散しています:ジャブ、クロス、左右のフック、アッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー。方法は記事にあります。
ラン
| ラン | 元 | 教師と変更点 | 結果 | マシン時間、コスト |
|---|---|---|---|---|
| distill1 | guard18 | bodycross3, kneeR3, kneeL3。教師の重み2 | 上限の3 hで282.5 M。膝蹴りは習得(奥足 8回中6回、スイッチ 8回中5回)。ボディストレートは16回中2回:その教師は速い肘のものだった。ゲートのバグを2つ見つけて修正(下記) | 3.44 h(2台), $2.61 |
| distill2 | distill1 282.5 M | bodycross3 を bodycross4 に置き換え | ホストが停止して53.1 Mで中断。52.4 M:ボディストレート 24回中21回、膝蹴り 12回中10回と12回中12回、ブロック 32回中29回。ただし空中のクロスは12回中0回 | 約1.35 h(2台), 約$1.03 |
| distill3 | distill2 52.4 M | 同じ設定で、さらに190 M | distill2 を上回るスナップショットなし。学習中の平均は横ばいなのに、ゲートの結果は揺れる(ブロック 21〜29) | 2.40 h, $2.08 |
| distill4 | distill2 52.4 M | 教師の重み4、パンチのエピソードを増やし、クロスの入力も増やす | 131.1 M を採用:パンチ 120回中60回、空中のクロスは12回中3回に回復、歩き 40回中39回、対戦相手 160回中117回、ボディストレート 24回中20回、膝蹴り 12回中11回と12回中9回、転倒なし。ブロック 32回中24回 | 2.27 h, $1.50 |
| distill5 | distill4 | ブロックの割合を0.35に戻す | ブロックはどのスナップショットでも24〜25のまま。対戦相手は低下 | 2.19 h, $1.35 |
| distill6 | distill4 | + pull1、プルカウンター | プルカウンターはバッグで6回中6回だが空中では6回中1〜2回。全体で distill4 を上回るものなし | 2.40 h, $1.44 |
distill5 と distill6 は2台のマシンで並べて実行しました。
ゲートとそのバグ
各候補は、複数のスナップショットについて、すべての古いスキル(パンチ、歩き、ブロック、押されながらのブロック、対戦相手、距離)とすべての新しいスキル(body_cross_eval.py、knee_eval.py)でゲートにかけます。distill1 のゲートを信頼できるようになる前に、2つのバグをなくす必要がありました:
- パンチのテストで対戦相手を止めていたのは、環境名が walk、block、opponent のときだけでした。
opponent_kneeでは、パンチのテスト中も対戦相手が攻撃を続けていました。 - チェックポイントの入力を増やすと、パンチのリストにない環境の行動出力がスケールし直されていました。そのせいで、新しい入力を3つ加えただけの未学習の guard18 が歩きで40回中6回になり、教師からのウォームスタートもすべてスケールし直されていました(bodycross2〜4 と膝蹴りの修正版はそれを学び直しました。bodycross4 は最初の3 Mステップで30%落ちました)。
評価用のマシン
| ジョブ | 内容 | マシン時間、コスト |
|---|---|---|
| eval-distill2, punch-distill2, gate-distill2 | distill2 のゲートとパンチ(2台は起動せず、RunPod のポッド1つは EGL で失敗) | 1.03 h, $0.89 |
| eval-distill3, video-distill2 | distill3 のスナップショット4つ、distill2 のスローモーション動画 | 1.79 h, $1.11 |
| eval-distill4, video-distill4(vast.ai と RunPod) | distill4 のスナップショットと動画 | 0.96 h, $0.76 |
| eval-distill56, eval-distill56b | distill5 と distill6 のスナップショット。最初のものは2 hでタイムアウトして空で返ってきたので、今ではランチャーがタイムアウトしたジョブの完了分を回収するようにしている | 5.07 h, $3.49 |
distill2 のメインのマシン(エストニア、約1.2 h、約$0.90)は vast.ai の台帳に載っていません。その数字はランのログから取り、上の表に含めています。
すべてのラン
kakuto-mlのラン記録から作成しています。各ランのマシン、課金された時間とコストです(EC2のランはランのログからの推定値です)。
| ラン | 結果 | マシン | 時間 | コスト |
|---|---|---|---|---|
distill6-2026102510月24日 · ジャブ、クロス、リードフック、リアフック、リードアッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー、プルカウンター、ブロック | 不採用 | 2 | 5.4 | $3.48 |
distill5-2026102510月24日 · ジャブ、クロス、リードフック、リアフック、リードアッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー、ブロック | 不採用 | 2 | 4.2 | $2.80 |
distill4-2026102510月24日 · ジャブ、クロス、リードフック、リアフック、リードアッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー、ブロック · 採用 distill4-131.1M | 採用 | 5 | 3.2 | $2.27 |
distill3-2026102510月24日 · ジャブ、クロス、リードフック、リアフック、リードアッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー、ブロック | 不採用 | 2 | 3.6 | $2.81 |
distill2-2026102410月24日 · ジャブ、クロス、リードフック、リアフック、リードアッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー、ブロック · 採用 distill2-52.4M | 採用 | 11 | 3 | $2.30 |
distill1-2026102410月24日 · ジャブ、クロス、リードフック、リアフック、リードアッパーカット、ボディストレート、奥足の膝蹴り、スイッチニー、ブロック · 採用 distill1-282.5M | 採用 | 2 | 3.4 | $2.61 |
| 学習ラン6回 | 24 | 22.9 | $16.27 |