合并远端:保留作品README,赛题说明已移至赛题说明.md
本项目面向开源大模型推理框架 llama.cpp 在多并发长上下文场景中的计算效率问题。原版统一 KV Cache 在多序列并发时,注意力算子面对的是由多条序列、空闲 cell 和 padding 共同组成的统一物理跨度,无关位置虽被掩码排除,却仍进入数据访问和计算范围,导致 prefill 阶段首 Token 延迟升高、decode 阶段输出吞吐下降。
我们直接改造了 llama.cpp 的 KV Cache、序列管理和 GGML 计算图,在 PagedAttention 思想基础上设计并实现了 ubatch 对齐式分页注意力(UA-PagedAttention):KV Cache 按序列维护页面映射与真实长度,构图阶段依据 ubatch 中各 token 的序列归属将页表和真实 KV 长度按 token 顺序展开传入 GGML 算子,后端据此只访问各 Query 所属序列的有效页面。同一计算接口分别在 CUDA 和 CANN 后端落地,llama-server 服务接口保持兼容。
同时从零构建了完整的 Story-agent 智能体系统,包含图式智能体编排、十类本地故事工具、长 Prompt 合成、llama-server 流式推理和独立多会话前端,作为分页推理引擎面向复杂长上下文工作负载的直接验证。
关键性能数据(16K Prompt、8 路并发):
本仓库为作品提交主仓库,代码以 Git 子模块形式组织:
paged-llama.cpp/
Story-agent/
scripts/
操作系统开源创新大赛项目说明书.pdf
面向多并发长上下文的llama.cpp分页式KV-Cache与计算加速优化.pptx
演示视频.mp4
作品原创承诺书.pdf
使用说明-CANN.md
使用说明-CUDA.md
README-original.md
详细的构建、部署与测试说明请参阅对应后端的使用文档:
git clone --recurse-submodules https://gitlink.org.cn/IFwnjPgFSU/mxzntdncglxtsjysx.git cd mxzntdncglxtsjysx
source /usr/local/Ascend/cann/set_env.sh cmake -S paged-llama.cpp -B paged-llama.cpp/build-cann \ -DGGML_CANN=ON -DSOC_TYPE=Ascend910B3 \ -DCMAKE_BUILD_TYPE=Release -DLLAMA_BUILD_SERVER=ON cmake --build paged-llama.cpp/build-cann --target llama-server -j 8
paged-llama.cpp/build-cann/bin/llama-server \ -m models/Qwen3-8B-Q8_0.gguf \ -ngl 99 -dev CANN0 -np 4 -c 131072 \ --host 127.0.0.1 --port 8080 --alias qwen \ --paged-attn --page-size 128
cd Story-agent PYTHONPATH=backend \ STORY_DATA_DIR=./data/story_index \ STORY_USE_LLM=true \ LLAMA_SERVER_URL=http://127.0.0.1:8080/v1 \ LLAMA_MODEL=qwen \ .venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8000
# 正确性测试 python3 -u scripts/run_project_tests.py --suite correctness \ --binary paged-llama.cpp/build-cann/bin/llama-server \ --model models/Qwen3-8B-Q8_0.gguf \ --device CANN0 --memory-source npu --gpu-index 0 \ --output-dir test_runs/correctness --port 18090 # 集成测试 python3 -u scripts/test_integration_20.py \ --url http://127.0.0.1:8000/api/chat/stream \ --prompts Story-agent/scripts/benchmark_prompts_20.txt \ --max-tokens 128 --timeout 3600 \ --output test_runs/integration.json
Story-agent/README.md
Story-agent/CODE_READING_GUIDE.txt
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
面向多并发长上下文的 llama.cpp 分页式 KV Cache 与计算加速优化
作品简介
本项目面向开源大模型推理框架 llama.cpp 在多并发长上下文场景中的计算效率问题。原版统一 KV Cache 在多序列并发时,注意力算子面对的是由多条序列、空闲 cell 和 padding 共同组成的统一物理跨度,无关位置虽被掩码排除,却仍进入数据访问和计算范围,导致 prefill 阶段首 Token 延迟升高、decode 阶段输出吞吐下降。
我们直接改造了 llama.cpp 的 KV Cache、序列管理和 GGML 计算图,在 PagedAttention 思想基础上设计并实现了 ubatch 对齐式分页注意力(UA-PagedAttention):KV Cache 按序列维护页面映射与真实长度,构图阶段依据 ubatch 中各 token 的序列归属将页表和真实 KV 长度按 token 顺序展开传入 GGML 算子,后端据此只访问各 Query 所属序列的有效页面。同一计算接口分别在 CUDA 和 CANN 后端落地,llama-server 服务接口保持兼容。
同时从零构建了完整的 Story-agent 智能体系统,包含图式智能体编排、十类本地故事工具、长 Prompt 合成、llama-server 流式推理和独立多会话前端,作为分页推理引擎面向复杂长上下文工作负载的直接验证。
关键性能数据(16K Prompt、8 路并发):
仓库结构
本仓库为作品提交主仓库,代码以 Git 子模块形式组织:
paged-llama.cpp/Story-agent/scripts/操作系统开源创新大赛项目说明书.pdf面向多并发长上下文的llama.cpp分页式KV-Cache与计算加速优化.pptx演示视频.mp4作品原创承诺书.pdf使用说明-CANN.md使用说明-CUDA.mdREADME-original.md代码仓库
运行说明
详细的构建、部署与测试说明请参阅对应后端的使用文档:
使用说明-CANN.md使用说明-CUDA.md快速开始(概述)
环境要求
文档索引
操作系统开源创新大赛项目说明书.pdf使用说明-CANN.md使用说明-CUDA.mdREADME-original.mdStory-agent/README.mdStory-agent/CODE_READING_GUIDE.txt