Rumah >Peranti teknologi >AI >Bermula dengan Torchrl untuk pembelajaran tetulang yang mendalam

Bermula dengan Torchrl untuk pembelajaran tetulang yang mendalam

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-03-01 09:43:09426semak imbas

Getting Started with TorchRL for Deep Reinforcement Learning

Pembelajaran Penguatkuasaan (RL) menangani masalah yang kompleks, dari kenderaan autonomi ke model bahasa yang canggih. Ejen RL belajar melalui pembelajaran tetulang dari maklum balas manusia (RLHF), menyesuaikan respons mereka berdasarkan input manusia. Walaupun kerangka Python seperti Keras dan Tensorflow ditubuhkan, kilat pytorch dan pytorch menguasai projek -projek baru.

Torchrl, perpustakaan sumber terbuka, memudahkan pembangunan RL dengan pytorch. Tutorial ini menunjukkan persediaan TorchRL, komponen teras, dan membina ejen RL asas. Kami akan meneroka algoritma pra-dibina seperti pengoptimuman dasar proksimal (PPO), dan teknik pemantauan dan pemantauan penting.

Menyediakan Torchrl

Bahagian ini membimbing anda melalui memasang dan menggunakan Torchrl.

Prasyarat

Sebelum memasang TorchRL, pastikan anda mempunyai:

    Pytorch: Yayasan Torchrl.
  • Gimnasium: Untuk mengimport persekitaran RL. Gunakan versi 0.29.1 (sehingga Januari 2025, versi kemudian mempunyai masalah keserasian dengan TorchRL - lihat halaman Perbincangan Git yang berkaitan).
  • pygame: untuk mensimulasikan persekitaran RL seperti permainan (mis., Cartpole).
  • Tensordict: Menyediakan bekas tensor untuk manipulasi tensor yang cekap.
Pasang prasyarat:

!pip install torch tensordict gymnasium==0.29.1 pygame
Memasang Torchrl

Pasang TorchRL menggunakan PIP. Persekitaran Conda disyorkan untuk komputer atau pelayan peribadi.

!pip install torchrl
Pengesahan

Uji pemasangan anda dengan mengimport

dalam shell python atau notebook. Gunakan torchrl untuk mengesahkan keserasian persekitaran (mis., Cartpole): check_env_specs()

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

check_env_specs(GymEnv("CartPole-v1"))
Pemasangan pemasangan yang berjaya:

<code>[torchrl][INFO] check_env_specs succeeded!</code>
Komponen TorchRL Utama

Sebelum penciptaan ejen, mari kita periksa elemen teras Torchrl.

Persekitaran

TorchRL menyediakan API yang konsisten untuk pelbagai persekitaran, membungkus fungsi khusus persekitaran ke dalam pembungkus standard. Ini memudahkan interaksi:

    Torchrl menukarkan keadaan, tindakan, dan ganjaran ke dalam tensor pytorch.
  • preprocessing/postprocessing (normalisasi, skala, pemformatan) mudah digunakan.
Buat persekitaran gimnasium menggunakan

: GymEnv

env = GymEnv("CartPole-v1")
Transforms

Meningkatkan persekitaran dengan add-ons (mis., Kaunter langkah) menggunakan

: TransformedEnv

from torchrl.envs import GymEnv, StepCounter, TransformedEnv
env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter())
normalisasi dicapai dengan

: ObservationNorm

from torchrl.envs import Compose
base_env = GymEnv('CartPole-v1', device=device) 
env = TransformedEnv( 
    base_env, 
    Compose(
        ObservationNorm(in_keys=["observation"]), 
        StepCounter()
    )
)
pelbagai transformasi digabungkan menggunakan

. Compose

Ejen dan Dasar

Ejen menggunakan dasar untuk memilih tindakan berdasarkan keadaan alam sekitar, yang bertujuan untuk memaksimumkan ganjaran kumulatif.

Dasar rawak mudah dibuat menggunakan

: RandomPolicy

!pip install torch tensordict gymnasium==0.29.1 pygame

membina ejen RL pertama anda

Bahagian ini menunjukkan membina ejen RL yang mudah. ​​

Import Pakej yang diperlukan:

!pip install torchrl

Langkah 1: Tentukan Alam Sekitar

Kami akan menggunakan persekitaran Cartpole:

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

check_env_specs(GymEnv("CartPole-v1"))

Tentukan hyperparameters:

<code>[torchrl][INFO] check_env_specs succeeded!</code>

Langkah 2: Buat dasar

Tentukan dasar rangkaian saraf yang mudah:

env = GymEnv("CartPole-v1")

Langkah 3: Melatih ejen

Buat pengumpul data dan penampan replay:

from torchrl.envs import GymEnv, StepCounter, TransformedEnv
env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter())

Tentukan modul latihan:

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

Melaksanakan gelung latihan (dipermudahkan untuk keringkasan):

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"))

Langkah 4: Menilai ejen

Tambah penilaian dan pembalakan ke gelung latihan (dipermudahkan):

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

Cetak masa latihan dan hasil plot:

env = TransformedEnv(GymEnv("CartPole-v1"), StepCounter())
torch.manual_seed(0)
env.set_seed(0)

(pelaksanaan DQN lengkap boleh didapati dalam buku kerja Datalab yang dirujuk.)

Meneroka algoritma pra-dibina

TorchRL menawarkan algoritma pra-dibina (DQN, DDPG, SAC, PPO, dan lain-lain). Bahagian ini menunjukkan menggunakan PPO.

Import Modul yang diperlukan:

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

Tentukan hyperparameters:

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)

(baki pelaksanaan PPO, termasuk definisi rangkaian, pengumpulan data, fungsi kerugian, pengoptimuman, dan gelung latihan, mengikuti struktur yang sama dengan tindak balas asal tetapi ditinggalkan di sini untuk keringkasan. Rujuk kepada respons asal untuk kod lengkap.)

Menggambarkan dan menyahpepijat

Memantau kemajuan latihan menggunakan Tensorboard:

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))

Visualisasikan dengan: tensorboard --logdir="training_logs"

Debugging melibatkan pemeriksaan spesifikasi persekitaran:

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)

pemerhatian dan tindakan sampel:

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) ...

memvisualisasikan prestasi ejen dengan memberikan video (memerlukan torchvision dan 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

Amalan Terbaik

  • Mulakan dengan persekitaran yang mudah (seperti Cartpole).
  • Eksperimen dengan hiperparameter (carian grid, carian rawak, alat automatik).
  • memanfaatkan algoritma pra-bina apabila mungkin.

Kesimpulan

Tutorial ini memberikan pengenalan yang komprehensif kepada TorchRL, mempamerkan keupayaannya melalui contoh DQN dan PPO. Eksperimen dengan persekitaran dan algoritma yang berbeza untuk meningkatkan lagi kemahiran RL anda. Sumber yang dirujuk menyediakan peluang pembelajaran tambahan.

Atas ialah kandungan terperinci Bermula dengan Torchrl untuk pembelajaran tetulang yang mendalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn