面向联邦研究基础设施的模块化中间件,用于在分布式与 HPC 环境中构建和部署有状态角色与自主代理
定位#
Academy 是由 Globus Labs / 芝加哥大学(Ian Foster 实验室)开发的模块化中间件,旨在异构联邦计算资源上统一构建和部署有状态代理。其核心价值在于:同一套代理代码可在本地进程、Globus 云通信、Redis、ProxyStore 等不同基础设施上无缝切换运行,无需修改上层业务逻辑。
代理编程模型#
- 有状态代理:代理实例可维护内部状态(如
self.last_reading),支持长时间运行流程中的上下文追踪 - 自主控制循环:通过
@loop装饰器定义自主决策循环,代理可独立响应事件、执行任务,循环受asyncio.Event控制,支持优雅关闭 - 远程可调用动作:通过
@action装饰器标记方法,使其可通过 Handle 进行异步远程调用
通信与部署抽象#
- Handle 异步通信:用户与代理之间通过 Handle 进行异步消息传递,底层由 Exchange 管理的 Mailbox 路由
- 多后端 Exchange:
LocalExchange— 进程内本地通信CloudExchange— 基于 Globus 的跨节点云通信RedisExchange— 基于 Redis 的消息传递ProxyStoreExchange— 基于 ProxyStore 的通信HybridExchange— 混合模式
- Executor 后端抽象:基于
concurrent.futures.Executor接口,支持 ThreadPoolExecutor 等多种执行后端
联邦基础设施适配#
- Globus 集成:CloudExchange 支持通过 Globus 进行身份认证与跨站通信
- HPC 高吞吐:论文报告在 HPC 环境中具备高性能与可扩展性
- 异构资源统一管理:面向联邦研究生态设计,可协调 HPC 系统、实验设施、数据存储库等异构资源
架构层次#
- Agent 层(
academy.agent):Agent基类提供状态管理与消息处理框架,@action注册远程 RPC 接口,@loop注册自主运行循环 - 通信层(
academy.exchange):Exchange 负责消息路由与 Mailbox 管理,通过 Factory 模式创建,不同实现可互换 - 管理层(
academy.manager):Manager作为代理生命周期的统一入口,封装启动、关闭等操作,支持异步上下文管理器 - Handle 层(
academy.handle):代理的远程句柄,对用户暴露与本地方法调用一致的异步接口 - 云通信基础设施(
academy.exchange.cloud):包含 Globus 认证模块、后端适配、Token 存储等跨站通信支撑组件
典型应用场景#
- 科学工作流编排(材料发现、天文学、去中心化学习、信息提取等)
- 有状态 Actor 模型在分布式系统中的数据管理与请求响应
- LLM Agent:集成 LLM 推理与工具调用构建 AI 代理
- 具身 Agent:作为机器人或仿真实体的控制大脑
- 计算单元:封装模拟运行、数据处理、模型训练等计算任务
- 编排器:协调其他代理的活动,分发任务并监控进度
- HPC 跨站联邦协同计算
安装与上手#
pip install academy-py
可选依赖组:pip install academy-py[dev]、pip install academy-py[docs]、pip install academy-py[proxystore]
最低环境要求:Python ≥ 3.10
上手路径:
- 继承
Agent基类定义代理,用@action暴露可调用方法,用@loop定义自主循环 - 选择 Exchange Factory(本地开发用
LocalExchangeFactory,联邦部署切换为CloudExchange等) - 通过
Manager.from_exchange_factory()创建管理器,launch()启动代理 - 通过返回的 Handle 异步调用代理方法
manager.shutdown()关闭代理
待确认信息#
- 具体性能基准数据(论文提及微基准测试但数值需查阅全文确认)
- Cloud Exchange 完整端到端部署流程
- 生产环境外部采用情况
- 各 Exchange 后端的性能对比与选型指南
- 代理持久化与故障恢复机制