iT邦幫忙

2025 iThome 鐵人賽

0
AI & Data

Embodied AI - 賦予機器人靈魂與技能系列 第 4

搭建 LeRobot 大作戰 - 肆部曲- 採樣 & 訓練 & 測試

  • 分享至 

  • xImage
  •  

如果軟體跟硬體的部署都好了,就可以測試樣本的採集了 /images/emoticon/emoticon08.gif

採集樣本

lerobot-record \
--robot.type=so101_follower --robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--teleop.type=so101_leader --teleop.port=/dev/ttyACM1 \
--teleop.id=my_awesome_leader_arm \
--dataset.repo_id={USER_NAME}/grasp_box \
--dataset.num_episodes=1 \
--dataset.single_task="grasp the box" \
--dataset.episode_time_s=240
  • num_episodes:可以先設定為 1,確保樣本能確實搜集數據
  • episode_time_s:可以拉長一點,因為在執行的時候,episode_time_s 太短的話,有時候採集時間太長,則該次的採樣會提早結束
  • single_task:可以自己決定,如果使用到 SmolVLA,則該參數為輸入的文字資訊

可以直接輸入以下的指令,就可以拉取該資料集進行訓練了

微調訓練

ACT 微調

lerobot-train \  
--dataset.repo_id={USER_NAME}/grasp_box \  
--policy.type=act \  
--policy.device=cuda \  
--output_dir=outputs/train/act_model \  
--policy.repo_id={USER_NAME}/act_model \  
--job_name=act_model \  
--dataset.video_backend=pyav \  
--wandb.enable=true \  
--save_checkpoint=true \  
--steps=100000 \  
--save_freq=5000 \  
--batch_size=72

SmolVLA 微調

lerobot-train \
--dataset.repo_id={USER_NAME}/grasp_boxes_09 \
--policy.type=smolvla \
--output_dir=outputs/train/smolvla_raw_model \
--policy.repo_id={USER_NAME}/smolvla_raw_model \
--dataset.video_backend=pyav \
--job_name=smolvla_raw_model \
--policy.device=cuda \
--wandb.enable=true \
--steps=100000 \
--save_freq=5000 \
--save_checkpoint=true \
--batch_size=72
  • 實際微調時,發現 ACT 訓練比 SmolVLA 快速,建議第一次可以先用 ACT 做微調
  • save_checkpoin:一定要設置,每個 save_freq 會保留儲存參數
  • save_freq:根據頻率保存參數,但要注意如果數字設定太小,儲存次數太多,會很佔據硬體空間,注意如果空間不夠訓練會被中斷掉
  • batch_size:根據 GPU 大小自行調整

也可以不選擇推送到 huggingface ,只在本地端保留參數,可添加參數

--policy.push_to_hub=false

最後指令的前面加上 nohup ,最後加上 &,讓服務可以離線訓練

模型測試

我自己是因為訓練到一半,就會想實際測試,所以我會透過 scp 的方式,從本地端移動模型到自己的電腦,在取 last 的版本做測試。你也可以等全部模型訓練完,再從 huggingface 上拉模型下來測試。

現在,你可以使用 checkpoints/last/pretrained_model 也就是最新訓練的參數模型來做測試,這邊可以先測試 ACT

lerobot-record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_awesome_follower_arm \
--policy.path=outputs/train/act_model/checkpoints/last/pretrained_model \
--display_data=true \
--dataset.repo_id={USER_NAME}/eval_grasp \
--dataset.num_episodes=1 \
--dataset.single_task="grasp the box" \
--dataset.episode_time_s=240
  • policy.path:請指定使用 checkpoints 的 last 版本

如果到這邊測試可以被執行,就代表大功告成了!

請注意:如果是使用 SmolVLA 的模型,請打開 checkpoints/last/pretrained_model/config.json 進行編輯

cd lerobot/outputs/train/smolvla_raw_model/checkpoints/last/pretrained_model
vim config.json

刪掉 "rtc_config": null 這一行
以及刪除掉 "max_period": 4.0, 後面的逗點, -> "max_period": 4.0,

如果直接執行 rtc_config 會發生錯誤,不確定該錯誤什麼時候會被修復

總結

一開始採樣會花很多時間在「工人訓練」,必須說,採樣有很多技巧在裡面,例如,盡可能把意圖明確的動作切割開來,就很像人類經過吧台拿東西,可以邊移動經過、降速、拿取、提高速度離開,對機器人來說,初步的階段可以把東西,一件事情在一個時段完成,千萬別急著一開始就把所有動作縮在一個時間裡面,初步完成了,確保模型可 work,再把較困難的動作組合起來也不遲。

參考文章 → Imitation Learning on Real-World Robots


上一篇
搭建 LeRobot 大作戰 - 參部曲 - 硬體部署
下一篇
搭建 LeRobot 大作戰 - 終部曲- 成果展示
系列文
Embodied AI - 賦予機器人靈魂與技能5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言