ホームページ > テクノロジー周辺機器 > AI > 深い補強学習のためにTorchrlを始めましょう

深い補強学習のためにTorchrlを始めましょう

Joseph Gordon-Levitt
リリース: 2025-03-01 09:43:09
オリジナル
424 人が閲覧しました

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's Foundation。

Gymnasium:RL環境をインポートするため。 バージョン0.29.1を使用します(2025年1月の時点で、後のバージョンにはTorchrlとの互換性の問題があります。関連するGITディスカッションページを参照してください)。
    pygame:ゲームのようなRL環境をシミュレートする(例:カートポール)。
  • Tensordict:効率的なテンソル操作のためのテンソル容器を提供します
  • 前提条件をインストール:
  • Torchrl
  • のインストール
PIPを使用してTorchrlをインストールします。 パーソナルコンピューターまたはサーバーにはコンドラ環境をお勧めします。

検証
!pip install torch tensordict gymnasium==0.29.1 pygame
ログイン後にコピー
ログイン後にコピー

pythonシェルまたはノートブックに

をインポートして、インストールをテストします。

を使用して、環境の互換性を確認します(例:カートポール):

!pip install torchrl
ログイン後にコピー
ログイン後にコピー

インストールが成功した表示:

torchrlキー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は、さまざまな環境に一貫した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:環境を定義します

カートポール環境を使用します:

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

単純な環境から始めます(cartpoleなど)。
    # ... (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
ログイン後にコピー

ハイパーパラメーター(グリッド検索、ランダム検索、自動化されたツール)を実験します。

    可能な場合は事前に構築されたアルゴリズムを活用します。
  • 結論
  • このチュートリアルは、DQNおよびPPOの例を介してその機能を紹介し、Torchrlの包括的な紹介を提供しました。 さまざまな環境とアルゴリズムを試して、RLスキルをさらに向上させます。 参照されたリソースは、追加の学習機会を提供します

以上が深い補強学習のためにTorchrlを始めましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート