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

Agents.jl调用paramscan触发ProgressMeter相关KeyError报错

报错原因

这个报错和M1芯片、Julia 1.7.3版本没有直接关联,核心触发逻辑是:
paramscan函数默认开启多进程并行计算+进度条展示功能,自动拉起的worker进程没有提前加载所需的ProgressMeter依赖包,跨进程传输任务做反序列化时找不到对应模块,直接抛出KeyError。测试其他ABM模型也报同样错误,是因为所有调用paramscan的流程都会走相同的并行、进度条逻辑。

解决方法

按易用性排序,选任意一种方案即可:

  • 小规模参数扫描直接关闭并行和进度条,零额外配置就能跑通,调用时补充两个关键字参数:
adf, _ = paramscan(parameters, initialize; adata, agent_step!, n = 3, parallel = false, show_progress = false)
  • 需要并行加速的话,在执行参数扫描前手动给所有worker进程提前加载依赖,注意所有自定义的模型初始化、步进、数据收集逻辑也要同步到worker:
using Distributed
# 按自身CPU核心数设置worker数量,比如8核CPU可设置为4
addprocs(4)
# 所有worker统一加载依赖包
@everywhere using Agents, ProgressMeter

# 后续的模型定义、initialize函数、agent_step!函数、参数配置代码
# 全部要放在@everywhere宏覆盖的作用域下,避免worker找不到自定义对象
# 之后再正常调用paramscan即可
  • 如果是在VS Code Julia插件、Pluto这类交互式环境运行,这类环境默认会把代码放在临时工作模块下,worker无法自动同步主进程的临时模块内容:要么把代码写到独立的.jl脚本里通过命令行julia 脚本路径.jl执行,要么把所有自定义逻辑、包加载语句都用@everywhere包裹,避免跨进程传输时找不到对应对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:24:16