rlox — Apprentissage par renforcement accéléré par Rust¶
Le modèle d'architecture Polars appliqué au RL : couche de données en Rust + couche de contrôle en Python.
Pourquoi rlox ?¶
Les frameworks RL comme Stable-Baselines3 et TorchRL font tout en Python. Cela fonctionne, mais le surcoût de l'interpréteur Python devient le goulot d'étranglement bien avant le GPU.
rlox déplace le travail coûteux et sensible à la latence (pas d'environnement, buffers, GAE) vers Rust, tout en conservant la logique d'entraînement, les configurations et les réseaux de neurones en Python via PyTorch.
Résultat : 3 à 50× plus rapide que SB3/TorchRL sur les opérations de la couche de données, avec la même API Python à laquelle vous êtes habitué·e.
Démarrage rapide¶
from rlox import Trainer
trainer = Trainer("ppo", env="CartPole-v1", seed=42)
metrics = trainer.train(total_timesteps=50_000)
print(f"Récompense moyenne : {metrics['mean_reward']:.1f}")
Ou depuis la ligne de commande :
Architecture¶
graph TD
subgraph Python[Couche de contrôle — Python]
A[PPO / SAC / DQN / TD3 / A2C / MAPPO / DreamerV3 / IMPALA]
B[Politiques et réseaux PyTorch]
C[VecNormalize, callbacks, configurations YAML, tableau de bord]
end
subgraph Rust[Couche de données — Rust via PyO3]
D[VecEnv — stepping parallèle Rayon]
E[ReplayBuffer — anneau / mmap / priorité]
F[GAE / V-trace — par lots + Rayon]
G[KL / GRPO — f32 + Rayon]
end
A --> B
B <-->|zero-copy| D
B <-->|zero-copy| E
A --> F
A --> G
Ce que contient la documentation¶
| Guide | Pour qui | Ce que vous apprendrez |
|---|---|---|
| Introduction au RL | Débutant·es en RL | Concepts clés avec des exemples de code rlox |
| Premiers pas | Débutant·es en rlox | Installation, premier entraînement, API de base |
| Guide Python | Tous les utilisateurs | Référence complète de l'API avec exemples |
| Exemples | Tous les utilisateurs | Code copier-coller pour chaque algorithme |
| Composants personnalisés | Intermédiaires | Réseaux, collecteurs, exploration, fonctions de perte personnalisés |
| Migration depuis SB3 | Utilisateurs de SB3 | Comparaison d'API côte à côte |
| Post-training LLM | Praticien·nes LLM | DPO, GRPO, OnlineDPO, BestOfN |
| Référence API | Tous les utilisateurs | Générée automatiquement à partir des docstrings |
| Benchmarks | Chercheur·euses | Comparaison de performance avec SB3/TRL |
| Référence mathématique | Chercheur·euses | Dérivations GAE, V-trace, GRPO, DPO |
| Guide Rust | Contributeurs | Architecture des crates, extension en Rust |
Points forts des benchmarks¶
| Composant | vs SB3 | vs TorchRL / NumPy |
|---|---|---|
| GAE (32K pas) | 135× vs NumPy | 1 588× vs TorchRL |
| Sample buffer (batch=1024) | 9,7× | 6,5× vs TorchRL |
| Push buffer (10K, CartPole) | 4,6× | 60,8× vs TorchRL |
| Rollout de bout en bout (256×2048) | 3,1× | 40,4× vs TorchRL |
| Advantages GRPO | 41× vs NumPy | 35× vs PyTorch |
| Divergence KL (f32) | 2--9× vs TRL | -- |
Algorithmes¶
- On-policy : PPO, A2C, IMPALA, MAPPO — multi-env via
RolloutCollector - Off-policy : SAC, TD3, DQN (Double, Dueling, PER, N-step) — multi-env via
OffPolicyCollector - RL hors-ligne : TD3+BC, IQL, CQL, BC —
OfflineDatasetBufferaccéléré par Rust - Basé sur modèle : DreamerV3
- Post-training LLM : GRPO, DPO, OnlineDPO, BestOfN
- Hybride : HybridPPO — inférence Candle + entraînement PyTorch (180 000 SPS)
Tous les algorithmes supportent des réseaux, stratégies d'exploration et collecteurs personnalisés via l'injection basée sur protocoles. Consultez le guide de migration SB3 pour passer de Stable-Baselines3.
🌐 Traduction : Cette page fait partie du support multilingue expérimental de rlox. Les pages traduites ne couvrent que les contenus les plus consultés ; les autres pages s'affichent en anglais. Envie d'aider ? Consultez le guide pour les traducteur·rices.