加速訓練¶
強化學習可能是一個計算上困難的問題,它既樣本效率低下,又難以擴充套件到更復雜的環境。在本頁中,我們將討論加速訓練的通用策略:向量化環境、最佳化訓練和演算法啟發式。
向量化環境¶
通常在訓練中,智慧體從單個環境中取樣,將每秒的步數(樣本數)限制為環境的速度。透過同時在多個環境中進行操作,可以顯著加快訓練速度,這被稱為向量化環境,即同一環境的多個例項並行執行(在多個 CPU 上)。Gymnasium 提供了兩個內建類來向量化大多數通用環境:gymnasium.vector.SyncVectorEnv 和 gymnasium.vector.AsyncVectorEnv,它們可以使用 gymnasium.make_vec() 輕鬆建立。
需要注意的是,向量化環境可能需要修改您的訓練演算法,並且在子環境數量非常龐大的情況下,可能導致訓練不穩定。
最佳化訓練¶
加速訓練通常可以透過最佳化程式碼來實現,特別是對於使用 GPU 進行訓練的深度強化學習,這涉及到資料在 RAM 和 GPU 記憶體之間的傳輸。
對於用 PyTorch 和 Jax 編寫的程式碼,它們提供了 jit(即時編譯)程式碼排序的功能,以便在 CPU、GPU 和 TPU(對於 Jax)上減少訓練時間。
演算法啟發式¶
學術研究人員一直在探索新的最佳化方法,以提高智慧體效能並減少訓練智慧體所需的樣本數量。特別是,樣本高效強化學習是強化學習的一個專業子領域,它探索訓練演算法和環境啟發式方法,以減少智慧體為最大化效能所需的觀測次數。由於該領域持續改進,我們建議讀者查閱綜述論文和最新研究,以瞭解當前最有效的演算法改進方法。