Skip to main content

A modular, primitive-first, python-first PyTorch library for Reinforcement Learning

Project description

Unit-tests Nightly Documentation Benchmarks codecov Flaky Tests Twitter Follow Python version GitHub license pypi version pypi nightly version Downloads Downloads Discord Shield

TorchRL

What's New | LLM API | Getting Started | Documentation | TensorDict | Features | Examples, tutorials and demos | Citation | Installation | Asking a question | Contributing

TorchRL is an open-source Reinforcement Learning (RL) library for PyTorch.

🚀 What's New

🚀 Command-Line Training Interface - Train RL Agents Without Writing Code! (Experimental)

TorchRL now provides a powerful command-line interface that lets you train state-of-the-art RL agents with simple bash commands! No Python scripting required - just run training with customizable parameters:

  • 🎯 One-Command Training: python sota-implementations/ppo_trainer/train.py
  • ⚙️ Full Customization: Override any parameter via command line: trainer.total_frames=2000000 optimizer.lr=0.0003
  • 🌍 Multi-Environment Support: Switch between Gym, Brax, DM Control, and more with env=gym training_env.create_env_fn.base_env.env_name=HalfCheetah-v4
  • 📊 Built-in Logging: TensorBoard, Weights & Biases, CSV logging out of the box
  • 🔧 Hydra-Powered: Leverages Hydra's powerful configuration system for maximum flexibility
  • 🏃‍♂️ Production Ready: Same robust training pipeline as our SOTA implementations

Perfect for: Researchers, practitioners, and anyone who wants to train RL agents without diving into implementation details.

⚠️ Note: This is an experimental feature. The API may change in future versions. We welcome feedback and contributions to help improve this implementation!

📋 Prerequisites: The training interface requires Hydra for configuration management. Install with:

pip install "torchrl[utils]"
# or manually:
pip install hydra-core omegaconf

Check out the complete CLI documentation to get started!

🚀 vLLM Revamp - Major Enhancement to LLM Infrastructure (v0.10)

This release introduces a comprehensive revamp of TorchRL's vLLM integration, delivering significant improvements in performance, scalability, and usability for large language model inference and training workflows:

  • 🔥 AsyncVLLM Service: Production-ready distributed vLLM inference with multi-replica scaling and automatic Ray actor management
  • ⚖️ Multiple Load Balancing Strategies: Routing strategies including prefix-aware, request-based, and KV-cache load balancing for optimal performance
  • 🏗️ Unified vLLM Architecture: New RLvLLMEngine interface standardizing all vLLM backends with simplified vLLMUpdaterV2 for seamless weight updates
  • 🌐 Distributed Data Loading: New RayDataLoadingPrimer for shared, distributed data loading across multiple environments
  • 📈 Enhanced Performance: Native vLLM batching, concurrent request processing, and optimized resource allocation via Ray placement groups
# Simple AsyncVLLM usage - production ready!
from torchrl.modules.llm import AsyncVLLM, vLLMWrapper

# Create distributed vLLM service with load balancing
service = AsyncVLLM.from_pretrained(
    "Qwen/Qwen2.5-7B",
    num_devices=2,      # Tensor parallel across 2 GPUs
    num_replicas=4,     # 4 replicas for high throughput
    max_model_len=4096
)

# Use with TorchRL's LLM wrappers
wrapper = vLLMWrapper(service, input_mode="history")

# Simplified weight updates
from torchrl.collectors.llm import vLLMUpdaterV2
updater = vLLMUpdaterV2(service)  # Auto-configures from engine

This revamp positions TorchRL as the leading platform for scalable LLM inference and training, providing production-ready tools for both research and deployment scenarios.

🧪 PPOTrainer (Experimental) - High-Level Training Interface

TorchRL now includes an experimental PPOTrainer that provides a complete, configurable PPO training solution! This prototype feature combines TorchRL's modular components into a cohesive training system with sensible defaults:

  • 🎯 Complete Training Pipeline: Handles environment setup, data collection, loss computation, and optimization automatically
  • ⚙️ Extensive Configuration: Comprehensive Hydra-based config system for easy experimentation and hyperparameter tuning
  • 📊 Built-in Logging: Automatic tracking of rewards, actions, episode completion rates, and training statistics
  • 🔧 Modular Design: Built on existing TorchRL components (collectors, losses, replay buffers) for maximum flexibility
  • 📝 Minimal Code: Complete SOTA implementation in just ~20 lines!

Working Example: See sota-implementations/ppo_trainer/ for a complete, working PPO implementation that trains on Pendulum-v1 with full Hydra configuration support.

Prerequisites: Requires Hydra for configuration management: pip install "torchrl[utils]"

Complete Training Script (sota-implementations/ppo_trainer/train.py)
import hydra
from torchrl.trainers.algorithms.configs import *

@hydra.main(config_path="config", config_name="config", version_base="1.1")
def main(cfg):
    trainer = hydra.utils.instantiate(cfg.trainer)
    trainer.train()

if __name__ == "__main__":
    main()

Complete PPO training in ~20 lines with full configurability.

API Usage Examples
# Basic usage - train PPO on Pendulum-v1 with default settings
python sota-implementations/ppo_trainer/train.py

# Custom configuration with command-line overrides
python sota-implementations/ppo_trainer/train.py \
    trainer.total_frames=2000000 \
    training_env.create_env_fn.base_env.env_name=HalfCheetah-v4 \
    networks.policy_network.num_cells=[256,256] \
    optimizer.lr=0.0003

# Use different environment and logger
python sota-implementations/ppo_trainer/train.py \
    env=gym \
    training_env.create_env_fn.base_env.env_name=Walker2d-v4 \
    logger=tensorboard

# See all available options
python sota-implementations/ppo_trainer/train.py --help

Future Plans: Additional algorithm trainers (SAC, TD3, DQN) and full integration of all TorchRL components within the configuration system are planned for upcoming releases.

LLM API - Complete Framework for Language Model Fine-tuning

TorchRL includes a comprehensive LLM API for post-training and fine-tuning of language models! This framework provides everything you need for RLHF, supervised fine-tuning, and tool-augmented training:

  • 🤖 Unified LLM Wrappers: Seamless integration with Hugging Face models and vLLM inference engines
  • 💬 Conversation Management: Advanced History class for multi-turn dialogue with automatic chat template detection
  • 🛠️ Tool Integration: Built-in support for Python code execution, function calling, and custom tool transforms
  • 🎯 Specialized Objectives: GRPO (Group Relative Policy Optimization) and SFT loss functions optimized for language models
  • High-Performance Collectors: Async data collection with distributed training support
  • 🔄 Flexible Environments: Transform-based architecture for reward computation, data loading, and conversation augmentation

The LLM API follows TorchRL's modular design principles, allowing you to mix and match components for your specific use case. Check out the complete documentation and GRPO implementation example to get started!

Quick LLM API Example
from torchrl.envs.llm import ChatEnv
from torchrl.modules.llm import TransformersWrapper
from torchrl.objectives.llm import GRPOLoss
from torchrl.collectors.llm import LLMCollector

# Create environment with Python tool execution
env = ChatEnv(
    tokenizer=tokenizer,
    system_prompt="You are an assistant that can execute Python code.",
    batch_size=[1]
).append_transform(PythonInterpreter())

# Wrap your language model
llm = TransformersWrapper(
    model=model,
    tokenizer=tokenizer,
    input_mode="history"
)

# Set up GRPO training
loss_fn = GRPOLoss(llm, critic, gamma=0.99)
collector = LLMCollector(env, llm, frames_per_batch=100)

# Training loop
for data in collector:
    loss = loss_fn(data)
    loss.backward()
    optimizer.step()

Key features

  • 🐍 Python-first: Designed with Python as the primary language for ease of use and flexibility
  • ⏱️ Efficient: Optimized for performance to support demanding RL research applications
  • 🧮 Modular, customizable, extensible: Highly modular architecture allows for easy swapping, transformation, or creation of new components
  • 📚 Documented: Thorough documentation ensures that users can quickly understand and utilize the library
  • Tested: Rigorously tested to ensure reliability and stability
  • ⚙️ Reusable functionals: Provides a set of highly reusable functions for cost functions, returns, and data processing

Design Principles

  • 🔥 Aligns with PyTorch ecosystem: Follows the structure and conventions of popular PyTorch libraries (e.g., dataset pillar, transforms, models, data utilities)
  • ➖ Minimal dependencies: Only requires Python standard library, NumPy, and PyTorch; optional dependencies for common environment libraries (e.g., OpenAI Gym) and datasets (D4RL, OpenX...)

Read the full paper for a more curated description of the library.

Getting started

Check our Getting Started tutorials for quickly ramp up with the basic features of the library!

Documentation and knowledge base

The TorchRL documentation can be found here. It contains tutorials and the API reference.

TorchRL also provides a RL knowledge base to help you debug your code, or simply learn the basics of RL. Check it out here.

We have some introductory videos for you to get to know the library better, check them out:

Spotlight publications

TorchRL being domain-agnostic, you can use it across many different fields. Here are a few examples:

  • ACEGEN: Reinforcement Learning of Generative Chemical Agents for Drug Discovery
  • BenchMARL: Benchmarking Multi-Agent Reinforcement Learning
  • BricksRL: A Platform for Democratizing Robotics and Reinforcement Learning Research and Education with LEGO
  • OmniDrones: An Efficient and Flexible Platform for Reinforcement Learning in Drone Control
  • RL4CO: an Extensive Reinforcement Learning for Combinatorial Optimization Benchmark
  • Robohive: A unified framework for robot learning

Writing simplified and portable RL codebase with TensorDict

RL algorithms are very heterogeneous, and it can be hard to recycle a codebase across settings (e.g. from online to offline, from state-based to pixel-based learning). TorchRL solves this problem through TensorDict, a convenient data structure(1) that can be used to streamline one's RL codebase. With this tool, one can write a complete PPO training script in less than 100 lines of code!

Code
import torch
from tensordict.nn import TensorDictModule
from tensordict.nn.distributions import NormalParamExtractor
from torch import nn

from torchrl.collectors import Collector
from torchrl.data.replay_buffers import TensorDictReplayBuffer, \
  LazyTensorStorage, SamplerWithoutReplacement
from torchrl.envs.libs.gym import GymEnv
from torchrl.modules import ProbabilisticActor, ValueOperator, TanhNormal
from torchrl.objectives import ClipPPOLoss
from torchrl.objectives.value import GAE

env = GymEnv("Pendulum-v1") 
model = TensorDictModule(
  nn.Sequential(
      nn.Linear(3, 128), nn.Tanh(),
      nn.Linear(128, 128), nn.Tanh(),
      nn.Linear(128, 128), nn.Tanh(),
      nn.Linear(128, 2),
      NormalParamExtractor()
  ),
  in_keys=["observation"],
  out_keys=["loc", "scale"]
)
critic = ValueOperator(
  nn.Sequential(
      nn.Linear(3, 128), nn.Tanh(),
      nn.Linear(128, 128), nn.Tanh(),
      nn.Linear(128, 128), nn.Tanh(),
      nn.Linear(128, 1),
  ),
  in_keys=["observation"],
)
actor = ProbabilisticActor(
  model,
  in_keys=["loc", "scale"],
  distribution_class=TanhNormal,
  distribution_kwargs={"low": -1.0, "high": 1.0},
  return_log_prob=True
  )
buffer = TensorDictReplayBuffer(
  storage=LazyTensorStorage(1000),
  sampler=SamplerWithoutReplacement(),
  batch_size=50,
  )
collector = Collector(
  env,
  actor,
  frames_per_batch=1000,
  total_frames=1_000_000,
)
loss_fn = ClipPPOLoss(actor, critic)
adv_fn = GAE(value_network=critic, average_gae=True, gamma=0.99, lmbda=0.95)
optim = torch.optim.Adam(loss_fn.parameters(), lr=2e-4)

for data in collector:  # collect data
  for epoch in range(10):
      adv_fn(data)  # compute advantage
      buffer.extend(data)
      for sample in buffer:  # consume data
          loss_vals = loss_fn(sample)
          loss_val = sum(
              value for key, value in loss_vals.items() if
              key.startswith("loss")
              )
          loss_val.backward()
          optim.step()
          optim.zero_grad()
  print(f"avg reward: {data['next', 'reward'].mean().item(): 4.4f}")

Here is an example of how the environment API relies on tensordict to carry data from one function to another during a rollout execution: Alt Text

TensorDict makes it easy to reuse pieces of code across environments, models and algorithms.

Code

For instance, here's how to code a rollout in TorchRL:

- obs, done = env.reset()
+ tensordict = env.reset()
policy = SafeModule(
    model,
    in_keys=["observation_pixels", "observation_vector"],
    out_keys=["action"],
)
out = []
for i in range(n_steps):
-     action, log_prob = policy(obs)
-     next_obs, reward, done, info = env.step(action)
-     out.append((obs, next_obs, action, log_prob, reward, done))
-     obs = next_obs
+     tensordict = policy(tensordict)
+     tensordict = env.step(tensordict)
+     out.append(tensordict)
+     tensordict = step_mdp(tensordict)  # renames next_observation_* keys to observation_*
- obs, next_obs, action, log_prob, reward, done = [torch.stack(vals, 0) for vals in zip(*out)]
+ out = torch.stack(out, 0)  # TensorDict supports multiple tensor operations

Using this, TorchRL abstracts away the input / output signatures of the modules, env, collectors, replay buffers and losses of the library, allowing all primitives to be easily recycled across settings.

Code

Here's another example of an off-policy training loop in TorchRL (assuming that a data collector, a replay buffer, a loss and an optimizer have been instantiated):

- for i, (obs, next_obs, action, hidden_state, reward, done) in enumerate(collector):
+ for i, tensordict in enumerate(collector):
-     replay_buffer.add((obs, next_obs, action, log_prob, reward, done))
+     replay_buffer.add(tensordict)
    for j in range(num_optim_steps):
-         obs, next_obs, action, hidden_state, reward, done = replay_buffer.sample(batch_size)
-         loss = loss_fn(obs, next_obs, action, hidden_state, reward, done)
+         tensordict = replay_buffer.sample(batch_size)
+         loss = loss_fn(tensordict)
        loss.backward()
        optim.step()
        optim.zero_grad()

This training loop can be reused across algorithms as it makes a minimal number of assumptions about the structure of the data.

TensorDict supports multiple tensor operations on its device and shape (the shape of TensorDict, or its batch size, is the common arbitrary N first dimensions of all its contained tensors):

Code
# stack and cat
tensordict = torch.stack(list_of_tensordicts, 0)
tensordict = torch.cat(list_of_tensordicts, 0)
# reshape
tensordict = tensordict.view(-1)
tensordict = tensordict.permute(0, 2, 1)
tensordict = tensordict.unsqueeze(-1)
tensordict = tensordict.squeeze(-1)
# indexing
tensordict = tensordict[:2]
tensordict[:, 2] = sub_tensordict
# device and memory location
tensordict.cuda()
tensordict.to("cuda:1")
tensordict.share_memory_()

TensorDict comes with a dedicated tensordict.nn module that contains everything you might need to write your model with it. And it is functorch and torch.compile compatible!

Code
transformer_model = nn.Transformer(nhead=16, num_encoder_layers=12)
+ td_module = SafeModule(transformer_model, in_keys=["src", "tgt"], out_keys=["out"])
src = torch.rand((10, 32, 512))
tgt = torch.rand((20, 32, 512))
+ tensordict = TensorDict({"src": src, "tgt": tgt}, batch_size=[20, 32])
- out = transformer_model(src, tgt)
+ td_module(tensordict)
+ out = tensordict["out"]

The TensorDictSequential class allows to branch sequences of nn.Module instances in a highly modular way. For instance, here is an implementation of a transformer using the encoder and decoder blocks:

encoder_module = TransformerEncoder(...)
encoder = TensorDictSequential(encoder_module, in_keys=["src", "src_mask"], out_keys=["memory"])
decoder_module = TransformerDecoder(...)
decoder = TensorDictModule(decoder_module, in_keys=["tgt", "memory"], out_keys=["output"])
transformer = TensorDictSequential(encoder, decoder)
assert transformer.in_keys == ["src", "src_mask", "tgt"]
assert transformer.out_keys == ["memory", "output"]

TensorDictSequential allows to isolate subgraphs by querying a set of desired input / output keys:

transformer.select_subsequence(out_keys=["memory"])  # returns the encoder
transformer.select_subsequence(in_keys=["tgt", "memory"])  # returns the decoder

Check TensorDict tutorials to learn more!

Features

  • A common interface for environments which supports common libraries (OpenAI gym, deepmind control lab, etc.)(1) and state-less execution (e.g. Model-based environments). The batched environments containers allow parallel execution(2). A common PyTorch-first class of tensor-specification class is also provided. TorchRL's environments API is simple but stringent and specific. Check the documentation and tutorial to learn more!

    Code
    env_make = lambda: GymEnv("Pendulum-v1", from_pixels=True)
    env_parallel = ParallelEnv(4, env_make)  # creates 4 envs in parallel
    tensordict = env_parallel.rollout(max_steps=20, policy=None)  # random rollout (no policy given)
    assert tensordict.shape == [4, 20]  # 4 envs, 20 steps rollout
    env_parallel.action_spec.is_in(tensordict["action"])  # spec check returns True
    
  • multiprocess and distributed data collectors(2) that work synchronously or asynchronously. Through the use of TensorDict, TorchRL's training loops are made very similar to regular training loops in supervised learning (although the "dataloader" -- read data collector -- is modified on-the-fly):

    Code
    env_make = lambda: GymEnv("Pendulum-v1", from_pixels=True)
    collector = MultiAsyncCollector(
        [env_make, env_make],
        policy=policy,
        devices=["cuda:0", "cuda:0"],
        total_frames=10000,
        frames_per_batch=50,
        ...
    )
    for i, tensordict_data in enumerate(collector):
        loss = loss_module(tensordict_data)
        loss.backward()
        optim.step()
        optim.zero_grad()
        collector.update_policy_weights_()
    

    Check our distributed collector examples to learn more about ultra-fast data collection with TorchRL.

  • efficient(2) and generic(1) replay buffers with modularized storage:

    Code
    storage = LazyMemmapStorage(  # memory-mapped (physical) storage
        cfg.buffer_size,
        scratch_dir="/tmp/"
    )
    buffer = TensorDictPrioritizedReplayBuffer(
        alpha=0.7,
        beta=0.5,
        collate_fn=lambda x: x,
        pin_memory=device != torch.device("cpu"),
        prefetch=10,  # multi-threaded sampling
        storage=storage
    )
    

    Replay buffers are also offered as wrappers around common datasets for offline RL:

    Code
    from torchrl.data.replay_buffers import SamplerWithoutReplacement
    from torchrl.data.datasets.d4rl import D4RLExperienceReplay
    data = D4RLExperienceReplay(
        "maze2d-open-v0",
        split_trajs=True,
        batch_size=128,
        sampler=SamplerWithoutReplacement(drop_last=True),
    )
    for sample in data:  # or alternatively sample = data.sample()
        fun(sample)
    
  • cross-library environment transforms(1), executed on device and in a vectorized fashion(2), which process and prepare the data coming out of the environments to be used by the agent:

    Code
    env_make = lambda: GymEnv("Pendulum-v1", from_pixels=True)
    env_base = ParallelEnv(4, env_make, device="cuda:0")  # creates 4 envs in parallel
    env = TransformedEnv(
        env_base,
        Compose(
            ToTensorImage(),
            ObservationNorm(loc=0.5, scale=1.0)),  # executes the transforms once and on device
    )
    tensordict = env.reset()
    assert tensordict.device == torch.device("cuda:0")
    

    Other transforms include: reward scaling (RewardScaling), shape operations (concatenation of tensors, unsqueezing etc.), concatenation of successive operations (CatFrames), resizing (Resize) and many more.

    Unlike other libraries, the transforms are stacked as a list (and not wrapped in each other), which makes it easy to add and remove them at will:

    env.insert_transform(0, NoopResetEnv())  # inserts the NoopResetEnv transform at the index 0
    

    Nevertheless, transforms can access and execute operations on the parent environment:

    transform = env.transform[1]  # gathers the second transform of the list
    parent_env = transform.parent  # returns the base environment of the second transform, i.e. the base env + the first transform
    
  • various tools for distributed learning (e.g. memory mapped tensors)(2);

  • various architectures and models (e.g. actor-critic)(1):

    Code
    # create an nn.Module
    common_module = ConvNet(
        bias_last_layer=True,
        depth=None,
        num_cells=[32, 64, 64],
        kernel_sizes=[8, 4, 3],
        strides=[4, 2, 1],
    )
    # Wrap it in a SafeModule, indicating what key to read in and where to
    # write out the output
    common_module = SafeModule(
        common_module,
        in_keys=["pixels"],
        out_keys=["hidden"],
    )
    # Wrap the policy module in NormalParamsWrapper, such that the output
    # tensor is split in loc and scale, and scale is mapped onto a positive space
    policy_module = SafeModule(
        NormalParamsWrapper(
            MLP(num_cells=[64, 64], out_features=32, activation=nn.ELU)
        ),
        in_keys=["hidden"],
        out_keys=["loc", "scale"],
    )
    # Use a SafeProbabilisticTensorDictSequential to combine the SafeModule with a
    # SafeProbabilisticModule, indicating how to build the
    # torch.distribution.Distribution object and what to do with it
    policy_module = SafeProbabilisticTensorDictSequential(  # stochastic policy
        policy_module,
        SafeProbabilisticModule(
            in_keys=["loc", "scale"],
            out_keys="action",
            distribution_class=TanhNormal,
        ),
    )
    value_module = MLP(
        num_cells=[64, 64],
        out_features=1,
        activation=nn.ELU,
    )
    # Wrap the policy and value function in a common module
    actor_value = ActorValueOperator(common_module, policy_module, value_module)
    # standalone policy from this
    standalone_policy = actor_value.get_policy_operator()
    
  • exploration wrappers and modules to easily swap between exploration and exploitation(1):

    Code
    policy_explore = EGreedyWrapper(policy)
    with set_exploration_type(ExplorationType.RANDOM):
        tensordict = policy_explore(tensordict)  # will use eps-greedy
    with set_exploration_type(ExplorationType.DETERMINISTIC):
        tensordict = policy_explore(tensordict)  # will not use eps-greedy
    
  • A series of efficient loss modules and highly vectorized functional return and advantage computation.

    Code

    Loss modules

    from torchrl.objectives import DQNLoss
    loss_module = DQNLoss(value_network=value_network, gamma=0.99)
    tensordict = replay_buffer.sample(batch_size)
    loss = loss_module(tensordict)
    

    Advantage computation

    from torchrl.objectives.value.functional import vec_td_lambda_return_estimate
    advantage = vec_td_lambda_return_estimate(gamma, lmbda, next_state_value, reward, done, terminated)
    
  • a generic trainer class(1) that executes the aforementioned training loop. Through a hooking mechanism, it also supports any logging or data transformation operation at any given time.

  • various recipes to build models that correspond to the environment being deployed.

  • LLM API: Complete framework for language model fine-tuning with unified wrappers for Hugging Face and vLLM backends, conversation management with automatic chat template detection, tool integration (Python execution, function calling), specialized objectives (GRPO, SFT), and high-performance async collectors. Perfect for RLHF, supervised fine-tuning, and tool-augmented training scenarios.

    Code
    from torchrl.envs.llm import ChatEnv
    from torchrl.modules.llm import TransformersWrapper
    from torchrl.envs.llm.transforms import PythonInterpreter
    
    # Create environment with tool execution
    env = ChatEnv(
        tokenizer=tokenizer,
        system_prompt="You can execute Python code.",
        batch_size=[1]
    ).append_transform(PythonInterpreter())
    
    # Wrap language model for training
    llm = TransformersWrapper(
        model=model,
        tokenizer=tokenizer,
        input_mode="history"
    )
    
    # Multi-turn conversation with tool use
    obs = env.reset(TensorDict({"query": "Calculate 2+2"}, batch_size=[1]))
    llm_output = llm(obs)  # Generates response
    obs = env.step(llm_output)  # Environment processes response
    

If you feel a feature is missing from the library, please submit an issue! If you would like to contribute to new features, check our call for contributions and our contribution page.

Examples, tutorials and demos

A series of State-of-the-Art implementations are provided with an illustrative purpose:

Algorithm Compile Support** Tensordict-free API Modular Losses Continuous and Discrete
DQN 1.9x + NA + (through ActionDiscretizer transform)
DDPG 1.87x + + - (continuous only)
IQL 3.22x + + +
CQL 2.68x + + +
TD3 2.27x + + - (continuous only)
TD3+BC untested + + - (continuous only)
A2C 2.67x + - +
PPO 2.42x + - +
SAC 2.62x + - +
REDQ 2.28x + - - (continuous only)
Dreamer v1 untested + + (different classes) - (continuous only)
Decision Transformers untested + NA - (continuous only)
CrossQ untested + + - (continuous only)
Gail untested + NA +
Impala untested + - +
IQL (MARL) untested + + +
DDPG (MARL) untested + + - (continuous only)
PPO (MARL) untested + - +
QMIX-VDN (MARL) untested + NA +
SAC (MARL) untested + - +
RLHF NA + NA NA
LLM API (GRPO) NA + + NA

** The number indicates expected speed-up compared to eager mode when executed on CPU. Numbers may vary depending on architecture and device.

and many more to come!

Code examples displaying toy code snippets and training scripts are also available

Check the examples directory for more details about handling the various configuration settings.

We also provide tutorials and demos that give a sense of what the library can do.

Citation

If you're using TorchRL, please refer to this BibTeX entry to cite this work:

@misc{bou2023torchrl,
      title={TorchRL: A data-driven decision-making library for PyTorch}, 
      author={Albert Bou and Matteo Bettini and Sebastian Dittert and Vikash Kumar and Shagun Sodhani and Xiaomeng Yang and Gianni De Fabritiis and Vincent Moens},
      year={2023},
      eprint={2306.00577},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

Installation

Create a new virtual environment:

python -m venv torchrl
source torchrl/bin/activate  # On Windows use: venv\Scripts\activate

Or create a conda environment where the packages will be installed.

conda create --name torchrl python=3.10
conda activate torchrl

Install dependencies:

PyTorch

Depending on the use of torchrl that you want to make, you may want to install the latest (nightly) PyTorch release or the latest stable version of PyTorch. See here for a detailed list of commands, including pip3 or other special installation instructions.

TorchRL offers a few pre-defined dependencies such as "torchrl[tests]", "torchrl[atari]", "torchrl[utils]" etc.

For the experimental training interface and configuration system, install:

pip3 install "torchrl[utils]"  # Includes hydra-core and other utilities

Torchrl

You can install the latest stable release by using

pip3 install torchrl

This should work on linux (including AArch64 machines), Windows 10 and OsX (Metal chips only). On certain Windows machines (Windows 11), one should build the library locally. This can be done in two ways:

# Install and build locally v0.8.1 of the library without cloning
pip3 install git+https://github.com/pytorch/rl@v0.8.1
# Clone the library and build it locally
git clone https://github.com/pytorch/tensordict
git clone https://github.com/pytorch/rl
pip install -e tensordict
pip install -e rl

If you use uv (instead of pip) and you have already installed a specific PyTorch build (e.g. nightly), make sure uv doesn't re-resolve dependencies (which can downgrade PyTorch). Use --no-deps for the local installs:

uv pip install --no-deps -e tensordict
uv pip install --no-deps -e rl

Note that tensordict local build requires cmake to be installed via homebrew (MacOS) or another package manager such as apt, apt-get, conda or yum but NOT pip, as well as pip install "pybind11[global]".

One can also build the wheels to distribute to co-workers using

pip install build
python -m build --wheel

Your wheels will be stored there ./dist/torchrl<name>.whl and installable via

pip install torchrl<name>.whl

The nightly build can be installed via

pip3 install tensordict-nightly torchrl-nightly

which we currently only ship for Linux machines. Importantly, the nightly builds require the nightly builds of PyTorch too. Also, a local build of torchrl with the nightly build of tensordict may fail - install both nightlies or both local builds but do not mix them.

Disclaimer: As of today, TorchRL requires Python 3.10+ and is roughly compatible with any pytorch version >= 2.1. Installing it will not directly require a newer version of pytorch to be installed. Indirectly though, tensordict still requires the latest PyTorch to be installed and we are working hard to loosen that requirement. The C++ binaries of TorchRL (mainly for prioritized replay buffers) will only work with PyTorch 2.7.0 and above. Some features (e.g., working with nested jagged tensors) may also be limited with older versions of pytorch. It is recommended to use the latest TorchRL with the latest PyTorch version unless there is a strong reason not to do so.

Optional dependencies

The following libraries can be installed depending on the usage one wants to make of torchrl:

# diverse
pip3 install tqdm tensorboard "hydra-core>=1.1" hydra-submitit-launcher

# rendering
pip3 install "moviepy<2.0.0"

# deepmind control suite
pip3 install dm_control

# gym, atari games
pip3 install "gym[atari]" "gym[accept-rom-license]" pygame

# tests
pip3 install pytest pyyaml pytest-instafail

# tensorboard
pip3 install tensorboard

# wandb
pip3 install wandb

Versioning issues can cause error message of the type undefined symbol and such. For these, refer to the versioning issues document for a complete explanation and proposed workarounds.

Asking a question

If you spot a bug in the library, please raise an issue in this repo.

If you have a more generic question regarding RL in PyTorch, post it on the PyTorch forum.

Contributing

Internal collaborations to torchrl are welcome! Feel free to fork, submit issues and PRs. You can checkout the detailed contribution guide here. As mentioned above, a list of open contributions can be found in here.

Contributors are recommended to install pre-commit hooks (using pre-commit install). pre-commit will check for linting related issues when the code is committed locally. You can disable th check by appending -n to your commit command: git commit -m <commit message> -n

Disclaimer

This library is released as a PyTorch beta feature. BC-breaking changes are likely to happen but they will be introduced with a deprecation warranty after a few release cycles.

License

TorchRL is licensed under the MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

torchrl-0.12.0-cp314-cp314t-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14tWindows x86-64

torchrl-0.12.0-cp314-cp314t-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp314-cp314t-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp314-cp314t-macosx_12_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14tmacOS 12.0+ ARM64

torchrl-0.12.0-cp314-cp314-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows x86-64

torchrl-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp314-cp314-macosx_12_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 12.0+ ARM64

torchrl-0.12.0-cp313-cp313t-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13tWindows x86-64

torchrl-0.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp313-cp313t-macosx_12_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13tmacOS 12.0+ ARM64

torchrl-0.12.0-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

torchrl-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp313-cp313-macosx_12_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

torchrl-0.12.0-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

torchrl-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

torchrl-0.12.0-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

torchrl-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

torchrl-0.12.0-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

torchrl-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

torchrl-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

torchrl-0.12.0-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file torchrl-0.12.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 3e1e0393cad2ade16c6a8942a5f17d912be39ec6401ede54bd8a39e15a84b27d
MD5 b1878814599defa4a3423217ea3354db
BLAKE2b-256 24788273f879ba1989e0b2a19433d7b7707a413e5c255c016756c15d636aa00a

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314t-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab04ab0abe866d16177e8828ddace57bcb9dd83145bb06947e61ec9e86a953f4
MD5 2abedf53d9cec2b1fc66d0b2ea96f2fc
BLAKE2b-256 fb970479f61a9f970883d452160056ceee729b03cda56525844cbdaa96318235

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5d1fbf1bbb2d7b2e937a1ee677c7358663b7f6ed887420d8c923dd9045048059
MD5 47e91da0ce68be0c2a1cce441bad7c57
BLAKE2b-256 68dcb4f07f3fe6b9211d67baf0dce2a669797038fe1a1045baba87b9278ca43c

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314t-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp314-cp314t-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 ded6510a4279a6b0a6a1774fe86bbb5db3fe85956ca08f51bf006d2d5439788e
MD5 0dc1790222c335fb6ff000870954330b
BLAKE2b-256 e0efe600ba6f8720944190f0f4ac085a4f49d1e8a4f37e24b95fce00d934510f

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314t-macosx_12_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 38d6c68f8c8886f3d82e86a0ed4d3200db343d408a4bcbaa97803c88ea3245f9
MD5 12efe96f0648c334b046225dfa167b29
BLAKE2b-256 5cca79d273b68170a28a4221b1f1ce5ec67834b41f6742dcee294046894043c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf6f8fdfb92617bca8a0528d1e10e505c5a49d6719e7665c903a01c1b0e435fb
MD5 7e77867b1e12a7283bb2c57a13cfdbbf
BLAKE2b-256 e982aed53059c7d1d553fcb2e8bd32d39643c4c63d41862d10e1661d32ed80dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34e1b8aadeea015938f8b94001a28c8eac4ae3dc7d7f11805235724996ce6ed1
MD5 9c49a1329a8376d5c591152b3088c837
BLAKE2b-256 71b9f786606a519d7e02b3b7b0fcaa3e3124a4f20023b02ddd203c611b8ecc79

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp314-cp314-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp314-cp314-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 d9359d91e21a7c173ade9fea4a147eed37d9407cabf36eeca432330b25cca027
MD5 368d1babdf654af2676accd8ab811844
BLAKE2b-256 2de05e9a5ff8500c775887c3374d6b7ed19cd78e9bacf5781a197ad4636192a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp314-cp314-macosx_12_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 466b8e7397828456639e3a737942cf7942c91c0f79435891d561b15e0af496b4
MD5 41b4e95f3167515b9531586e2e16d1bb
BLAKE2b-256 7f51eea6f5cc23113e279c942f73769f5b3f2f98b5058fee81f56314635d3247

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313t-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e8f827324b4ef24a38dc202381a7e682b7f1254d58061f92e3194416d35022b
MD5 f2320fe6c5160476167b9383b2057972
BLAKE2b-256 6913dd996cffcbea146ddeb141ff7ff3343813d6dec653dcf1edd2f3a5e52782

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313t-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 283a11d18fd7587e9d4e50609e8a60401f1ec5c729b31b25459f30ada6bba7a2
MD5 dd33330e864a0f538e0b4f074bd2170d
BLAKE2b-256 c7ad6691687de83ec37bc60a92b10825a8118b5f7889b001bf5b37c34b418757

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313t-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313t-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp313-cp313t-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 869b27af83dbff04705b31b87ee0e6c85b6b9301b88a1ec0a8d5551eb2411fff
MD5 4a9652cd66cc5f521414a36b8642db00
BLAKE2b-256 47febcf350f0d3ca55943de889e3f19a30bab318e4fafe7e2035c2a62b4ca3b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313t-macosx_12_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c3de964d7648e7e0e847b01966113cc2a8990dd0081d27373df13eed41bb4564
MD5 5210d415a346c899f8db536d42e886f8
BLAKE2b-256 2432274ba2e7240ba55b5acdd70550597fc865bbf7b4aa40ad6c92c4f7362e1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b8d2bc11bfd32a72e54926f2d29bf270a5638576ac5edda6695e60dbf41655a9
MD5 93e41d4e878e308a46c975765d90da7a
BLAKE2b-256 ab8166e63f5e4bd3fdf688069a961b5b10ecead21054b015a3e25cb0d87d2a54

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7e4992abb62efcd318e6b784b2b57058c4be852b12d5e19233f4e838bdd98802
MD5 eafc6b73b28820d14afd1547232e56bc
BLAKE2b-256 eb9b9bc1645444f68e4590b32b611e7011851b961b0ac2a82a2830de8d409ee4

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp313-cp313-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 fb0f21890f9bea3e66ccc3bd2e1392694edcfe3cea982c99e748638461e0c08b
MD5 6d5648b16751a0382ec6d6d4014c903f
BLAKE2b-256 057c5de5bfab42d112af2fdac9da591d1da7a4b46460c75c9f8ce2928547cbfe

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp313-cp313-macosx_12_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 107880a302c770f81cb1b790c34f6ee136393d423c7a93a1e5659e72e274699c
MD5 11a5302e0b486fd41c70f957f4f55dcb
BLAKE2b-256 693c29d23cdc7ecddf9b9b380f6a32e11bbf4a5f66d791559a9e55a1e783e21d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 75eb3d8303623581b0581dbe124d8790d2520b6f32b97ad56e8f37019b123e32
MD5 e69b0a60c8f2e0056e3efb53d62727af
BLAKE2b-256 e27f605a47de409f247d4083683620f3d3fb754e34b2ec99da23489f04f991d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0fda02898fc817c4ca26406f91560ea210b3dcf8cdced28bbb974d696ff75511
MD5 6fc976ca8e3e0a19d49a820913cca890
BLAKE2b-256 19d1f04313a779527ddbada4d3a5c3fee1a8c9f78c4db21e7a3ffe3c5775fa1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83a86f1de29cd1df85bc2582c8cc50b89c299e2399cb3fa078e87bc5025eb2f5
MD5 6e62b41d57c05c16c10280ca28258227
BLAKE2b-256 504dd0fce986636a3279bfc825415b481097dd83087c053b2d0c3f4ae2b09f9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 667de86ac9b494aab29889c79bfb88cede8b820e9ed2f049e2c350ed46bf9750
MD5 539e1f3151d91470ed20d7b8d7c9e23c
BLAKE2b-256 ea4bf2d72f4c10622db27e8a2d4c163afb5e65fc8c30e596b04198335669260c

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c5252988953e73ee4759d62373092eafd5773d3b28fbab7b15acc4cd76b607c5
MD5 0acbc4f58b4a9e1624d7776fa3253023
BLAKE2b-256 ba83705bc09238845a1cc03e36d43a6fdd3af3b2f0aa08cf862da1c89d6c0826

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 869f37f799015ad0425a2b0b7a8effeb2cd3101495c8a420f392a854f571032d
MD5 f28f6087d127f2e16780db537e317f9d
BLAKE2b-256 94f39c22286ef9ec8ea53b394ec72fceaee966bc157a8b87be33ca18af5a3027

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be1b63cbf4377b8e39e2cc5995f014fc66ff809699a108a803c415b740ca4bd0
MD5 06288a8e7fbd2605164b2ef7be6b3d85
BLAKE2b-256 08442494304cfaa1967e2fd6c3f636647e6c9898c2fa56f8a32df810f8394452

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: torchrl-0.12.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchrl-0.12.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 dce5303c87acf5bbc0b5fdcba3093449a3c0372d0ceffe67ac35e6ebd62ef60b
MD5 1ebb61af40e2aeeb4ab5f1885391c4b9
BLAKE2b-256 c37d165078a62babf5115d5fef8f44606fc2ea0344b7a8262ccd25f1102e7ddb

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 185686b428592186d0ac375ce542d946eda514bd92595118f4424aeb65695829
MD5 31ce43a3daa6c832ba7f1f25076ce111
BLAKE2b-256 9793e16482ea7335db8f7e293fef42eeb55f932ca096297395b47c9f2025cf7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ad83940aacf075e577ca4747c942f99ada4870d4bebedabef34ad169257193c2
MD5 0716c43add77ee2f51c901fb40d41410
BLAKE2b-256 49b2aea9a4ab3252531d03fe8d0e85fc117426e4e03e32ad9869ff2d0166685e

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchrl-0.12.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.12.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03ef9de6b5206cf34571060ba4f5853ad035bd5f766e27fa0bcad1ef2a02c102
MD5 1f8b15fa126d57f7eedc59bda39faa8c
BLAKE2b-256 60d6f21c5a73212bf59f17324137c17be833e944064064dbb634453e93e1ed12

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.12.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on pytorch/rl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page