RLink
RLink is a lightweight, high-performance communication layer specifically designed for distributed reinforcement learning systems. It enables seamless data exchange between actors (environment interaction) and learners (model training), decoupling sampling from training to scale your RL experiments efficiently.
✨ Key Features
🚀 Low-Latency Communication – Optimized for fast transfer of trajectories, actions, observations, and model parameters
📈 Scalability – Supports many-to-one and one-to-many communication patterns for flexible scaling
🔌 Easy Integration – Simple API to connect existing RL frameworks and training pipelines
🌍 Language-Agnostic Design – Currently supports Python with plans for C++/Rust backends
🛡️ Fault-Tolerant – Optional reliability features to handle intermittent connection drops
🎯 Why RLink?
Building distributed RL systems often involves complex communication infrastructure. RLink simplifies this by providing a dedicated, optimized layer that:
-
Decouples sampling and training processes
-
Accelerates experimentation across multiple processes or machines
-
Reduces infrastructure overhead
-
Enables seamless scaling of actors and learners
📊 Architecture Overview
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ | |
│ RL Actors │────▶│ RLink │────▶│ RL Learners │
│ (Sampling) │◀────│ Communication │◀────│ (Training) │
│ │ │ Layer │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
🚀 Quick Start
Installation
pip install rlinks
Basic Usage
As a actor
from rlinks.actor import RLinkActor
actor = RLinkActor("http://learner-ip:8443")
# Send data to learner.
data = {
"image_0": np.random.randint(0, 255, (480, 640, 3), dtype=np.uint8),
"action": np.random.randint((50, 14)).astype(np.float32),
"index": 0,
}
for i in range(4):
data["index"] = i
actor.put(data)
# Get model from learner.
models = actor.get_remote_model()
As as Learner
# To start the leaner, you can either run it directly in a terminal or daemonize it to run in the background.
rlinks learner --gpu-num 8 --port 8443
rlinks learner --help
from rlinks.dataset import RLinkDataset
class YourDataset:
def __init__(self):
self._rl_dataset = RLinkDataset(gpu_id=torch.cuda.current_device())
def __getitem__(self,idx):
data = self._rl_dataset.__getitem__(idx)
from rlinks.learner import RLinkSyncModel
RLinkSyncModel.sync("your model path")
📚 Use Cases
Distributed RL Training – Scale to hundreds of parallel environments
Multi-Agent Systems – Coordinate communication between agents
Federated RL – Train across distributed data sources
Hybrid Cloud/Edge Training – Deploy actors and learners across different infrastructure
🔄 Communication Patterns
| Pattern | Description | Use Case |
|---|---|---|
| Many-to-One | Multiple actors → Single learner | Centralized training |
| One-to-Many | Single learner → Multiple actors | Parameter distribution |
| Bidirectional | Two-way communication | Advanced coordination |
🛠️ Integration with Popular Frameworks
📈 Performance Benchmarks
🔮 Roadmap
🤝 Contributing
We welcome contributions! Please see our Contributing Guidelines for details. CONTRIBUTING
📄 License
RLink is released under the MIT License. See LICENSE for details LICENSE.
📞 Support & Community
📖 Documentation
🐛 Issue Tracker
💬 Discord Community
🐦 Twitter Updates
Metadata
Release files for rlinks 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| rlinks-1.0.3.tar.gz | 342.8 kB | Without provenance | Details for rlinks-1.0.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| rlinks-1.0.3-py3-none-any.whl | Python 3 | none | any | Details for rlinks-1.0.3-py3-none-any.whl |
Total release size: 363.3 kB
Release files / rlinks-1.0.3.tar.gz
| Download URL | rlinks-1.0.3.tar.gz |
|---|---|
| Size | 342.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76d16e309a43a7be5213df1c3ef7ff0b95553ec216ab7edaee5c64bc1ff183d1
|
|
BLAKE2b-256 checksum How to use checksums |
d0d075bc28992f0c72a7da3ff35501ada75b8499f95bd4e96813b8e8ffaa7ddc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / rlinks-1.0.3-py3-none-any.whl
| Download URL | rlinks-1.0.3-py3-none-any.whl |
|---|---|
| Size | 20.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7a66802b525c69bbe868a9a1f52217435aaca9464944d599576e780d6d874399
|
|
BLAKE2b-256 checksum How to use checksums |
1257b1e4b33b0f565e608fca4beca5a45d3b11ecb1a611aa5c4af834e4453060
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Security for rlinks 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.