{"url":"/method/dd-ppo","slug":"dd-ppo","name":"DD-PPO","full_name":"Decentralized Distributed Proximal Policy Optimization","full_name_withheld":false,"description_markdown":"**Decentralized Distributed Proximal Policy Optimization (DD-PPO)** is a method for distributed reinforcement learning in resource-intensive simulated environments. DD-PPO is distributed (uses multiple machines), decentralized (lacks a centralized server), and synchronous (no computation is ever `stale'), making it conceptually simple and easy to implement. \r\n\r\nProximal Policy Optimization, or [PPO](https://paperswithcode.com/method/ppo), is a policy gradient method for reinforcement learning. The motivation was to have an algorithm with the data efficiency and reliable performance of [TRPO](https://paperswithcode.com/method/trpo), while using only first-order optimization. \r\n\r\nLet $r\\_{t}\\left(\\theta\\right)$ denote the probability ratio $r\\_{t}\\left(\\theta\\right) = \\frac{\\pi\\_{\\theta}\\left(a\\_{t}\\mid{s\\_{t}}\\right)}{\\pi\\_{\\theta\\_{old}}\\left(a\\_{t}\\mid{s\\_{t}}\\right)}$, so $r\\left(\\theta\\_{old}\\right) = 1$. TRPO maximizes a “surrogate” objective:\r\n\r\n$$ L^{v}\\left({\\theta}\\right) = \\hat{\\mathbb{E}}\\_{t}\\left[\\frac{\\pi\\_{\\theta}\\left(a\\_{t}\\mid{s\\_{t}}\\right)}{\\pi\\_{\\theta\\_{old}}\\left(a\\_{t}\\mid{s\\_{t}}\\right)})\\hat{A}\\_{t}\\right] = \\hat{\\mathbb{E}}\\_{t}\\left[r\\_{t}\\left(\\theta\\right)\\hat{A}\\_{t}\\right] $$\r\n\r\nAs a general abstraction, DD-PPO implements the following:\r\nat step $k$, worker $n$ has a copy of the parameters, $\\theta^k_n$, calculates the gradient, $\\delta \\theta^k_n$, and updates $\\theta$ via \r\n\r\n$$ \\theta^{k+1}\\_n =  \\text{ParamUpdate}\\Big(\\theta^{k}\\_n, \\text{AllReduce}\\big(\\delta \\theta^k\\_1, \\ldots, \\delta \\theta^k\\_N\\big)\\Big) = \\text{ParamUpdate}\\Big(\\theta^{k}\\_n, \\frac{1}{N}  \\sum_{i=1}^{N} { \\delta \\theta^k_i}   \\Big) $$\r\n\r\nwhere $\\text{ParamUpdate}$ is any first-order optimization technique (e.g. gradient descent) and $\\text{AllReduce}$ performs a reduction (e.g. mean) over all copies of a variable and returns the result to all workers.\r\nDistributed DataParallel scales very well (near-linear scaling up to 32,000 GPUs), and is reasonably simple to implement (all workers synchronously running identical code).","description_state":"present","introduced_year":null,"introduced_by":{"title":"DD-PPO: Learning Near-Perfect PointGoal Navigators from 2.5 Billion Frames","paper":"/paper/decentralized-distributed-ppo-solving","first_author":"Erik Wijmans","n_authors":8,"url_abs":null,"archive_paper_url":"https://paperswithcode.com/paper/decentralized-distributed-ppo-solving"},"source":{"url":"https://arxiv.org/abs/1911.00357v2","title":"DD-PPO: Learning Near-Perfect PointGoal Navigators from 2.5 Billion Frames","url_on_a_paper_host":true},"code_snippet_url":null,"code_snippet_url_on_a_code_host":false,"categories":[{"area":"Reinforcement Learning","area_id":"reinforcement-learning","collection":"Distributed Reinforcement Learning","url":"/methods/category/distributed-reinforcement-learning","pwc_aliases":[]}],"n_papers_tagged":8,"archive_num_papers":8,"papers_newest_first":[{"paper":null,"title":"Decentralized Distributed Proximal Policy Optimization (DD-PPO) for High Performance Computing Scheduling on Multi-User Systems","date":"2025-05-06","arxiv_id":"2505.03946","n_code_links":0,"syntology":null},{"paper":"/paper/sharing-lifelong-reinforcement-learning","title":"Sharing Lifelong Reinforcement Learning Knowledge via Modulating Masks","date":"2023-05-18","arxiv_id":"2305.10997","n_code_links":2,"syntology":null},{"paper":"/paper/comparison-of-model-free-and-model-based","title":"Comparison of Model-Free and Model-Based Learning-Informed Planning for PointGoal Navigation","date":"2022-12-17","arxiv_id":"2212.08801","n_code_links":1,"syntology":null},{"paper":"/paper/ver-scaling-on-policy-rl-leads-to-the","title":"VER: Scaling On-Policy RL Leads to the Emergence of Navigation in Embodied Rearrangement","date":"2022-10-11","arxiv_id":"2210.05064","n_code_links":1,"syntology":null},{"paper":"/paper/uncertainty-driven-planner-for-exploration","title":"Uncertainty-driven Planner for Exploration and Navigation","date":"2022-02-24","arxiv_id":"2202.11907","n_code_links":1,"syntology":null},{"paper":"/paper/integrating-egocentric-localization-for-more","title":"Integrating Egocentric Localization for More Realistic Point-Goal Navigation Agents","date":"2020-09-07","arxiv_id":"2009.03231","n_code_links":0,"syntology":null},{"paper":"/paper/auxiliary-tasks-speed-up-learning-pointgoal","title":"Auxiliary Tasks Speed Up Learning PointGoal Navigation","date":"2020-07-09","arxiv_id":"2007.04561","n_code_links":1,"syntology":{"ran":1,"of":1,"unverified":0,"pointer_only":1}},{"paper":"/paper/decentralized-distributed-ppo-solving","title":"DD-PPO: Learning Near-Perfect PointGoal Navigators from 2.5 Billion Frames","date":"2019-11-01","arxiv_id":"1911.00357","n_code_links":8,"syntology":null}],"papers_shown":8,"tasks":[{"task":"/task/navigate","name":"Navigate","papers":4},{"task":"/task/pointgoal-navigation","name":"PointGoal Navigation","papers":4},{"task":null,"name":"GPU","papers":3},{"task":"/task/reinforcement-learning","name":"Reinforcement Learning","papers":3},{"task":"/task/reinforcement-learning-1","name":"Reinforcement Learning (RL)","papers":2},{"task":"/task/robot-navigation","name":"Robot Navigation","papers":2},{"task":"/task/reinforcement-learning-2","name":"reinforcement-learning","papers":2},{"task":"/task/autonomous-navigation","name":"Autonomous Navigation","papers":1},{"task":"/task/deep-reinforcement-learning","name":"Deep Reinforcement Learning","papers":1},{"task":"/task/lifelong-learning","name":"Lifelong learning","papers":1},{"task":"/task/objectgoal-navigation","name":"ObjectGoal Navigation","papers":1},{"task":"/task/out-of-distribution-generalization","name":"Out-of-Distribution Generalization","papers":1},{"task":"/task/problem-decomposition","name":"Problem Decomposition","papers":1},{"task":"/task/scene-understanding","name":"Scene Understanding","papers":1},{"task":"/task/scheduling","name":"Scheduling","papers":1},{"task":"/task/semantic-segmentation","name":"Semantic Segmentation","papers":1},{"task":"/task/visual-odometry","name":"Visual Odometry","papers":1},{"task":"/task/model","name":"model","papers":1}],"tasks_shown":18,"n_tasks":18,"usage_by_year":[{"year":"2019","papers":1},{"year":"2020","papers":2},{"year":"2022","papers":3},{"year":"2023","papers":1},{"year":"2025","papers":1}],"row_source":"methods_table","archive":{"source":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","archive_url":"https://paperswithcode.com/method/dd-ppo"},"syntology_read_at":"2026-09-24T18:15:14+00:00"}