Activity, over time
Daily GitHub activity and social mentions.
Mentions
Daily posts linking to this repository
Attention
Daily stars & forks
Star accumulation
Cumulative stars
Pull requests
Daily opens & merges
Conversations
Daily issues & comments
Community
Daily accounts & reviews
Trending history
Daily top 10 · last 90 days · UTC
Mentions
Stars
Forks
Contributors
Latest stargazers
The last 10 distinct accounts we observed this year.
Most active participants
PR, issue, comment & review events in the past year.
Packages
Scan pending.
Live mentions badge
Show how many posts mention your project in the last 30 days.
Live mentions · last 30 days
Mentions
Physical AI Studio - インテル製 CPU で始める模倣学習 はじめに 2026年5月にインテルからオープンソースの模倣学習フレームワークのPhysical AI Studioがリリースされました。 模倣学習のフレームワークとして Hugging Face の Lerobot が広く使われていますが、Physical AI Studio は LeRobot をベースとした機能を GUI から利用できるため、初めて模倣学習に取り組むユーザーにも扱いやすくなっています。また、インテル製の内蔵 GPU に対応しているため、ある程度のスペックの PC があれば模倣学習を始めることができます。 他に次のような特徴があります。 - エンドツーエンドのフレームワークで、ロボットの設定、データ収集、モデルの学習 (ファインチューニング)、テスト推論までを実行できる。 - GUI が用意されているため、エンジニアでなくても直感的に利用できる。 - また GUI だけでなく CLI、Python API も用意されている。 - 学習したモデルは OpenVINO™、ONNX、PyTorch の形式で出力して使用できる。 この記事では Physical AI Studio を使って、ロボットアーム(SO-ARM101)で模倣学習をする手順を紹介します。 模倣学習の流れと、その中での Physical AI Studio の役割を図にすると下のようになります。 !physical_ai_studio_flow.png 2026年9月と10月に 2 度バージョンアップされており、新たな機能や AI モデルが追加されています。 以前のバージョンをダウンロード済みの方は最新版に移行するのをお勧めします。 内容 - [Physical AI Studioの起動](#physical-ai-studio-の起動) - [模倣学習環境の作成](#模倣学習環境の作成) - [データセットの記録](#データセットの記録) - [学習 (ファインチューニング)](#学習-ファインチューニング) - [推論を試してみる](#推論を試してみる) - [結果の比較](#結果の比較) - [まとめ](#まとめ) - [今回使用したハードウェアの構成](#今回使用したハードウェアの構成) Physical AI Studio の起動 Physical AI Studio の GUI は Docker を使って起動するのが簡単なのでお勧めです。 AI モデルのファインチューニングや推論も含めて全ての手順を実行するためには、ネイティブで Linux がインストールされた PC を用意してください。インテル® Core™ Ultra シリーズ 3 プロセッサーなど、高性能な内蔵 GPU を搭載したプロセッサーと最低 32GB (推奨は 64GB) のメモリーが必要です。データの収集だけであれば、WSL を利用して Windows のノートブック PC で実行することも可能です。 ここでは Ubuntu 24.04 LTS を仮定して説明します。 1. Docker をインストールする - Docker Engine 24.0以上、Docker compose v2.24.0以上が必要です。 - Dockerのインストールはインテル製CPUを搭載したプラットフォームであれば、Dockerのドキュメント通りに進めれば多くの場合は問題なく導入できます。 - Post installation stepも忘れず実行してください。 2. oneAPI Level Zero および OpenCL™ ドライバー向けインテル® グラフィックス・コンピュート・ランタイムをインストールする - インテル製の (内蔵) GPU を Physical AI Studio から使うためのドライバーが必要です。 - Intel compute-runtimeに従ってインストールしてください。 3. Physical AI Studio レポジトリをクローンして、設定スクリプトを実行します - READMEの手順通り以下のコマンドを実行します。 ```bash git clone open-edge-platform/physical-ai-studio cd physical-ai-studio/application/docker ./setup-devices.sh --xpu # or use --cuda, --cpu ``` - 初めて./setup-devices.sh を実行すると下のような警告が表示されます。 - メッセージの指示通りに usermod コマンドを実行し、ログインしなおします。 ``` [warn] -> Run: sudo usermod -aG dialout user_name (then re-login) [warn] -> Run: sudo usermod -aG video user_name (then re-login) [warn] -> Run: sudo usermod -aG plugdev user_name (then re-login) [warn] -> Run: sudo usermod -aG render user_name (then re-login) ``` 4. Physical AI Studio コンテナの起動 - 同じフォルダに docker-compose.yaml があるので、下のコマンドでコンテナを起動します。 - 初回はコンテナイメージの作成に数分かかりますが、2 回目以降は数秒で起動するはずです。 - コンテナを起動する前に、ロボットアームとカメラを PC に接続しておいてください。 docker compose up -d - コンテナの停止は次のコマンドを使います。 docker compose down - 「-v」オプションを付けて停止するとコンテナがクリーンアップされます。 - 問題が起きた場合などに有効な場合がありますが、記録したデータセットやトレーニング済みモデルが消去されるので必要なものは予めエクスポートしておいてください。 docker compose down -v 5. Physical AI Studio の GUI にアクセス - コンテナの起動後、ブラウザで「localhost」を開くと、Physical AI Studio の GUI にアクセスできます。 - 下のような画面が表示されれば OK です。表示されなければ数秒空けてリロードしてください。 !opening_gui.png 模倣学習環境の作成 次いで模倣学習環境を作成します。プロジェクトの作成、ロボットとカメラの設定、環境の設定を行います。 1. プロジェクトの作成 - GUI が起動したら最初にプロジェクトを作成します。 - 「Projects」タブを選んで「Create new project」をクリックします。 - 「Project name」に適当な名前を入力して保存してください。(例: test project) 2. ロボットの設定 - 次いでロボットアームの設定を行います。Robots - Robot armsタブを選んで「+Configure new robot」ボタンを押します。 - 表示されるロボットは3種類ですが追加することも可能です。ここではSO101 Follower、SO101 Leaderの順に設定をします。 - SO101 (FollowerとLeader) - Trossen WidowX AI (FollowerとLeader) - Trossen Bimanual WidowsX AI (FollowerとLeader) !configure_new_robot.png - SO101 は組み立て後に各モーターに ID を設定する必要がありますが、ここでは設定済みとして進めていきます。 - 設定する項目は「Robot type」、「Robot name」、「Connection」の 3 つです。 - 設定例 |Robot type|Robot name|Connection| |----------|----------|----------| |SO101 Follower|Bob|/dev/ttyACM1| |SO101 Leader|Kevin|/dev/ttyACM0| - Connection はどちらかを選択して「Identify」ボタンを押すと、ロボットのグリッパーが動くので見分けがつきます。 - 「Begin Setup」ボタンを押すとキャリブレーション画面に移ります。 - キャリブレーションが必要なのは一度だけです。2 回目以降はスキップしてください。 - ロボットを GUI に表示されているホームポジションまで手で動かし、「Apply Homing Offset」ボタンを押します。 - 全ての関節を順に可動域全体にわたって動かし、終わったら「Finish Recording」ボタンを押します。 - 「Save Robot」ボタンを押すとロボットアームの設定は完了です。 !robot_setup_done.png 3. カメラの設定 - 次はカメラの設定です。ここではロボットの上部に固定した環境全体の記録用と、ロボットの手先の記録用の 2 つのUSBカメラを使っています。 - Robots - Camerasタブを選んで「+Configure new camera」ボタンを押します。 !configure_new_camera.png - 設定する項目は「Name」、「Camera」、「Resolution」、「Frames per second (FPS)」の 4 つです。 - 設定例 |Name|Camera|Resolution|Frames per<br>second(FPS)| |----|------------|----------|-----------------| |Top |EMEET SmartCam C960: EMEET Smar|640 x 480|30| |Hand|Innomaker-U20CAM-1080p-S1: Inno|640 x 480|30| - Resolution(解像度)は「640 x 480」程度で十分です。 - 「Add camera」ボタンを押すとカメラの設定は完了です。 !camera_setup_done.png 4. 環境の作成 - 次いでロボットとカメラを含んだ学習環境の作成を行います。Robots - Environmentsタブを選んで「+Configure new environment」ボタンを押します。 - 設定する項目は「Name」、「Robot」、「Add camera」の3つです。 - 設定例 |Name|Robot<br> (Follower)|Robot<br> (Leader, optional)|Camera|Camera| |----|----------------|------------------------|------|------| |Top |Bob|Kevin|Top|Hand| データセットの記録 環境の構築ができたら模倣学習のデータセットの記録を行います。なるべく簡単な処理から始めるのをお勧めします。 1. データセットの作成 - 「Datasets」タブを選んで「Create new dataset」ボタンを押します。 - 作成するデータセットの設定画面がでるので、「Environment」、「Dataset name」、「Task」を入力します。 - 今回はキャンディーをカップに入れる動作を学習します。 - 設定例 |Environment|Dataset name|Task| |-----------|------------|----| |test env|candy|pick up candies| 2. エピソードの収録 - 「Start recording」ボタンを押すとエピソード (実演データ) を収録できるようになります。初期化に 10 秒ほどかかります。 - 初期化が終わると下のように2台のカメラと、Follower アームが GUI に表示されます。 !ready_to_record.png - Leader を動かして Follower が追従するのを確認したら、収録前に実演をスムーズにできるように何度か試しておきましょう。 - スムーズに動かせるようになったら「Start episode」ボタン (または右カーソルキー) を押して収録します。 - 実演が成功したら「Accept」ボタン(または右カーソルキー)を押してエピソードとして保存します。 - 失敗した場合は「Discard」ボタン (または左カーソルキー) を押してキャンセルします。 - キャンディーの位置や向きを変えながら、50 から 100 程度のエピソードを収録するとトレーニングに使えるデータセットとなります。 !record_episode.gif - 記録したエピソードは下のように再生して確認できます。「Timeline」を選ぶと各関節の動きがグラフで表示されます。 !check_episode.gif 学習 (ファインチューニング) 十分なエピソードが収録できたら、モデルのファインチューニングに進みます。 1. モデルの選択 - 「Model」タブを選んで「Train model」ボタンを押します。 - データセットとモデルを選択する画面が開くので、作成したデータセット (candy) とモデルを選択します。今回は ACT を使います。 - ACT と SmolVLA はインテル® Core™ Ultra シリーズ 3 プロセッサーなど、強力な内蔵 GPU を持つ CPU を搭載した PC でファインチューニングできますが、他の大きなモデルは外付け GPU が必要です。 - SmolVLA や Pi0.5 などのモデルは Hugging Face Hub からダウンロードするため、トークンの作成とレポジトリへのリードアクセス権が必要です。公式のドキュメントを参照してください。 !choose_model.png 2. 学習の設定 - 次の項目を設定できます。最初は初期値で試すのをお勧めします。 |Parameters|Default Values|Note| |----------|------|----| |Batch size|8|1学習ステップで使う入力データ数を指定します。<br>増やすと学習時間を短縮できますがメモリ不足に陥る可能性があります。| |Max Epochs|5|学習時にデータセットを何周使うかを設定します。<br>増やすと学習時間が長くなりますが、ある程度までは増やすと結果が向上します。| |Data Workers|Auto|並列プロセス数を指定します。<br>増やすと学習時間を短縮できますが、メモリ不足に陥る可能性があるので Auto にするのが良さそうです。| |Precision|32-bit|学習時のパラメータの精度を指定します。<br>他に BF16 Mixed と BF16 True が選択できます。<br>32-bit で始めて、BF16 Mixed を比較に使うのが良さそうです。| |Compile model|No|Torch compileをするかどうかの指定です。<br>指定をすると高速で学習できるようにモデルが変換されます。| |Augment Images|No|映像データに加工を加えてデータ数を増やす設定です。<br>明るさなど周辺環境に左右されないモデルを作成できる可能性があります。| !training_settings.png 3. 出力するモデルのフォーマットの指定 - モデルの推論を行う際のフォーマットを指定します。デフォルトで全てチェックされているのでそのままで構いません。 !export_settings.png 4. 学習の開始 - 「Train」ボタンを押すと学習が始まります。 - ACT モデルを 50 エピソードのデフォルト設定でトレーニングすると、インテル® Core™ Ultra シリーズ 3 プロセッサー搭載のミニ PC で30~40 分程度かかりました。 !training_progress.png 5. 学習結果の確認 - 学習が終わったら「Model Metrics」を開いてロスを確認しておきます。 - デフォルトの 5 エポックだと最後までロスが下がり続けており、もう少し続けても良さそうです。 !model_metrics.png 推論を試してみる 本番では Physical AI Studio で学習したモデルを OpenVINO™ Physical AI の推論環境で実行しますが、Physical AI Studio で推論をしてモデルを評価することもできます。 1. 推論を実行 - 学習済みモデルの右にある「Run model」をクリックすると、推論バックエンドを選択する画面がでるので「OpenVINO」を選択して「Start」を押します。 !run_model.png !inference_backend.png - 初期化に 10 秒ほどかかりますが、下の画面に切り替わったら「Play」を押して推論を実行します。 !play_model.png 2. 実行結果 - 学習と同じようにキャンディーとカップを置いた状態で、SO101 が動きを再現できれば成功です。 !playing_model.gif 結果の比較 1. 学習時間の比較 - 学習設定がどのくらい学習時間とロスに影響するかを比較しました。 - ロス (validation loss) はログから読み取ることができます。 ::: note 表を横スクロールしてご覧ください。 ::: |エピソード数|モデル<br>(Policy)|Batch<br>size|Max<br>Epochs|Data<br>Workers|Precision|Compile<br>model|Augment<br>images|学習時間|Validation<BR>loss|コメント| |:---------:|:-----------:|:--------:|:--------:|:----------:|:-------:|:-----------:|:------------:|------:|:-:|:-------| |50|ACT| 8| 5|Auto|32-bit |-|-| 35m58s|0.345|初期設定| |50|ACT| 8|10|Auto|32-bit |-|-|1h11m02s|0.292|エポック数に応じて時間も倍になる。ロスは下がる。| |50|ACT| 8| 5| 16|32-bit |-|-| 36m04s|0.358|ワーカーの数は時間にもロスにも影響なさそう。| |50|ACT| 8| 5|Auto|BF16 Mixed|-|-| 35m55s|0.368|BF16 Mixed の精度は時間にもロスにも影響なさそう。| |50|ACT| 8| 5|Auto|BF16 True |-|-| 20m43s|3.309|BF16 True の精度は短縮できるがロスが大きく悪化する。| |50|ACT| 8| 5|Auto|32-bit |X|-| 30m14s|0.362|コンパイルすると 20% くらい短縮でき、ロスが少し悪化する。| |50|ACT| 8| 5|Auto|32-bit |-|X| 37m12s|0.330|Augment images を使うと時間が若干長くなり、ロスが少し悪化する。| |50|ACT|16| 5|Auto|32-bit |-|-| 32m15s|0.557|バッチサイズを増やすと短縮できるがロスが悪化する。| |50|ACT| 4| 5|Auto|32-bit |-|-| 43m30s|0.336|バッチサイズを減らすと時間がかかるがロスは改善する。| |$\hspace{5em}$|$\hspace{4em}$|$\hspace{3em}$|$\hspace{3em}$|$\hspace{4em}$|$\hspace{5em}$|$\hspace{5em}$|$\hspace{5em}$|$\hspace{5em}$|$\hspace{5em}$|$\hspace{15em}$| 2. 成功率の比較 - 机の上にテープで付けた 5 つの目印の上にキャンディーの向きを縦と横に変えて置き、モデルごとに 10 回ずつ試行しました。 !mark_on_desk.png - エピソード数は 50 回に加えて 100 回と 150 回も追加しています。 - 10 回の試行なのでばらつきが大きいですが、エピソードとエポック数を増やす方が成功率が高くなる傾向にあります。 ::: note 表を横スクロールしてご覧ください。 ::: |エピソード数|モデル<br>(Policy)|Batch<br>size|Max<br>Epochs|Data<br>Workers|Precision|Compile<br>model|Augment<br>images|学習時間|Validation<BR>loss|成功率| |:---------:|:-----------:|:-------:|:--------:|:----------:|:-------:|:-----------:|:------------:|------:|:-:|:----:| |50|ACT|8| 5|Auto|32-bit|-|-| 35m58s|0.345|2/10| |50|ACT|8|10|Auto|32-bit|-|-|1h11m02s|0.292|3/10| |50|ACT|8|20|Auto|32-bit|-|-|2h21m56s|0.219|1/10| |||||||||||| |100|ACT|8| 5|Auto|32-bit|-|-|1h17m47s|0.247|3/10| |100|ACT|8|10|Auto|32-bit|-|-|2h19m51s|0.213|4/10| |100|ACT|8|20|Auto|32-bit|-|-|4h39m26s|0.186|6/10| |||||||||||| |150|ACT|8| 5|Auto|32-bit|-|-|1h44m51s|0.221|4/10| |150|ACT|8|10|Auto|32-bit|-|-|3h28m06s|0.206|6/10| |150|ACT|8|15|Auto|32-bit|-|-|5h11m58s|0.180|4/10| |150|ACT|8|20|Auto|32-bit|-|-|6h54m02s|0.196|4/10| |||||||||||| |$\hspace{5em}$|$\hspace{4em}$|$\hspace{4em}$|$\hspace{4em}$|$\hspace{5em}$|$\hspace{5em}$|$\hspace{4em}$|$\hspace{4em}$|$\hspace{5em}$|$\hspace{5em}$|$\hspace{3em}$| それぞれのモデルの実行時の映像です。 <details> <summary>50エピソード</summary> |Epochs=5|Epochs=10|Epochs=20| |:------:|:-------:|:-------:| |!50x5.gif|!50x10.gif|!50x20.gif| </details> <details> <summary>100エピソード</summary> |Epochs=5|Epochs=10|Epochs=20| |:------:|:-------:|:-------:| |!100x5.gif|!100x10.gif|!100x20.gif| </details> <details> <summary>150エピソード</summary> |Epochs=5|Epochs=10|Epochs=15|Epochs=20| |:------:|:-------:|:-------:|:-------:| |!150x5.gif|!150x10.gif|!150x15.gif|!150x20.gif| </details> まとめ Physical AI Studio を使って、PC で ARM SO101 の模倣学習の一連の流れを試すことができました。 GUI の指示に従って進めるだけで初心者でも簡単に Physical AI を体験することができることが、お分かりいただけたかと思います。 推論までを Physical AI Studio 上で行いましたが、独自のアプリケーションに組み込む場合などは、OpenVINO™ Physical AI ランタイムを使う必要があります。 次回は今回学習したモデルを出力して、OpenVINO™ Physical AI で推論する方法を紹介したいと思います。 今回使用したハードウェアの構成 この解説記事で使用したハードウェアとソフトウェアは次の構成です。 - ロボットアーム SO-ARM101 Pro Kit - インテル® Core™ Ultra X7 プロセッサー 358H 搭載ミニPC、64GB メモリー、1TB SSD - 全体記録用ウェブカメラ - カメラアーム - ロボットアーム取り付け用カメラ SO-ARM101 やカメラの USB ケーブルは短いので延長ケーブルなどがあると便利でした。