REMOTE INFERENCE / π0.5-DROID / A40
Mac から送った指示が π0.5 に届いて返ってくるまで

Mac のテスト用プログラムが画像2枚・関節角度・指示文を送り、Runpod の GPU マシンで π0.5 が動きを計算して返す。20回の平均で、1往復の時間を区間ごとに分けた。▶ を押すと、10倍遅くした速さで1往復を再生する。

Macclient
前後処理server
π0.5A40
Pod:8000
0.0 ms待機中
通信と受け渡し 235.3
前後 58.3
π0.5 97.1
π0.5 そのものが動きを計算する時間(policy_infer_ms)。20回のばらつきは 0.4ms
97.1 ms
サーバーの中の前後処理(画像の前処理・数値の正規化など)。server_infer_ms 155.4 から π0.5 の分を引いた値
58.3 ms
Mac と Pod の間の通信(SSH トンネル)と、データの送り出し・受け取り。client_infer_ms 390.7 から server_infer_ms を引いた値
235.3 ms

通信の区間は往路と復路に分けて測っていない。再生では半分ずつに分けて動かしている。送った画像はランダムな点の集まりで、GPU は A40。

最初の1回だけ、π0.5 を GPU で動かせる形に変換する処理(コンパイル)が走る。その間サーバーは通信の処理を止めて計算を待つ。Mac 側の websockets は初期設定で約20秒ごとに「生きているか」を確かめ、20秒以内に返事がなければ接続を切る。▶ で時間を進める。

Mac 側で ping_interval=None を渡す(修正2)
Mac
client
送信
ping
返事を待つ 20秒
1011 切断
結果を受信
Pod
server
コンパイル中(通信の処理が止まる)
0s1020304050
接続して最初の観測データを送った直後。

コンパイルにかかった時間は測っていない(右端をぼかしている)。ping を送る間隔と待ち時間の初期値は、websockets 17.2 で ping_interval=20・ping_timeout=20 と確認した値。修正2では確認そのものをしないので、サーバーが本当に止まったときも Mac は待ち続ける。