Skip to main content

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

Project description

Unit-tests 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 SyncDataCollector
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 = SyncDataCollector(
  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 re-use 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 re-used 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 = MultiaSyncDataCollector(
        [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 funciton 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.11.1-cp314-cp314t-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.14tWindows x86-64

torchrl-0.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp314-cp314t-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

torchrl-0.11.1-cp314-cp314-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.14Windows x86-64

torchrl-0.11.1-cp314-cp314-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp314-cp314-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp314-cp314-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

torchrl-0.11.1-cp313-cp313t-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13tWindows x86-64

torchrl-0.11.1-cp313-cp313t-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp313-cp313t-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp313-cp313t-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

torchrl-0.11.1-cp313-cp313-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.13Windows x86-64

torchrl-0.11.1-cp313-cp313-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp313-cp313-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp313-cp313-macosx_12_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

torchrl-0.11.1-cp312-cp312-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.12Windows x86-64

torchrl-0.11.1-cp312-cp312-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp312-cp312-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp312-cp312-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

torchrl-0.11.1-cp311-cp311-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.11Windows x86-64

torchrl-0.11.1-cp311-cp311-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp311-cp311-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp311-cp311-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

torchrl-0.11.1-cp310-cp310-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.10Windows x86-64

torchrl-0.11.1-cp310-cp310-manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

torchrl-0.11.1-cp310-cp310-manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

torchrl-0.11.1-cp310-cp310-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 96a6bcb6325a983a1ef15a6c0d5be012c4588bfb5d65735b9f00af0a2bdeb844
MD5 8bdb75cce700ab185f228d119d98bc55
BLAKE2b-256 ce23165348e9502dc7004080a0ba6364d414826ca282c951fc36cbbb3e1fa8b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 750acfc08d606434397460c34ddd4fb8debe1ffc525a0b8036f1ea7f0f9b2278
MD5 c471b15dac9d3cae5f32edc3a746c394
BLAKE2b-256 53573d551d13f0bd04451d00c43945474454a27f5bfb2bd286023937c2efe3cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d313a7c975aeb682df63309254fab58a6e025aa22afab5730746a50564a22707
MD5 bc19cdc819569d989f2c24e7bccaea4b
BLAKE2b-256 463d2f19cddab62cb8dc0a2e2a5053d6c100c9c1c4aa2b436de91a4e0e73c2bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64ac7e97650524315392b49c911165ec8feee463fc830d3ff1714c8adc2b729f
MD5 342fe144a868ae9b59d30711ca63e28d
BLAKE2b-256 dfc60acd65d89557d3617db6d9e75de9cd5a430dcd9009b981a22681664690be

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-cp314-cp314t-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.11.1-cp314-cp314-win_amd64.whl.

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 bb831b52630aa1ae873ca349c40c0e2990d3862fc7a75b3d879ce79583628d9d
MD5 00e3558695af69459e7d1f4fefbbc850
BLAKE2b-256 da138618422952ff2df224fca07a4bbf15ebfb242d9b78348cb09834115003a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9340df4cbd29d960075b97a0c2deba5f5f6c35e676ac6152703311cb507c1249
MD5 9f665d9af7b57fafdfc9d8004fa1c955
BLAKE2b-256 b3e2c7f0d83c43c533ba7d4489841631ec91305380ee580d7cd13d5f4fbc7a8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0e1dc505a290c358d7f970b4c7b563e2f6ed1a66b8be2e02d256bf5400f378ce
MD5 175cea70bd2a3a57bd220f9699427908
BLAKE2b-256 852a30bc2d00e050a0672beb599bf5c8630a92ae56ae992975c119167071f854

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d335957a5ed16e2cf5133c2a0b877d2fbd0a942d1e5febe4abf40a1fc8a0049b
MD5 8058281c61a6e67a10952bfde9bff9b2
BLAKE2b-256 6f42cb133b3b12152af903dffeb0955f314e472d3eabb7baa1a8eb2176a7fb21

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-cp314-cp314-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.11.1-cp313-cp313t-win_amd64.whl.

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 a8176fda648d2a734069a6a881ed1e383e1ff98b552d87159132c102696fde8e
MD5 34d02f20c277044b074c93e15fff30e7
BLAKE2b-256 d2d52ba34332cf88a74910cdedf6910c99a2cae1dbc955fce4a84d14e7b03355

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a114f19d85050ae9c80299a3d141dd8159a30a8466bef4be94a74e7c555cadec
MD5 67c9d572142d9ba37d5bbe47f4cdd0df
BLAKE2b-256 e5534b87fc91785b2b9bb9efb451ea44d8fe159e25ad96a47166b20a58e687ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ea7f8a2fe8785f5e12c19e91a3838bef59bc3e64533e7b73629ad9de4117d628
MD5 d74f9653aaf945bd5a6046c5defacc2b
BLAKE2b-256 5785b92223d8766ba5376a57a5c254daf340d3cdbc732dc0922e558f771a99e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf4fa8baea191a66f2319f2b95f4ff64643340f87ab57d7d73060bc655ee8ce2
MD5 392d7882560a1a31d5cccdccef8e04b2
BLAKE2b-256 527da3f45c4dad7cf5b03f4e83a2b28f58d3bc9e09be1478a50c3cb6d584cfdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-cp313-cp313t-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.11.1-cp313-cp313-win_amd64.whl.

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 583f4ebcc4cd5a6d8b22f9db209acabd8b6f0280e8e72218237ebecd77b62bf7
MD5 6a48ff07d360ee2bab7de3a15cb9c697
BLAKE2b-256 0f85c06fb51ae249e417f9709fb5d03dd4a088592f04fd7cdb540d8ee41db082

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 020ac8516ce78e5d3b47a9f1177302de508af6595edfd762ff5ddbf57cf82b7d
MD5 9f5c9e182a2494f4c2e4ea5257eeb6fb
BLAKE2b-256 6ca4eaa60adda7be941b3edb4868d95478b2204521eb49c0364756e133c7e0e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f28fdcc0f3f21ea7e469eef10145d6b3dfd9132496bad628c7d859a7b6e52758
MD5 05c0ef1b55fbf64ffa93e61d30afe470
BLAKE2b-256 489be90541a545104472c6a1d1052a0402f7e84edba8eba06e1f45281032acb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp313-cp313-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp313-cp313-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 29ec01224aa792e3213a67167313e6abcefef0bdc83d2654ce6612b591e3f9a5
MD5 32a8cc1151a3fbf482407185d58312d0
BLAKE2b-256 d8c55a79490271eea9fb0c952db88579b1fba081319caa3416416e4b32468fdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp312-cp312-win_amd64.whl.

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 381e485b1cef07cbf4f847f9368f957d5a73fd5fb03cb54157da73b9c7332cfe
MD5 5df4ff8c6aa316ceb9d8b5965076a5ee
BLAKE2b-256 20b39969d77db3224d13b73383e22e15ed9cd7517c3d87eb8edad88c7c95ae1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de87f1b9e4f8d5ed803fdf0a4f147200c894c3ddea609f22257020fbffb34396
MD5 32551132d7ecc25cb5fe95b1a1c30fa7
BLAKE2b-256 788a9c34e438219df53d983dddc824dad47735cbfe929c582038094a7d2d57d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a0a0bbf524db1d7ef910aa12b3fad82a3ff737cdf4d40a191c21911b1f5104f2
MD5 4625fe8b743e06b23ff3e24664eb0466
BLAKE2b-256 a33610e11087065010ed55bfb67725693342336e9c62d8c03f19ec57898546f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a991ebc62be32b801d8668fc0ab094519bfa1b4266dc9955f78fed735f333674
MD5 776127950fa7cea455f6bd5072ff6ee6
BLAKE2b-256 c89987021c03312e717371183e86cdaf259b89e266c087bfac93bb86caaa268f

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f92b3b31d6d0a949f243ebd1666dd995f0039c9b9d32bed3d5266de47112d24a
MD5 759d601a46c49549f6c7e62403b525ef
BLAKE2b-256 ccdf0bb99793b63c4c03fbfbd5e3f77ea12edcede117c84a988b144c9c772daf

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 74b245381555406e7b3658f249306478833843059e95318875616294a04487cb
MD5 10d3fd445952f8670df2265bac890e20
BLAKE2b-256 cd204adb692fb11fd10d03675b06f4405365b5aa0711ff7ef0332dbc2d152a43

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2c059b7653b212ea72475f88cb82f8e59c7b0294c087c8d76241f660bdc25a64
MD5 405558bdddbdf79e46ae77e4685e655c
BLAKE2b-256 289428f099870dd1278133f47fad0f07a4669f8438fc7b5f1fe4c8e66df2d05a

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b5239791fc2a7011119784e162234a9e6fa0c6356176e51f59b6187398a6b8c
MD5 9945c4dc357bad7a52193ecda54d84fb
BLAKE2b-256 7c319e6f9a4c585d5c2047c279204a8f145ad516be956fdde07168f96eddd6a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for torchrl-0.11.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a01b2ff1e2df92ac30f939b67b9a2a7097451a2bd0f9be4999f1ff57948bd79c
MD5 ecd0945b48d2ca5e5a106a7989266bf4
BLAKE2b-256 3d97e4097e0e9f6782fcf9e6f002708c2fd5bcbdd6f9589b4c64ef94d6018957

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 99808050cd5ad85d55dd8fab74c196ff0caa5035ba9f98e2e5838e0e7526466c
MD5 c0e16a5dd8d27a9f061a0c2f792706a3
BLAKE2b-256 adbc976b00c3a3cd9808f6e711e98f96514d15858acf4e0c6e286c6ae8549bb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0feb34545c1084cb552404e9b021f4c17f95b2628d33c256563495e53dc0d206
MD5 f8ddd145d7e1d1c08ec3c508959b02da
BLAKE2b-256 9af4bd792f1bb2512ae909921a34beef126a8c7febf15e278c348fe2286cba1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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.11.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torchrl-0.11.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68a6dbbed25ba4205df1e847aa46f7a6f2c82c970a8fb687b743f4abf81d195d
MD5 de2ec4ea957742fe15c1a6ea151c7d43
BLAKE2b-256 1aa5bfd7fc572751058b1fbc78e7e812538eb46c697b21a5f5af4db1239dc6fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchrl-0.11.1-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