首頁 > 科技週邊 > 人工智慧 > 開始使用Torchrl進行深度加固學習

開始使用Torchrl進行深度加固學習

Joseph Gordon-Levitt
發布: 2025-03-01 09:43:09
原創
425 人瀏覽過

Getting Started with TorchRL for Deep Reinforcement Learning

從自動駕駛汽車到復雜的語言模型,

增強學習(RL)解決了複雜的問題。 RL代理通過從人類反饋(RLHF)學習的強化學習,根據人類的投入來調整其反應。儘管建立了像Keras和Tensorflow這樣的Python框架,但Pytorch和Pytorch Lightning主導了新項目。 開源庫Torchrl,用Pytorch簡化了RL的開發。該教程演示了Torchrl設置,核心組件和構建基本RL代理。我們將探討諸如近端策略優化(PPO)等預構建算法以及必需的日誌記錄和監視技術。

>

設置Torchrl

本節指導您安裝和使用Torchrl。

>先決條件

在安裝Torchrl之前,請確保您有:

> pytorch:torchrl的基礎。

體育館:進口RL環境。 使用0.29.1版本(截至2025年1月,後來的版本與Torchrl具有兼容性問題 - 請參見相關的GIT討論頁面)。
  • > pygame:用於模擬類似遊戲的RL環境(例如Cartpole)。
  • 張緊:提供一個張量容器以進行有效的張量操作。
  • >安裝先決條件:
  • >安裝Torchrl

>使用PIP安裝Torchrl。 建議個人計算機或服務器為CONDA環境。

!pip install torch tensordict gymnasium==0.29.1 pygame
登入後複製
登入後複製

驗證

>通過在python shell或筆記本中導入

來測試安裝。使用
!pip install torchrl
登入後複製
登入後複製
來驗證環境兼容性(例如,cartpole):>

成功的安裝顯示:

torchrl check_env_specs()鍵Torchrl組件

import torchrl
from torchrl.envs import GymEnv
from torchrl.envs.utils import check_env_specs

check_env_specs(GymEnv("CartPole-v1"))
登入後複製
登入後複製
在創建代理之前,讓我們檢查Torchrl的核心元素。 >

環境

Torchrl為各種環境提供一致的API,將特定於環境的功能包裝到標準包裝器中。 這簡化了交互:
<code>[torchrl][INFO] check_env_specs succeeded!</code>
登入後複製
登入後複製

> torchrl將狀態,動作和獎勵轉換為pytorch張量。

>預處理/後處理(歸一化,縮放,格式化)很容易應用。

>使用

>創建體育館環境:

  • 變換
  • 使用
  • >
使用附加組件(例如,步驟計數器)增強環境

GymEnv通過

實現歸一化:
env = GymEnv("CartPole-v1")
登入後複製
登入後複製
>

使用

>。 TransformedEnv>代理和政策

from torchrl.envs import GymEnv, StepCounter, TransformedEnv
env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter())
登入後複製
登入後複製
>代理使用策略根據環境狀態選擇操作,旨在最大化累積獎勵。

使用ObservationNorm創建一個簡單的隨機策略:

!pip install torch tensordict gymnasium==0.29.1 pygame
登入後複製
登入後複製

構建您的第一個RL代理

本節演示了構建簡單的RL代理。

導入必要的軟件包:

!pip install torchrl
登入後複製
登入後複製

>步驟1:定義環境

我們將使用Cartpole環境:

import torchrl
from torchrl.envs import GymEnv
from torchrl.envs.utils import check_env_specs

check_env_specs(GymEnv("CartPole-v1"))
登入後複製
登入後複製

定義超參數:

<code>[torchrl][INFO] check_env_specs succeeded!</code>
登入後複製
登入後複製

步驟2:創建策略

定義一個簡單的神經網絡策略:

env = GymEnv("CartPole-v1")
登入後複製
登入後複製

>步驟3:訓練代理

創建一個數據收集器並重播緩衝區:

from torchrl.envs import GymEnv, StepCounter, TransformedEnv
env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter())
登入後複製
登入後複製

定義訓練模塊:

from torchrl.envs import Compose
base_env = GymEnv('CartPole-v1', device=device) 
env = TransformedEnv( 
    base_env, 
    Compose(
        ObservationNorm(in_keys=["observation"]), 
        StepCounter()
    )
)
登入後複製

實施訓練循環(簡化為簡短):

import torchrl
import torch
from tensordict import TensorDict
from torchrl.data.tensor_specs import Bounded

action_spec = Bounded(-torch.ones(1), torch.ones(1))
actor = torchrl.envs.utils.RandomPolicy(action_spec=action_spec)
td = actor(TensorDict({}, batch_size=[]))
print(td.get("action"))
登入後複製

步驟4:評估代理

>添加評估和記錄到訓練循環(簡化):

import time
import matplotlib.pyplot as plt
from torchrl.envs import GymEnv, StepCounter, TransformedEnv
from tensordict.nn import TensorDictModule as TensorDict, TensorDictSequential as Seq
from torchrl.modules import EGreedyModule, MLP, QValueModule
from torchrl.objectives import DQNLoss, SoftUpdate
from torchrl.collectors import SyncDataCollector
from torchrl.data import LazyTensorStorage, ReplayBuffer
from torch.optim import Adam
from torchrl._utils import logger as torchrl_logger
登入後複製
打印訓練時間和情節結果:

env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter())
torch.manual_seed(0)
env.set_seed(0)
登入後複製
(已參考的Datalab工作簿中可用完整的DQN實現。)>

探索預構建的算法

torchrl提供預構建算法(DQN,DDPG,SAC,PPO等)。 本節使用ppo。

導入必要的模塊:

定義超參數:

INIT_RAND_STEPS = 5000
FRAMES_PER_BATCH = 100
OPTIM_STEPS = 10
EPS_0 = 0.5
BUFFER_LEN = 100_000
ALPHA = 0.05
TARGET_UPDATE_EPS = 0.95
REPLAY_BUFFER_SAMPLE = 128
LOG_EVERY = 1000
MLP_SIZE = 64
登入後複製

(剩餘的PPO實現,包括網絡定義,數據收集,損耗功能,優化和培訓循環,遵循與原始響應相似的結構,但此處省略了。

可視化和調試
value_mlp = MLP(out_features=env.action_spec.shape[-1], num_cells=[MLP_SIZE, MLP_SIZE])
value_net = TensorDict(value_mlp, in_keys=["observation"], out_keys=["action_value"])
policy = Seq(value_net, QValueModule(spec=env.action_spec))

exploration_module = EGreedyModule(
    env.action_spec, annealing_num_steps=BUFFER_LEN, eps_init=EPS_0
)
policy_explore = Seq(policy, exploration_module)
登入後複製

>使用張板的監視訓練進度:

>可視化:

collector = SyncDataCollector(
    env,
    policy_explore,
    frames_per_batch=FRAMES_PER_BATCH,
    total_frames=-1,
    init_random_frames=INIT_RAND_STEPS,
)
rb = ReplayBuffer(storage=LazyTensorStorage(BUFFER_LEN))
登入後複製
調試涉及檢查環境規格:

tensorboard --logdir="training_logs"

>樣本觀測和動作:

loss = DQNLoss(value_network=policy, action_space=env.action_spec, delay_value=True)
optim = Adam(loss.parameters(), lr=ALPHA)
updater = SoftUpdate(loss, eps=TARGET_UPDATE_EPS)
登入後複製
>通過呈現視頻來可視化代理性能(需要

>和

):
total_count = 0
total_episodes = 0
t0 = time.time()
success_steps = []
for i, data in enumerate(collector):
    rb.extend(data)
    # ... (training steps, similar to the original response) ...
登入後複製
>

torchvision最佳實踐av

    # ... (training steps) ...
    if total_count > 0 and total_count % LOG_EVERY == 0:
        torchrl_logger.info(f"Successful steps: {max_length}, episodes: {total_episodes}")
    if max_length > 475:
        print("TRAINING COMPLETE")
        break
登入後複製
從簡單的環境開始(例如cartpole)。

>

>實驗超參數(網格搜索,隨機搜索,自動化工具)。
  • 盡可能利用預構建的算法。
  • >
  • 結論
  • 本教程提供了對Torchrl的全面介紹,通過DQN和PPO示例展示了其功能。 嘗試不同的環境和算法以進一步提高您的RL技能。 引用的資源提供了額外的學習機會。

以上是開始使用Torchrl進行深度加固學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板