ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

异步强化学习中PPO算法的旧Logits缺失问题与工程修复方案

2026/8/20 2:44:03 拓冰建站 浏览量
异步强化学习中PPO算法的旧Logits缺失问题与工程修复方案 1. 项目概述异步智能体强化学习中的“旧Logits缺失”问题在深度强化学习DRL的实际工程落地中尤其是在处理复杂、长周期任务的异步智能体Asynchronous Agentic RL场景下我们常常会采用像PPOProximal Policy Optimization这类先进的策略梯度算法。这类算法的核心魅力在于其“近端”优化思想通过引入重要性采样和裁剪机制试图在策略更新的激进与保守之间找到平衡从而实现更稳定、更高效的学习。然而当我们把PPO这类原本为同步、同策略on-policy环境设计的算法嫁接到异步、异策略off-policy的智能体框架中时一个看似微小却影响深远的“幽灵”问题便会浮现出来——我称之为“旧Logits缺失”Missing Old Logits。简单来说Logits指的是策略网络在做出决策前输出层未经归一化如Softmax处理的原始得分。在标准的PPO算法中为了计算重要性采样比率Importance Sampling Ratio我们需要同时知道当前策略新策略和旧策略用于采集数据的那一版策略在相同状态下对每个动作产生的Logits。这个比率是PPO实现高效、稳定异策略学习的数学基石。但在异步智能体系统中多个智能体副本在不同时间步、基于不同版本的策略网络与环境交互采集到的经验数据被统一存入一个共享的经验回放池Replay Buffer。当学习器Learner从池中随机采样一个批次batch的数据进行更新时它手头只有当前最新的策略网络参数而生成这批数据时所用的那个“旧策略”早已随时间流逝而更新其对应的“旧Logits”在原始数据中并未被保存下来。这就导致了“语义不匹配”Semantic Mismatch我们试图用当前策略的视角去理解和修正一个由历史策略产生的行为轨迹却丢失了理解那个历史行为的最关键上下文——旧策略当时的“想法”即旧Logits。这个问题绝非理论上的吹毛求疵。在机器人控制、游戏AI对战、自动驾驶决策等需要长期探索和稳定学习的场景中忽略它会导致PPO的裁剪机制失效重要性采样比率计算失真最终表现为策略更新方差巨大、学习曲线剧烈震荡、甚至策略性能崩溃。本文将深入拆解这一问题的根源并分享几种在实践中被验证有效的修复方法包括基于价值函数近似的修正、目标策略平滑技术以及双网络架构设计旨在为在异步RL系统中稳健应用PPO提供一套可落地的工程方案。2. 核心问题语义不匹配的根源与影响分析要彻底理解“旧Logits缺失”带来的危害我们必须先回到PPO算法的核心公式并看清它在异步异策略场景下面临的挑战。2.1 PPO中的重要性采样与裁剪机制PPO算法的目标函数可以简化为以下形式L^{CLIP}(θ) E_t [min( r_t(θ) * A_t, clip(r_t(θ), 1-ε, 1ε) * A_t )]其中r_t(θ) π_θ(a_t | s_t) / π_{θ_old}(a_t | s_t)即重要性采样比率A_t是优势函数估计ε是一个超参数通常为0.1或0.2。这里的π_θ(a_t | s_t)和π_{θ_old}(a_t | s_t)分别代表新策略和旧策略在状态s_t下选择动作a_t的概率。在实现中这个概率通常由策略网络输出的Logits经过Softmax得到。因此准确计算r_t(θ)的前提是我们必须同时拥有θ当前参数和θ_old采集数据时的参数下的Logits。在标准的同步同策略PPO中这不成问题。算法流程通常是用当前策略θ_k与环境交互收集一个批次的数据然后用这些数据对θ_k进行多次更新得到θ_{k1}。在更新过程中θ_old被固定为θ_k其Logits在数据收集时就已经确定并可以方便地用于计算。2.2 异步异策略场景下的数据流断裂然而在异步智能体强化学习框架中情况变得复杂。典型的架构包含多个“演员”Actor和一个“学习器”Learner多个演员每个演员拥有策略网络的一个副本它们独立且异步地与各自的环境实例进行交互。每个演员在交互时使用的是它从学习器那里异步拉取到的某一时刻的策略参数θ_{actor}。经验回放池所有演员将交互产生的转移样本(s_t, a_t, r_t, s_{t1}, ...)存入一个共享的先进先出FIFO缓冲区。单一学习器持续从回放池中随机采样小批量数据用来更新一个中心策略网络参数θ。问题就出在这里。当学习器采样到一条由某个演员在很久以前产生的数据(s_t, a_t, ...)时产生这条数据所用的策略参数θ_old即当时那个演员本地的θ_{actor}很可能与学习器当前的参数θ相去甚远。更重要的是在标准的经验样本中我们通常只存储(s, a, r, s‘, done)并不会存储生成动作a_t时策略网络输出的原始Logits。因此当学习器试图计算r_t(θ) π_θ(a_t | s_t) / π_{θ_old}(a_t | s_t)时它无法获得分母π_{θ_old}(a_t | s_t)的真实值。2.3 语义不匹配的具体表现与后果这种信息的缺失直接导致了“语义不匹配”。我们只能用一个近似值来代替真实的旧策略概率常见的错误做法是忽略分母直接假设π_{θ_old}(a_t | s_t)为1或者使用一个常数。这完全破坏了重要性采样的无偏性基础。用当前策略近似使用π_θ(a_t | s_t)同时作为分子和分母的近似这会使r_t(θ)恒等于1PPO的裁剪机制完全失效退化为普通的策略梯度带来高方差更新。存储旧概率在存入经验池时存储动作对应的旧概率值。但这存在严重缺陷概率值依赖于具体的动作采样结果。对于同一个状态s_t和策略θ_old如果因随机采样得到了不同的动作a_t‘存储的概率值π_{θ_old}(a_t‘ | s_t)就不同。这破坏了经验样本的“状态-动作”价值评估的一致性使得学习目标变得模糊。后果是显而易见的高方差与不稳定重要性采样比率估计不准优势函数A_t的估计也会被污染导致策略梯度估计的方差急剧增大学习过程剧烈震荡。收敛到次优解裁剪机制失效策略更新可能过于激进错过潜在的更优策略区域或者陷入局部最优。样本效率降低本应通过异策略学习提高数据复用率却因修正不准而需要更多样本来稳定学习违背了使用经验回放的初衷。注意这里说的“Logits”缺失在离散动作空间中问题尤为突出因为概率计算直接依赖于Logits。在连续动作空间如高斯策略中对应的是缺失旧的策略分布参数如均值和方差。问题的本质是相同的我们丢失了生成历史数据时策略的完整“意图描述”。3. 修复方法一基于价值函数与目标策略的近似修正既然无法直接获得旧的π_{θ_old}(a|s)最直接的思路就是想办法近似它。一种在实践中行之有效的方法是结合价值函数和引入“目标策略”的概念。3.1 利用Q函数或优势函数进行间接约束PPO的裁剪目标本身包含了优势函数A_t。我们可以从“避免策略更新过大”这个PPO的原始设计目标出发即使没有精确的π_{θ_old}也可以通过约束新策略π_θ相对于数据分布的变化来达到稳定学习的目的。一个改进的损失函数设计如下L(θ) E_{(s,a)~D} [ λ * L^{VF}(s; θ) min( r(θ) * A_{est}(s,a), clip(r(θ), 1-ε 1ε) * A_{est}(s,a) ) ]这里的关键变化在于A_{est}(s,a)和r(θ)的处理A_{est}(s,a)我们使用一个独立训练的价值函数网络V_φ(s)或Q函数网络Q_ω(s,a)来估计优势。这个价值网络用回放池中的所有数据训练其更新频率可以高于或低于策略网络但它提供了一个相对稳定、不依赖于当前策略θ的“价值基准”。我们可以使用GAEGeneralized Advantage Estimation或其他方法但基于V_φ或Q_ω来计算A_{est}减少了对当前策略π_θ的依赖。r(θ)的近似我们不再强求精确的π_{θ_old}。一种方法是引入一个“延迟更新”或“缓慢更新”的目标策略网络π_{θ_target}。这个θ_target的参数通过Polyak平均θ_target - τ * θ (1-τ) * θ_target, τ很小如0.005从当前策略θ缓慢更新。在计算重要性采样比率时我们用π_{θ_target}(a|s)来近似π_{θ_old}(a|s)。因为θ_target变化缓慢它在一定程度上代表了“近期历史策略”的一个平滑版本比直接用快速变化的θ来近似要稳定得多。3.2 目标策略平滑的具体实现在代码层面这通常意味着你需要维护四个网络当前策略网络π_θ当前价值网络V_φ(或Q网络)目标策略网络π_{θ_target}目标价值网络V_{φ_target}(可选用于稳定价值目标计算)训练循环如下# 伪代码示意 for update_step in range(total_updates): # 1. 从回放池D中采样批次数据 (s, a, r, s‘, done) batch replay_buffer.sample(batch_size) # 2. 使用目标价值网络计算优势估计 A_est with torch.no_grad(): values V_phi_target(batch.next_states) # ... 使用TD(λ)或GAE计算 advantages advantages compute_advantages(batch.rewards, values, batch.dones, ...) # 3. 计算近似的重要性采样比率 current_probs π_θ(batch.states).log_prob(batch.actions) # 对数概率 target_probs π_θ_target(batch.states).log_prob(batch.actions) # 对数概率 log_ratio current_probs - target_probs ratio torch.exp(log_ratio) # 4. 计算PPO裁剪损失 surr1 ratio * advantages surr2 torch.clamp(ratio, 1-clip_epsilon, 1clip_epsilon) * advantages policy_loss -torch.min(surr1, surr2).mean() # 5. 价值函数损失可选用目标策略平滑不价值函数通常用目标网络稳定 value_loss F.mse_loss(V_phi(batch.states), batch.returns) # returns用目标V网络计算 # 6. 更新当前网络 optimizer.zero_grad() (policy_loss value_coef * value_loss).backward() optimizer.step() # 7. 软更新目标网络 soft_update(π_θ, π_θ_target, tau) soft_update(V_φ, V_φ_target, tau)实操心得目标策略平滑中的τ值选择至关重要。在异步环境且数据延迟较大的情况下τ可能需要设置得更小如0.001让目标策略变化更慢以更好地代表“过去一段时期”的策略混合体。同时价值网络V_φ的训练最好使用来自目标价值网络V_{φ_target}计算的TD目标这能有效防止价值估计发散进一步稳定优势估计A_est。4. 修复方法二双网络架构与确定性策略梯度结合对于连续动作空间的任务另一种思路是跳出概率比率计算的框架借鉴确定性策略梯度DPG和DDPG/ TD3的思想构建一个专门用于生成“行为策略”的网络从而显式地分离“行为”与“优化”。4.1 行为策略网络与优化策略网络这个方法的核心理念是既然我们无法完美重现历史策略的概率分布不如直接维护一个专门用于与环境交互、其更新受到约束的“行为策略网络”Behavior Policy Network。而另一个“优化策略网络”Optimization Policy Network则负责进行激进的目标优化其更新不直接影响数据收集。具体架构行为策略网络π_β(s)这是一个确定性策略网络输出动作均值或者是一个带有固定较大探索噪声的随机策略。它负责所有演员与环境交互。其参数θ_β的更新方式受到严格限制例如通过Polyak平均从优化策略网络缓慢更新θ_β - τ * θ (1-τ) * θ_β。或者定期如每N步将优化策略网络的参数完全拷贝给行为策略网络。优化策略网络π(s)这是PPO算法主要优化的对象。它使用从回放池由行为策略π_β生成的数据中采样的数据来更新。在计算PPO损失时我们用行为策略π_β来近似旧策略π_{old}。因为π_β的更新是缓慢或周期性的所以在任意一个数据样本被学习器使用时生成该数据的行为策略版本π_β_old与当前的行为策略π_β差异不会太大。更重要的是我们可以在存储经验时额外存储生成该动作时行为策略网络的输出对于确定性策略就是动作均值对于高斯策略就是均值和方差。这样在计算重要性采样比率时我们就有了一个相对准确且一致的“旧策略”参考。4.2 实现细节与损失函数调整在实现上经验回放池中的每条记录扩展为(s_t, a_t, r_t, s_{t1}, μ_β(s_t), σ_β, done)其中μ_β(s_t)和σ_β是行为策略π_β在状态s_t下输出的分布参数。优化策略网络π_θ的PPO损失计算变为对于采样到的数据(s, a, μ_β, σ_β)计算优化策略的动作概率密度p_θ(a|s)。计算行为策略旧策略的动作概率密度p_β(a|s)利用存储的μ_β, σ_β。重要性采样比率r(θ) p_θ(a|s) / p_β(a|s)。用这个r(θ)和基于价值网络估计的优势A_est代入标准的PPO裁剪公式计算策略损失。同时行为策略网络π_β的更新需要谨慎设计。一种稳健的方案是让它定期与优化策略网络同步并在同步间隔内添加固定的探索噪声如OU噪声或独立高斯噪声。这样既能保证探索又能让“旧策略”的参考p_β(a|s)在数据有效期内保持有效。注意事项这种方法增加了存储开销需要存分布参数和一定的计算开销需要计算旧策略的概率密度。对于高维连续动作空间存储完整的协方差矩阵不现实通常假设各维度独立只存储对角方差。此外行为策略的探索噪声强度需要仔细调优噪声太小可能导致探索不足噪声太大则会使存储的μ_β, σ_β失去作为“旧策略”参考的意义因为实际动作a_t已经偏离分布中心很远。5. 修复方法三基于轨迹的概率乘积与重要性权重修正前两种方法主要针对单步转移样本。对于具有信用分配困难的长序列任务我们有时需要从整个轨迹Trajectory的层面进行异策略修正。这时“旧Logits缺失”问题就演变成了“旧轨迹策略缺失”。一种应对思路是使用基于轨迹的重要性权重Trajectory Importance Weighting。5.1 轨迹重要性采样的原理在异策略评估中要估计新策略π_θ下的期望回报使用旧策略π_β采集的轨迹数据需要乘以一个轨迹级别的重要性权重ρ(τ) [Π_{t0}^{T} π_θ(a_t|s_t)] / [Π_{t0}^{T} π_β(a_t|s_t)]其中τ (s_0, a_0, r_0, s_1, a_1, r_1, ..., s_T)。在异步RL中我们同样没有存储轨迹上每一步的π_β(a_t|s_t)。但是如果我们采用上节所述的双网络架构并且在存储整个轨迹或一个片段时记录下该轨迹起始时刻的行为策略网络参数快照θ_β_start那么我们就可以在后续学习时用这个固定的θ_β_start来重新计算整条轨迹上每一步的π_{β_start}(a_t|s_t)。5.2 实现方案与权衡具体操作流程数据收集每个演员在开始一段新的轨迹或达到一定步数时记录当前本地的行为策略网络参数θ_β_start。然后用这个固定的策略交互一段轨迹将轨迹数据(s_t, a_t, r_t, ...)连同θ_β_start一起打包存入回放池的一个特殊“轨迹缓冲区”。学习采样学习器从“轨迹缓冲区”采样整条轨迹而不是独立的转移样本。权重计算对于采样到的轨迹使用存储的θ_β_start实例化一个临时策略网络前向传播计算轨迹上每一步的旧策略概率π_{β_start}(a_t|s_t)。同时用当前的优化策略网络π_θ计算新策略概率π_θ(a_t|s_t)。然后计算轨迹重要性权重ρ(τ)。损失计算使用加权的重要性采样策略梯度或者将ρ(τ)作为一个权重因子乘到每一步的PPO损失上。为了控制方差通常会对ρ(τ)进行裁剪或规范化。这种方法的优点是提供了理论上更准确的异策略修正尤其适合回合制任务或需要精确信用分配的场景。但缺点也非常明显存储与计算开销大需要存储策略参数快照和整条轨迹计算时需要为每条采样的轨迹进行两次完整的前向传播旧策略和新策略。延迟与策略漂移即使存储了θ_β_start如果轨迹很长或者从数据存入到被采样学习的时间间隔很长当前优化策略π_θ可能已经与π_{β_start}以及轨迹中后期的真实策略发生了巨大偏离。这时用起始策略代表整条轨迹的策略仍然会引入误差。实操心得轨迹重要性权重法通常与优势估计器如GAE结合使用并且ρ(τ)的裁剪阈值需要设置得非常保守比如[0.9, 1.1]以控制方差。在实践中除非任务对长程依赖和精确的异策略校正有极高要求例如某些棋盘游戏或稀疏奖励机器人任务否则由于其复杂性和开销这种方法的使用频率低于前两种单步修正方法。一个折中的方案是使用片段segment而非完整轨迹例如存储50-100步的片段及其起始策略参数。6. 工程实践系统设计与调参指南将上述理论方法落地到一个高效的异步PPO系统中需要精心的工程设计和参数调优。以下是一些关键的实践要点。6.1 异步训练框架的选择与数据流设计首先你需要选择一个支持异步数据生产的训练框架。Ray的RLlib、Seed RL的架构或者自己基于多进程/分布式PyTorch构建都是常见选择。核心是确保演员进程数据生产者和学习器进程数据消费者之间高效、低延迟的通信。数据流设计建议回放池实现使用环形缓冲区Ring Buffer实现经验回放池。考虑使用两个池一个用于高频更新的“近期数据池”大小较小一个用于长期保存的“主要数据池”。学习器优先从“近期数据池”采样以减轻策略漂移问题。策略同步演员定期如每1000步从学习器拉取最新的策略参数。拉取频率是关键超参数太频繁会增加通信开销和策略变化速度太慢会导致演员使用过于陈旧的策略加剧语义不匹配。可以尝试自适应同步策略例如当学习器参数更新超过一定范数时再触发同步。数据优先级如果使用优先级经验回放PER要谨慎设计优先级计算方式。在异步PPO中TD误差大的样本可能正是因为其“旧策略”与当前策略差异巨大所致盲目优先重放它们可能有害。可以尝试结合样本的“年龄”存入时间来调整优先级。6.2 超参数调优策略在异步异策略PPO中一些超参数的意义和敏感度发生了变化裁剪系数 ε在存在“旧Logits近似误差”的情况下ε应该设置得比标准PPO更小例如0.05-0.1以实施更严格的更新限制防止因比率不准而导致的破坏性更新。学习率与优化器建议使用更小的学习率并配合学习率衰减。Adam优化器仍然是可靠的选择但其β1、β2参数可以微调以平滑梯度更新。批次大小与更新次数由于数据来自不同的历史策略批次大小Batch Size不宜过小以提供足够的多样性来平均掉不同策略带来的噪声。每次采样数据后对策略进行更新的次数PPO的K_epochs也可以适当减少例如3-5次避免在当前数据上过拟合因为数据代表的策略分布可能已经过时。GAE参数 (λ, γ)折扣因子γ和GAE参数λ共同决定了优势估计的偏差-方差权衡。在异步异策略下由于价值估计可能因策略漂移而不准可以适当减小λ如0.9-0.95让优势估计更偏向于低方差的多步TD回报而非高方差但低偏差的蒙特卡洛回报。目标网络更新系数 τ如果采用了目标策略平滑或双网络架构τ是最关键的参数之一。可以从一个很小的值开始如0.001根据学习曲线的稳定性缓慢增加。如果学习不稳定曲线震荡大就降低τ如果学习过于缓慢策略几乎不更新则适当增加τ。6.3 监控与调试技巧有效的监控是调试异步RL系统的眼睛。重要性采样比率监控在训练过程中持续监控重要性采样比率r_t(θ)的统计量均值、标准差、最大值、最小值。理想情况下其均值应在1附近标准差不应过大。如果出现大量比率接近0或极大值如10说明新旧策略差异巨大近似方法可能已失效。策略熵监控策略熵Policy Entropy是衡量探索程度的重要指标。在异步设置下熵的急剧下降可能意味着某个演员的策略陷入了局部最优并污染了回放池。可以设置一个熵的下限奖励entropy bonus来鼓励探索。梯度范数监控监控策略网络和价值网络梯度的范数。异步训练中梯度爆炸更常见如果发现梯度范数突然飙升可能是由于采样的数据批次中包含了来自某个“坏策略”的异常数据。数据年龄分布记录回放池中样本的“年龄”从存入到被采样的步数。绘制其分布图。如果大量被采样的数据都非常“老”说明数据周转率低策略漂移问题会非常严重。你需要增加演员数量或提高学习器采样频率。分演员性能监控如果可能跟踪不同演员副本在各自环境中的实时性能如回合奖励。这有助于发现是否有个别演员由于策略同步延迟或其他问题而持续表现不佳从而拖累整体学习。7. 常见问题与排查技巧实录在实际部署和调试异步PPO系统解决“旧Logits缺失”问题时我遇到过不少坑。这里记录一些典型问题和解决思路。7.1 问题训练初期性能急剧下降甚至崩溃现象训练开始后平均回报不是缓慢上升而是快速下降至零或负值策略很快失去探索能力。排查与解决检查重要性采样比率首先输出r_t(θ)的分布。如果发现大量比率小于0.1或大于10说明新旧策略概率估计严重失准。临时解决方案在计算策略损失时对r_t(θ)施加更严格的裁剪例如将clip的范围从[1-ε, 1ε]缩小到[1-0.5*ε, 10.5*ε]甚至直接使用torch.clamp(r_t(θ), 0.5, 2)这样的硬限制先让训练稳定下来。检查价值函数价值函数V(s)的预测值是否出现NaN或绝对值巨大在异步设置中由于数据来自不同策略价值目标r γV(s‘)可能非常不稳定导致价值网络训练发散。解决方案降低价值函数的学习率确保使用目标价值网络来计算TD目标在价值损失中加入梯度裁剪。检查探索策略熵是否在最初几步更新后就迅速归零如果是说明策略网络过早地确定了一个可能是很差的动作。解决方案增加熵奖励系数确保行为策略或探索策略有足够的随机性例如在离散动作空间使用更大的初始温度参数在连续动作空间增加探索噪声的强度。7.2 问题学习曲线震荡剧烈无法稳定提升现象平均回报像锯齿一样上下波动没有明显的上升趋势。排查与解决分析数据年龄从回放池中采样一批数据计算其平均年龄。如果平均年龄超过了几万甚至几十万步那么学习器基本上是在用“考古”数据训练策略更新自然不稳定。解决方案减小回放池的总容量迫使系统使用更新鲜的数据或者增加演员数量提高数据生成速度。调整目标网络更新系数 τ如果使用了目标策略网络过大的τ会导致目标网络更新太快无法起到平滑作用过小的τ则会导致目标网络几乎不变失去了对历史策略的近似意义。尝试以0.005为基准上下调整一个数量级0.0005到0.05进行实验。批次内数据方差计算当前批次数据中优势函数A_t的方差。如果方差过大会导致梯度更新噪声大。解决方案在计算PPO损失前对批次内的优势估计进行标准化减去均值除以标准差这是一个标准且有效的技巧。策略更新频率过高检查学习器更新策略的频率是否远高于演员生成数据的速度。这会导致策略参数在少量新数据上过度优化然后当新数据到来时策略又发生了巨大变化。解决方案增加学习器每次更新所用的数据量增大batch size或者降低学习器的更新频率例如每收集N步数据才更新一次。7.3 问题训练后期性能停滞不前现象学习曲线在达到一个中等水平后进入平台期长时间没有进步。排查与解决探索不足策略熵是否已经降至很低在异步框架中所有演员共享同一个策略如果探索不足系统可能陷入一个局部最优的“共识”策略。解决方案尝试在训练中期重新引入或增大探索噪声如周期性地增加高斯噪声的标准差或者使用内在好奇心驱动探索等更高级的探索方法。近似误差累积我们使用的“旧Logits”近似方法如目标策略网络在长期训练中可能会引入系统性偏差。解决方案定期例如每100万步将行为策略网络完全重置为当前优化策略网络并清空回放池重新开始收集数据。这相当于进行了一次“策略重启”可以打破近似误差的累积。价值函数过估计在异策略算法中Q值或V值过估计是常见问题。解决方案借鉴TD3的思想使用两个独立的价值网络取最小值作为目标值计算或者使用保守的价值函数更新方法。7.4 问题计算资源消耗异常现象GPU内存使用率持续增长或训练速度随着时间明显变慢。排查与解决回放池内存泄漏检查回放池的实现确保过期数据被正确覆盖或删除。在环形缓冲区中如果索引计算有误可能导致数据没有被正确覆盖。计算图未释放在计算重要性采样比率时如果旧策略的概率是通过一个持续保存历史参数的计算图计算的可能会导致计算图不断累积。解决方案在计算旧策略概率时使用torch.no_grad()上下文管理器并确保不保留不必要的中间变量引用。进程间通信阻塞如果演员和学习器之间的参数同步或数据传递出现阻塞会导致演员等待整体数据吞吐量下降。使用性能分析工具如PyTorch Profiler,nsys监控进程状态。解决方案优化通信频率使用异步非阻塞的通信方式或者考虑使用共享内存而不是网络传输来传递数据和参数。