docs(submission): collapse design-doc/tech-report rows into single 项目说明书 entry
本项目面向操作系统开源创新大赛赛题 14,针对 LLM Agent 在长生命周期、多轮工具调用和多会话并发场景中的 KV Cache 膨胀、上下文冗余、工具结果挤占上下文以及抢占重算问题,构建了一套运行在 openEuler + Ascend 910B2C + vLLM-Ascend 上的内存管理优化系统。
系统不修改 vLLM 内核,通过配置驱动的引擎参数、KV connector、上下文中间件和 session 生命周期策略接入五项能力,并提供统一 Benchmark、运行元数据归档和 Gradio 实时演示界面。
f1-bench-c8.yaml
f2-compress.yaml
f3-lazyload.yaml
LMCacheAscendConnector
f4-lmcache.yaml
f5-evict-dynamic.yaml
项目还保留 LATS/MCTS 多路径决策实验,用于研究分支推理中的前缀复用与内存行为。
下表只列出已有报告中的观测值。不同模块的 workload、运行次数和统计口径不同,不能直接横向比较;完整边界条件见对应报告。
775,936 -> 1,556,992
2.007x
19.38%
66.7%
87%
21%
32%
2 -> 0
0.797 -> 0.921
83 s -> 43 s
. ├── agent-mem/ │ ├── src/agent_mem/ # 核心 Python 包 │ ├── benchmarks/ # 统一 Benchmark CLI 与专项基准 │ ├── configs/ # baseline、F1-F5 与组合配置 │ ├── docker/ # 容器化部署文件 │ └── tests/ # 单元测试与构造测试 ├── scripts/ # 校准、实验编排、分析与文档工具 ├── docs/ # 技术报告、实验结论与架构素材 ├── dev-guide/ # 环境搭建和依赖状态 ├── models/README.md # 模型目录约定,权重不入库 └── third_party/ # 第三方版本清单,源码克隆体不入库
>=3.11,<3.13
完整安装过程、固定版本和已知问题见 环境搭建指南、安装状态 和 第三方版本清单。模型权重不进入 Git,目录约定见 models/README.md。
以下命令均从仓库根目录执行。
python3.11 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -e "agent-mem[dev,demo]" qwen-agent
运行 tau-bench 真任务前,按版本清单安装第三方依赖:
git clone https://github.com/sierra-research/tau-bench third_party/tau-bench python -m pip install -e third_party/tau-bench
F2 的 LLMLingua-2 压缩器使用独立环境,F4 和 Ascend 引擎还需要额外原生依赖;请按 dev-guide/environment-setup.md 配置,不要把虚拟环境、模型权重或 Hugging Face 缓存提交到仓库。
dev-guide/environment-setup.md
cd agent-mem python -m pytest tests -q python -m ruff check src tests python benchmarks/runner.py \ --config configs/prefix_cache.yaml \ --runner dry-run \ --runs 1
dry-run 只验证配置、运行目录和指标链路,不代表真实性能结果。
确认 NPU、CANN 和模型权重就绪后:
source /usr/local/Ascend/ascend-toolkit/set_env.sh source .venv/bin/activate python -m agent_mem.server.vllm_server \ --config agent-mem/configs/prefix_cache.yaml \ --model-path models/Qwen2.5-7B-Instruct \ --tool-call-parser hermes \ --port 8000 \ --log-file logs/engine.log
服务就绪后,OpenAI-compatible API 位于 http://127.0.0.1:8000/v1,Prometheus 指标位于 http://127.0.0.1:8000/metrics。
http://127.0.0.1:8000/v1
http://127.0.0.1:8000/metrics
F1 C8 运行前必须完成真实 post-RoPE 校准;占位 scale 仅用于链路探针,不能用于结果评测。具体步骤见 F1 C8 注入说明。
在另一个终端执行:
source .venv/bin/activate python -m agent_mem.demo \ --engine-url http://127.0.0.1:8000/v1 \ --model Qwen2.5-7B-Instruct \ --model-path models/Qwen2.5-7B-Instruct \ --host 0.0.0.0 \ --port 7860
浏览器访问 http://<服务器地址>:7860。界面包含普通 Agent 对话、F2/F3 上下文任务、F1/F4 通用 KV 改进、F5 高并发专项和实时监控。若服务器不直接开放端口,可使用 SSH 端口转发。
http://<服务器地址>:7860
cd agent-mem python benchmarks/runner.py \ --config configs/prefix_cache.yaml \ --runner qwen-agent \ --engine-url http://127.0.0.1:8000/v1 \ --device npu \ --max-tasks 10 \ --max-steps 20 \ --max-concurrency 1
结果默认写入根目录 logs/,每个 run 保存配置副本、Git commit、环境快照、指标和运行日志。需要外部 user simulator 的配置只从其声明的环境变量读取密钥,例如:
logs/
export MIMO_KEY='<your-key>'
请勿把密钥写入 YAML、README、日志或提交历史。
agent-mem/configs/baseline.yaml
agent-mem/configs/prefix_cache.yaml
agent-mem/configs/f1-bench-baseline.yaml
agent-mem/configs/f2-f3-combined.yaml
agent-mem/configs/f4-lmcache.yaml
agent-mem/configs/f5-native.yaml
agent-mem/configs/unified-longbench.yaml
评审以 GitLink 的 master 分支为唯一最终交付入口。按大赛提交规范,下列材料均直接放在 master 分支的仓库根目录,不放入子目录:
master
README.md
项目说明书.docx
参赛承诺书.pdf
操作系统开源创新大赛 作品原创承诺书.docx
演示PPT.pptx
操作系统开源创新大赛PPT.pptx
演示视频.mp4
说明:本项目未单独提供「设计文档」「技术报告」,统一以「项目说明书」作为设计与技术说明材料提交,按大赛附件模板文件名命名为 项目说明书.docx。
如大赛附件模板规定了具体文件名,以模板为准;承诺书与演示 PPT 均按大赛附件模板原文件名提交。视频建议控制在 95 MB 以内,可在仓库根目录执行 stat -c '%s %n' 演示视频.mp4 复核字节数。上述三份材料(承诺书、演示 PPT、演示视频)已分类单独提交,使评委能清楚追溯代码定稿与材料定稿过程。
stat -c '%s %n' 演示视频.mp4
main
agent-mem-v1
feat/*
仓库保留完整的功能分支和合并提交,便于追溯各模块的开发时间、代码变更与实验过程。开发分支中的文档和数据不代表最终结论,最终可验收内容始终以 master 为准。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
AgentMem-Ascend:面向智能体推理的内存管理优化系统
本项目面向操作系统开源创新大赛赛题 14,针对 LLM Agent 在长生命周期、多轮工具调用和多会话并发场景中的 KV Cache 膨胀、上下文冗余、工具结果挤占上下文以及抢占重算问题,构建了一套运行在 openEuler + Ascend 910B2C + vLLM-Ascend 上的内存管理优化系统。
系统不修改 vLLM 内核,通过配置驱动的引擎参数、KV connector、上下文中间件和 session 生命周期策略接入五项能力,并提供统一 Benchmark、运行元数据归档和 Gradio 实时演示界面。
核心功能
f1-bench-c8.yamlf2-compress.yamlf3-lazyload.yamlLMCacheAscendConnector,NPU/CPU/Disk 分层f4-lmcache.yamlf5-evict-dynamic.yaml项目还保留 LATS/MCTS 多路径决策实验,用于研究分支推理中的前缀复用与内存行为。
已归档实验结果
下表只列出已有报告中的观测值。不同模块的 workload、运行次数和统计口径不同,不能直接横向比较;完整边界条件见对应报告。
775,936 -> 1,556,992,即2.007x19.38%,115 个结果无 transport/runtime 错误66.7%,TTFT 中位数下降约87%;最佳观测成功率比重测 baseline 低 3 pp21%、并发 4 QPS 提升32%;因未触发 offload,HBM 峰值基本持平2 -> 0、KV 命中率0.797 -> 0.921、p5083 s -> 43 s;完整多工况重复实验仍需按报告复跑目录结构
环境要求
基础开发环境
>=3.11,<3.13Ascend 真机环境
完整安装过程、固定版本和已知问题见 环境搭建指南、安装状态 和 第三方版本清单。模型权重不进入 Git,目录约定见 models/README.md。
快速开始
以下命令均从仓库根目录执行。
1. 创建 Python 环境
运行 tau-bench 真任务前,按版本清单安装第三方依赖:
F2 的 LLMLingua-2 压缩器使用独立环境,F4 和 Ascend 引擎还需要额外原生依赖;请按
dev-guide/environment-setup.md配置,不要把虚拟环境、模型权重或 Hugging Face 缓存提交到仓库。2. CPU 自检
dry-run 只验证配置、运行目录和指标链路,不代表真实性能结果。
3. 启动 Ascend 推理引擎
确认 NPU、CANN 和模型权重就绪后:
服务就绪后,OpenAI-compatible API 位于
http://127.0.0.1:8000/v1,Prometheus 指标位于http://127.0.0.1:8000/metrics。F1 C8 运行前必须完成真实 post-RoPE 校准;占位 scale 仅用于链路探针,不能用于结果评测。具体步骤见 F1 C8 注入说明。
4. 启动演示界面
在另一个终端执行:
浏览器访问
http://<服务器地址>:7860。界面包含普通 Agent 对话、F2/F3 上下文任务、F1/F4 通用 KV 改进、F5 高并发专项和实时监控。若服务器不直接开放端口,可使用 SSH 端口转发。5. 运行真实 Benchmark
结果默认写入根目录
logs/,每个 run 保存配置副本、Git commit、环境快照、指标和运行日志。需要外部 user simulator 的配置只从其声明的环境变量读取密钥,例如:请勿把密钥写入 YAML、README、日志或提交历史。
配置入口
agent-mem/configs/baseline.yamlagent-mem/configs/prefix_cache.yamlagent-mem/configs/f1-bench-baseline.yaml/f1-bench-c8.yamlagent-mem/configs/f2-f3-combined.yamlagent-mem/configs/f4-lmcache.yamlagent-mem/configs/f5-native.yaml/f5-evict-dynamic.yamlagent-mem/configs/unified-longbench.yaml文档
竞赛交付物
评审以 GitLink 的
master分支为唯一最终交付入口。按大赛提交规范,下列材料均直接放在master分支的仓库根目录,不放入子目录:README.mdREADME.md项目说明书.docx项目说明书.docx参赛承诺书.pdf操作系统开源创新大赛 作品原创承诺书.docx演示PPT.pptx操作系统开源创新大赛PPT.pptx演示视频.mp4演示视频.mp4如大赛附件模板规定了具体文件名,以模板为准;承诺书与演示 PPT 均按大赛附件模板原文件名提交。视频建议控制在 95 MB 以内,可在仓库根目录执行
stat -c '%s %n' 演示视频.mp4复核字节数。上述三份材料(承诺书、演示 PPT、演示视频)已分类单独提交,使评委能清楚追溯代码定稿与材料定稿过程。分支与开发历史说明
master:唯一最终交付分支;最终代码和上述全部参赛材料均以此分支为准。main与agent-mem-v1:历史整合分支,用于保留开发与发布过程,不作为最终交付入口。feat/*:各优化模块的开发、实验和调研分支,包含阶段性结果及部分未采用探索,仅用于展示持续迭代历史。仓库保留完整的功能分支和合并提交,便于追溯各模块的开发时间、代码变更与实验过程。开发分支中的文档和数据不代表最终结论,最终可验收内容始终以
master为准。安全与仓库边界