{"adoption": {"forks": 812, "observed_at": "2026-08-28T04:08:05.362703+00:00", "stars": 3453}, "canonical_url": "https://ross.abutalabs.com/products/parl", "card": {"archived": false, "artifact_type": "framework", "description": "A high-performance distributed training framework for Reinforcement Learning ", "domain": ["reinforcement-learning", "machine-learning", "deep-learning"], "enriched": true, "function": ["reinforcement-learning", "machine-learning", "llm-training"], "health_score": 45, "homepage": "https://parl.readthedocs.io/", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["PaddlePaddle/PARL"], "name": "PaddlePaddle/PARL", "platform": ["python", "cross-platform"], "pushed_at": "2025-09-13T06:29:18+00:00", "repo": "PaddlePaddle/PARL", "stars": 3453, "tags": ["distributed-training", "parallelization", "paddlepaddle", "rl-algorithms", "xparl", "linux", "gpu"], "topics": ["reinforcement-learning", "large-scale", "parallelization"], "urls": [], "use_cases": ["train reinforcement learning agents at scale", "parallelize RL training across thousands of CPUs", "reproduce classic RL algorithms like DQN and PPO", "build custom RL algorithms by inheriting base classes", "apply GPU-accelerated RL to autonomous driving simulation", "run distributed multi-GPU reinforcement learning experiments"], "what_it_is": "PARL is a flexible, high-performance reinforcement learning framework built on PaddlePaddle, providing Model/Algorithm/Agent abstractions and reproducible implementations of influential RL algorithms. Its xparl component enables large-scale distributed training across thousands of CPUs and multiple GPUs with a simple decorator-based API.", "when_to_avoid": ["you prefer PyTorch- or TensorFlow-based RL libraries like Stable-Baselines3 or RLlib", "you only need small-scale single-machine RL without parallelization", "you need supervised or self-supervised learning rather than RL"], "when_to_choose": ["you need scalable, distributed RL training with minimal code changes", "you want reproducible implementations of standard RL algorithms", "you are already using the PaddlePaddle ecosystem", "you need to parallelize environment data collection across many CPU workers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/parl", "repo": "PaddlePaddle/PARL", "role": "main", "score": 41}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.362703+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:37:32.414709+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efdc16eaee52d3bf521c7bc71d8b00caa1805afed003224a974380da2b296e5", "fetched_at": "2026-08-28T04:08:05.362703+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PaddlePaddle/PARL"}, {"content_hash": "850f0500218a785f5a78bc34005cdcdaaf795fc668f9ca465446b3b29404d62e", "fetched_at": "2026-08-29T09:31:48.690094+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/parl/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 41, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3052, "days_push": 354, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 41, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}