深度強化學習課程文件

訓練我們的機器人

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

訓練我們的機器人

為了開始訓練,我們首先需要在安裝了 Godot RL Agents 的相同 venv / conda 環境中安裝 imitation 庫,使用命令:pip install imitation

從 Godot RL 倉庫下載模仿學習指令碼的副本。

使用以下引數執行訓練:

sb3_imitation.py --env_path="path_to_ILTutorial_executable" --bc_epochs=100 --gail_timesteps=1450000 --demo_files "path_to_expert_demos.json" --n_parallel=4 --speedup=20 --onnx_export_path=model.onnx --experiment_name=ILTutorial

將 env 路徑設定為匯出的遊戲,將 demo 檔案路徑設定為錄製的 demos。如果您有多個 demo 檔案,請用空格分隔它們,例如 --demo_files demos.json demos2.json

您還可以為 --gail_timesteps 設定大量時間步,然後使用 CTRL+C 手動停止訓練。我用這種方法在獎勵開始接近 3 時停止了訓練,此時 total_timesteps | 1.38e+06。這大約花了 41 分鐘,而 BC 預訓練在我的 PC 上使用 CPU 訓練大約花了 5.5 分鐘。

要在訓練期間觀察環境,請新增 --viz 引數。在 BC 訓練期間,環境將凍結,因為此階段除了獲取有關觀察和動作空間的一些資訊外,不使用環境。在 GAIL 訓練階段,環境渲染將更新。

以下是使用 tensorboard 顯示的日誌中的 ep_rew_meanep_rew_wrapped_mean 統計資料,我們可以看到它們在這種情況下非常匹配

training results
您可以在 `logs/ILTutorial` 中找到日誌,該路徑是相對於您開始訓練的路徑。如果進行多次執行,請在每次執行之間更改 `--experiment_name` 引數。

儘管在此處設定環境獎勵並非必要且未用於訓練,但我們實現了一個簡單的稀疏獎勵來跟蹤成功。掉出地圖、掉入水中或陷阱會使 reward += -1,而啟用槓桿、收集鑰匙和開啟寶箱都會使 reward += 1。如果 ep_rew_mean 接近 3,我們就取得了不錯的結果。ep_rew_wrapped_mean 是 GAIL 判別器的獎勵,它不能直接告訴我們代理在解決環境方面有多成功。

讓我們測試訓練好的智慧體

訓練結束後,您會在啟動訓練指令碼的資料夾中找到一個 model.onnx 檔案(您也可以在控制檯的訓練日誌中,接近末尾處找到 .onnx 檔案的完整路徑)。將其複製到 Godot 遊戲專案資料夾。

開啟 onnx 推理場景

這個場景,像演示錄製場景一樣,只使用了一個關卡副本。它的 Sync 節點模式也設定為 Onnx Inference

點選 Sync 節點,並將 Onnx Model Path 屬性設定為 model.onnx

onnx inference scene

按 F6 啟動場景,讓我們看看智慧體學到了什麼!

訓練好的智慧體影片

看來智慧體能夠從兩個位置(左平臺或右平臺)收集鑰匙,並很好地複製了錄製的行為。如果您得到了類似的結果,恭喜您,您已成功完成本教程! 🏆👏

如果您的結果差異很大,請注意,錄製演示的數量和質量可能會影響結果,調整 BC/GAIL 階段的步數以及修改 Python 指令碼中的超引數可能會有所幫助。此外,執行之間也存在一些差異,因此即使設定相同,結果有時也會略有不同。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.