練可視化:日志、渲染與評(píng)估視頻)
LeRobot 訓(xùn)練可視化日志、渲染與評(píng)估視頻【免費(fèi)下載鏈接】lerobot LeRobot: Making AI for Robotics more accessible with end-to-end learning項(xiàng)目地址: https://gitcode.com/GitHub_Trending/le/lerobot訓(xùn)練跑了一整夜早上打開曲線發(fā)現(xiàn) loss 在中段就平了而你能做的只有盯著終端日志猜原因。LeRobot 訓(xùn)練可視化的核心是把 loss、學(xué)習(xí)率、傳感器流、評(píng)估行為這些黑箱環(huán)節(jié)變成可查詢的圖表、實(shí)時(shí)窗口和可回放的視頻讓有 Python 基礎(chǔ)但剛接觸機(jī)器人學(xué)習(xí)方向的開發(fā)者調(diào)試時(shí)不再靠猜。這里覆蓋三個(gè)工具WandB 指標(biāo)日志、Rerun 實(shí)時(shí)渲染與評(píng)估視頻錄制。三個(gè)模塊按數(shù)據(jù)類型分工WandB 管離散的數(shù)字Rerun 管連續(xù)的幀視頻管需要你回看的行為。模塊用途觸發(fā)時(shí)機(jī)入口文件WandB 指標(biāo)日志記錄標(biāo)量指標(biāo)、checkpoint 與評(píng)估視頻訓(xùn)練循環(huán)按log_freq/ 評(píng)估步common/wandb_utils.pyRerun 實(shí)時(shí)渲染把觀測(cè)/動(dòng)作幀流式推給本地查看器控制循環(huán)的每一幀utils/rerun_visualization.py評(píng)估視頻錄制把環(huán)境 rollout 渲染成 mp4每env_eval_freq訓(xùn)練步scripts/lerobot_eval.py WandB 指標(biāo)日志wandb 日志配置與指標(biāo)歸檔說(shuō)白了WandB 是 LeRobot 訓(xùn)練可視化里數(shù)字的入口它在訓(xùn)練循環(huán)里按log_freq寫標(biāo)量指標(biāo)在保存 checkpoint 和評(píng)估節(jié)點(diǎn)歸檔模型權(quán)重與視頻。啟用它只需要在訓(xùn)練配置里填一段wandb: enable: true project: lerobot-training # 不填這個(gè)日志器根本不會(huì)創(chuàng)建 entity: your-team mode: online初始化條件是一個(gè)合取判斷缺一個(gè)就會(huì)被靜默跳過(guò)見 scripts/lerobot_train.pyif cfg.wandb.enable and cfg.wandb.project and is_main_process(): wandb_logger WandBLogger(cfg) # 終端會(huì)打印可點(diǎn)擊的 run 鏈接 else: wandb_logger None訓(xùn)練循環(huán)里train_tracker匯總的 loss 與學(xué)習(xí)率以train/前綴寫入評(píng)估分支則走eval/通道wandb_logger.log_dict(train_tracker.to_dict(), step) # train/loss、train/lr wandb_logger.log_dict({eval_loss: eval_loss}, step, modeeval)預(yù)期輸出儀表盤上出現(xiàn)train/loss、train/lr、eval_loss的交互式曲線每次運(yùn)行自動(dòng)帶上 policy 類型、seed、數(shù)據(jù)集標(biāo)簽超過(guò) 64 字符會(huì)被截?cái)郼heckpoint 以 model artifact 上傳終端用黃色高亮打印 run 地址點(diǎn)開即可對(duì)比多次實(shí)驗(yàn)。易踩的坑log_dict只接受 int/float/str非標(biāo)量類型只會(huì)打一條 warning 后被丟棄純本地調(diào)試時(shí)把mode設(shè)為offline否則數(shù)據(jù)會(huì)持續(xù)堆積在output_dir/wandb下。標(biāo)量指標(biāo)進(jìn)了儀表盤之后Rerun 接手的就是連續(xù)的幀——那些沒(méi)法壓成一個(gè)數(shù)的傳感器流。 Rerun 實(shí)時(shí)渲染rerun 傳感器數(shù)據(jù)可視化Rerun 不掛訓(xùn)練循環(huán)它掛在錄制與遙操作的控制循環(huán)上每一幀的觀測(cè)和動(dòng)作都推給本地查看器查看器由 SDK 直接拉起不需要你手動(dòng)打開任何界面。入口是統(tǒng)一的分發(fā)函數(shù)由display_mode決定后端# 錄制腳本中初始化一次會(huì)話之后每幀打一次日志 init_visualization(cfg.display_mode, session_namerecording) log_visualization_data(cfg.display_mode, observationobs, actionaction)內(nèi)部按數(shù)據(jù)形狀自動(dòng)分流標(biāo)量變成時(shí)間序列點(diǎn)一維數(shù)組整批合并進(jìn)同一條曲線圖像則先做布局轉(zhuǎn)換再上屏if arr.ndim 3 and arr.shape[0] in (1, 3, 4): arr np.transpose(arr, (1, 2, 0)) # CHW - HWC rr.log(key, rr.Image(arr))單通道深度圖會(huì)被直接套上 Viridis 色圖以DepthImage渲染不需要你預(yù)處理。預(yù)期輸出收到第一幀數(shù)據(jù)時(shí)查看器自動(dòng)搭好網(wǎng)格布局——每個(gè)相機(jī)一路畫面、觀測(cè)與動(dòng)作各一條時(shí)間序列。遙操作時(shí)你能同步看到相機(jī)畫面與每個(gè)關(guān)節(jié)的動(dòng)作曲線在推進(jìn)易踩的坑要先裝可視化依賴pip install lerobot[viz]display_mode也只接受rerun與foxglove兩個(gè)值拼錯(cuò)會(huì)直接拋ValueError。Rerun 給你看的是當(dāng)下的流訓(xùn)練階段你要的是回看行為這就是評(píng)估視頻補(bǔ)位的地方。 評(píng)估視頻錄制訓(xùn)練評(píng)估視頻回放訓(xùn)練掛了仿真環(huán)境cfg.env之后每env_eval_freq步會(huì)把策略放進(jìn)環(huán)境 rollout 一輪逐幀渲染成按 episode 劃分的 mp4首個(gè)視頻同時(shí)上傳 WandB讓指標(biāo)曲線和行為在同一頁(yè)對(duì)照eval_info eval_policy_all( envseval_env, policypolicy, n_episodescfg.eval.n_episodes, videos_dircfg.output_dir / eval / fvideos_step_{step_id}, ) wandb_logger.log_video( eval_info[overall][video_paths][0], step, modeeval, )預(yù)期輸出本地output_dir/eval/videos_step_{step}/下出現(xiàn)eval_episode_*.mp4完整記錄若干個(gè) episode 從初始狀態(tài)到結(jié)束的全過(guò)程WandB 的 run 頁(yè)在對(duì)應(yīng) step 處出現(xiàn)eval/video字段點(diǎn)擊即可內(nèi)嵌預(yù)覽不必下載。易踩的坑eval_stepsheld-out 集上算 eval loss和env_eval_freq環(huán)境 rollout 并出視頻是兩個(gè)獨(dú)立開關(guān)只開前者不會(huì)生成任何視頻。實(shí)戰(zhàn)組合把三個(gè)工具串起來(lái)用LeRobot 訓(xùn)練可視化這三個(gè)工具串起來(lái)用比單看任何一個(gè)都省事。三個(gè)高頻場(chǎng)景對(duì)比兩組超參的訓(xùn)練曲線。同一數(shù)據(jù)集跑兩次只改學(xué)習(xí)率。兩次運(yùn)行的 WandB tag 會(huì)自動(dòng)帶上 policy/seed/dataset天然可區(qū)分不用手動(dòng)打標(biāo)疊加兩條train/loss與eval_loss曲線重點(diǎn)看 warmup 結(jié)束后的分叉位置曲線接近時(shí)再對(duì)比兩次 run 評(píng)估視頻的成功率差異。預(yù)期產(chǎn)出不改一行代碼就能判斷哪組超參收斂更快、后期是否過(guò)擬合。交叉定位異常幀。WandB 曲線上看到 step N 附近 reward 突變。先取outputs/eval/videos_step_N下的視頻回放看行為層面發(fā)生了什么視頻正常的話實(shí)際上問(wèn)題在數(shù)據(jù)側(cè)——用遙操作重跑同一任務(wù)開 Rerun盯 observation 時(shí)間序列里是否有斷流。預(yù)期產(chǎn)出能分清異常來(lái)自策略輸出抖動(dòng)還是某個(gè)傳感器瞬時(shí)丟幀?;胤乓淮问≡u(píng)估的完整軌跡。按 episode 取失敗樣本。eval_info的video_paths與successes一一對(duì)應(yīng)找出successFalse的那一路逐幀看對(duì)應(yīng)的eval_episode_*.mp4對(duì)照該 episode 的 reward 曲線定位失敗時(shí)刻。預(yù)期產(chǎn)出抓取打滑、初始位姿不對(duì)這類失敗原因直接看得出來(lái)。延伸路徑想看流式數(shù)據(jù)源下的訓(xùn)練鏈路examples/training/train_with_streaming.py想把 Rerun 換成瀏覽器端 Foxglove 后端src/lerobot/utils/foxglove_visualization.py不連實(shí)時(shí)流、直接離線瀏覽數(shù)據(jù)集幀src/lerobot/scripts/lerobot_dataset_viz.py。WandB 管數(shù)字、Rerun 管幀、視頻管行為這條 LeRobot 訓(xùn)練可視化的鏈路意味著訓(xùn)練再出問(wèn)題你總能找到一個(gè)能直接看見它的窗口?!久赓M(fèi)下載鏈接】lerobot LeRobot: Making AI for Robotics more accessible with end-to-end learning項(xiàng)目地址: https://gitcode.com/GitHub_Trending/le/lerobot創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考