You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Repast4Py中Agent跨Rank移动时UndirectedSharedNetwork同步错误排查

Repast4Py多进程Agent跨Rank移动时网络同步KeyError问题

基于Repast4Py教程的谣言模型,我扩展实现了二维连续空间内的Agent移动功能,Agent行为同时依赖邻近空间内的Agent以及社交网络中的远程Agent状态。为此在Context中添加了UndirectedSharedNetwork(通过read_network读取输入文件)和SharedCSpace投影。但当Agent从一个Rank移动到另一个Rank时,出现网络同步错误,错误栈如下:

File "/home/works/lib/python3.10/site-packages/repast4py/context.py", line 297, in synchronize
    self._synch_ghosts(restore_agent)
File "/home/works/lib/python3.10/site-packages/repast4py/context.py", line 259, in _synch_ghosts
    self._update_ghosts()
File "/home/works/lib/python3.10/site-packages/repast4py/context.py", line 241, in _update_ghosts
    ghost = self._agent_manager._ghost_agents[update[0]]
KeyError: (0, 0, 0)

运行命令:
mpirun -n 4 python TestsPy3.py rumor_model.yaml

排查与解决建议

  • 检查UndirectedSharedNetwork的同步逻辑:Agent跨Rank移动时,需确保网络中关联的幽灵Agent状态被正确更新——源Rank要移除该Agent的所有网络关联,目标Rank要同步添加对应幽灵Agent的网络关系,避免出现无效的Agent ID引用
  • 验证网络数据的多Rank分片正确性:确认read_network读取的网络数据在多Rank环境下被正确分片,每个Rank上的本地Agent及其关联的远程幽灵Agent在初始化时就已被正确加载,不存在未初始化的Agent ID
  • 调整投影同步顺序:确保SharedCSpace的移动同步完成后,再执行UndirectedSharedNetwork的同步操作。Repast4Py中多投影的同步顺序会影响幽灵Agent的生命周期,需遵循空间投影优先、网络投影随后的顺序
  • 检查Agent序列化逻辑:如果自定义了Agent属性,需确保这些属性在跨Rank移动时被正确序列化/反序列化,避免幽灵Agent实例不完整导致无法被AgentManager找到
  • 调试幽灵Agent生命周期:在Agent移动前后,打印各Rank上_agent_manager._ghost_agents的内容,追踪(0, 0, 0)这个Agent ID是否在移动过程中被正确创建或销毁,定位问题发生的具体阶段

内容的提问来源于stack exchange,提问作者smr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:07:41