ホームページ >テクノロジー周辺機器 >AI >深い補強学習のためにTorchrlを始めましょう
補強学習(RL)は、自律車両から洗練された言語モデルまで、複雑な問題に取り組んでいます。 RLエージェントは、人間のフィードバック(RLHF)からの強化学習を通じて学習し、人間の入力に基づいて応答を適応させます。 KerasやTensorflowなどのPythonフレームワークが確立されていますが、PytorchとPytorch Lightningが新しいプロジェクトを支配しています。 オープンソースライブラリであるTorchrlは、PytorchでRL開発を簡素化します。このチュートリアルでは、Torchrlのセットアップ、コアコンポーネント、および基本的なRLエージェントの構築を示しています。近位のポリシー最適化(PPO)、および本質的なロギングおよび監視手法などの事前に構築されたアルゴリズムを探索します。
Torchrlのセットアップ このセクションでは、torchrl。
のインストールと使用をガイドしますTorchrlをインストールする前に、
を持っていることを確認してくださいGymnasium:RL環境をインポートするため。 バージョン0.29.1を使用します(2025年1月の時点で、後のバージョンにはTorchrlとの互換性の問題があります。関連するGITディスカッションページを参照してください)。
検証
!pip install torch tensordict gymnasium==0.29.1 pygame
を使用して、環境の互換性を確認します(例:カートポール):
!pip install torchrl
torchrl
キーTorchrlコンポーネントcheck_env_specs()
import torchrl from torchrl.envs import GymEnv from torchrl.envs.utils import check_env_specs check_env_specs(GymEnv("CartPole-v1"))環境
TORCHRLは、さまざまな環境に一貫したAPIを提供し、環境固有の機能を標準ラッパーに包みます。 これにより、相互作用が簡素化されます:
<code>[torchrl][INFO] check_env_specs succeeded!</code>
前処理/ポストプロセス(正規化、スケーリング、フォーマット)は簡単に適用されます
:を使用して体育館環境を作成します
正規化は、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
必要なパッケージをインポート:
!pip install torchrlステップ1:環境を定義します
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() ) )
ステップ4:エージェントを評価
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"))
プリントトレーニング時間とプロット結果:
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
(完全なDQN実装は、参照されたDatalabワークブックで入手できます。)
env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter()) torch.manual_seed(0) env.set_seed(0)事前に構築されたアルゴリズムの探索
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
以上が深い補強学習のためにTorchrlを始めましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。