[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Zefan-Cai--KVCache-Factory":3,"tool-Zefan-Cai--KVCache-Factory":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",150720,2,"2026-04-11T11:33:10",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":77,"owner_url":78,"languages":79,"stars":100,"forks":101,"last_commit_at":102,"license":103,"difficulty_score":10,"env_os":104,"env_gpu":105,"env_ram":106,"env_deps":107,"category_tags":112,"github_topics":113,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":117,"updated_at":118,"faqs":119,"releases":150},6642,"Zefan-Cai\u002FKVCache-Factory","KVCache-Factory","Unified KV Cache Compression Methods for Auto-Regressive Models","KVCache-Factory 是一个专为自回归大语言模型打造的统一框架，旨在高效压缩和管理 KV Cache（键值缓存）。随着大模型处理长文本时显存占用激增，传统方法往往面临速度变慢或精度下降的困境。KVCache-Factory 通过集成 PyramidKV、SnapKV、H2O 及 StreamingLLM 等多种前沿压缩算法，帮助开发者在显著降低显存消耗的同时，保持模型的推理性能与准确性。\n\n该工具特别适合 AI 研究人员和工程开发者使用，尤其是那些需要在有限硬件资源（如单张 V100 或多卡环境）上部署或测试超大参数模型（如 Llama-3-70B）的用户。其核心亮点在于高度的兼容性与灵活性：不仅支持 Flash Attention v2 以加速计算，还适配了 SDPA Attention，让不支持最新硬件特性的设备也能运行先进的压缩策略。此外，它提供了可视化工具帮助分析注意力机制的低效环节，并内置了 LongBench 和“大海捞针”等基准测试脚本，方便用户快速复现结果与验证效果。无论是探索新的缓存分配策略，还是优化现有长文本应用，KVCache-Factory 都提供了一","KVCache-Factory 是一个专为自回归大语言模型打造的统一框架，旨在高效压缩和管理 KV Cache（键值缓存）。随着大模型处理长文本时显存占用激增，传统方法往往面临速度变慢或精度下降的困境。KVCache-Factory 通过集成 PyramidKV、SnapKV、H2O 及 StreamingLLM 等多种前沿压缩算法，帮助开发者在显著降低显存消耗的同时，保持模型的推理性能与准确性。\n\n该工具特别适合 AI 研究人员和工程开发者使用，尤其是那些需要在有限硬件资源（如单张 V100 或多卡环境）上部署或测试超大参数模型（如 Llama-3-70B）的用户。其核心亮点在于高度的兼容性与灵活性：不仅支持 Flash Attention v2 以加速计算，还适配了 SDPA Attention，让不支持最新硬件特性的设备也能运行先进的压缩策略。此外，它提供了可视化工具帮助分析注意力机制的低效环节，并内置了 LongBench 和“大海捞针”等基准测试脚本，方便用户快速复现结果与验证效果。无论是探索新的缓存分配策略，还是优化现有长文本应用，KVCache-Factory 都提供了一套开箱即用的解决方案。","![# KVCache-Facroty](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZefan-Cai_KVCache-Factory_readme_9f69c86720bc.png)\n\n\n\n## News\n\n- [2024-11-28] Çhange the name to KVCache-Factory! The target of our project is now a unified framework of KV Cache compression of diverse models.\n\n- [2024-06-25] Support multi-GPUs inference with big LLMs now! Try out PyramidKV on LlaMa-3-70B-Instruct!\n\n- [2024-06-10] Support PyramidKV, SnapKV, H2O and StreamingLLM at Flash Attention v2, Sdpa Attention now! If your devices (i.e., V100, 3090) does not support Flash Attention v2, you can set attn_implementation=sdpa to try PyramidKV at Sdpa Attention!\n\n## TODO:\n\n- [x] Support implementation of Streaming LLM, H2O and SnapKV\n\n- [x] Support Mistral model\n\n- [x] Support implementation of Needle\n\n- [x] Support KV cache compression without Flash Attention v2 (i.e. Sdpa Attention) for V100\n\n- [x] Support multi-GPU inference for 70B LlaMa-3\n\n- [ ] Introduce new functions to support kv cache budget allocation (i.e., supports for percentage.)\n\n- [ ] Support Mixtral\n\n- [ ] Support Batch Inference\n\n- [ ] Support KV cache compression at decoding stage\n\n## Performence\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"figs\u002FResult.png\" width=\"100%\"> \u003Cbr>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"figs\u002FNeedle.png\" width=\"80%\"> \u003Cbr>\n\u003C\u002Fp>\n\n\n## Visualization: Inefficient Attention \n\nThe Llama model attention map with 3 documents is represented as follows:\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"figs\u002Fattention_pattern.png\" width=\"100%\"> \u003Cbr>\n\u003C\u002Fp>\n\n`.\u002Fvisualization-tools\u002Fvis.ipynb` reproduces the visualization results in the paper. We provide more visualization tools under `.\u002Fvisualization` that supports different levels of kv-cache visualization.\n\nModel attention maps for different layers would be stored at `.\u002Fattention`\n\n\n\n## Requirements\n\n```python\ntransformers >= 4.41\nflash-attn >= 2.4.0.post1\n```\n\n##  Installation\n\n```python\n\ngit clone https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FPyramidKV.git\ncd PyramidKV\npip install -r requirements.txt .\n\n```\n\n## Inference\n\n\nWe support inference code on `LongBench` to repuduce our result.\n\nPlease refer to `scripts\u002Fscripts_longBench\u002Feval.sh` to modify the parameters according to your requirements.\n\nOur codebase support Flash Attention v2, Sdpa Attention, etc. The results presented in our paper in based on Flash Attention v2.\n\n```bash\nexport CUDA_VISIBLE_DEVICES=$1\n\nmethod=$2 # Support PyramidKV, SnapKV, H2O, StreamingLLM\nmax_capacity_prompts=64 # 128,2048 in paper\nattn_implementation=$3 # Support \"flash_attention_2\", \"sdpa\", \"eager\".\nsource_path=$4\nmodel_path=$5\nsave_dir=${source_path}\"results_long_bench\" # path to result save_dir\n\npython3 run_longbench.py \\\n    --method ${method} \\\n    --model_path ${model_path} \\\n    --max_capacity_prompts ${max_capacity_prompts} \\\n    --attn_implementation ${attn_implementation} \\\n    --save_dir ${save_dir} \\\n    --use_cache True\n\n\n```\n\n* CUDA_VISIBLE_DEVICES: For multi-GPU inference for big LLMs, just need to specify CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7. For single GPU inference, just need to specify CUDA_VISIBLE_DEVICES=0.\n* model_path: Path to your model. Support \"Llama-3-8B-Instruct\" for now.\n* method: Support `PyramidKV`, `SnapKV`, `StreamingLLM`, `H2O`.\n* max_capacity_prompts: Selected KV Size in each layer. （e.g. 128, 2048 in paper）. When method is \"PyramidKV\", given that the total number of KV remains unchanged, the specific KV length for each layer will be modified accordingly\n* save_dir: Path to your dir to save LongBench result.\n\nAfter modifying parameters, run:\n\n```bash \n\nsh scripts\u002Fscripts_longBench\u002Feval.sh\n\n```\n\n## Needle in haystack\n\nWe support inference code on `Needle in haystack` to repuduce our result.\n\nPlease refer to `scripts\u002Fscripts_needle\u002Feval.sh` to modify the parameters according to your requirements.\n\nOur codebase support Flash Attention v2, Sdpa Attention, etc. The results presented in our paper in based on Flash Attention v2.\n\n```\n\nMETHOD='pyramidkv'       # ['full', 'pyramidkv', 'snapkv', 'streamingllm', 'h2o']\nMAX_CAPACITY_PROMPT=96  # [64, 96, 128, 256, 512, 1024, 2048, ...]\nattn_implementation=\"flash_attention_2\" # Support \"flash_attention_2\", \"sdpa\", \"\".\nTAG=test\n\n\n# For Llama3-8b\n\n(\npython -u run_needle_in_haystack.py --s_len 1000 --e_len 8001\\\n    --model_provider LLaMA3 \\\n    --model_name \u002Fmnt\u002Fworkspace\u002Fzhiyuanhu\u002Fyuliang\u002Fmodels\u002Fllama3-8b_raw \\\n    --attn_implementation ${attn_implementation} \\\n    --step 100 \\\n    --method $METHOD \\\n    --max_capacity_prompt $MAX_CAPACITY_PROMPT \\\n    --model_version LlaMA3_${METHOD}_${MAX_CAPACITY_PROMPT}_${TAG}\n) 2>&1  | tee results_needle\u002Flogs\u002FLlaMA3_${METHOD}_${MAX_CAPACITY_PROMPT}_${TAG}.log\n\n```\n\n* Both LLaMA3 and Mistral2 inference support on single GPU.\n* model_provider: LLaMA3 or Mistral2\n* model_name: Path to your model. Support \"Llama-3-8B-Instruct\" \"Mistral-7B-Instruct-v0.2\" and for now.\n* step: The increase of context length.\n* method: Support `PyramidKV`, `SnapKV`, `StreamingLLM`, `H2O`.\n* max_capacity_prompt: Selected KV Size in each layer. （e.g. 128, 2048 in paper）. When method is \"PyramidKV\", given that the total number of KV remains unchanged, the specific KV length for each layer will be modified accordingly\n\n\n\nTo reproduce our results, run\n\n```\nbash scripts\u002Fscripts_needle\u002Feval.sh\n```\n\nAfter inference, run\n\n`python scripts\u002Fscripts_needle\u002Fvisualize.py` \n\nto draw the img, you should change `FOLDER_PATH` in `visualize.py` to your output path (the argument of `--model_version` in `eval.sh`).\n\n\n## Citation\n\nIf you find **PyramidKV** useful for your research and applications, please kindly cite using this BibTeX:\n\n```latex\n@article{cai2024pyramidkv,\n  title={Pyramidkv: Dynamic kv cache compression based on pyramidal information funneling},\n  author={Cai, Zefan and Zhang, Yichi and Gao, Bofei and Liu, Yuliang and Liu, Tianyu and Lu, Keming and Xiong, Wayne and Dong, Yue and Chang, Baobao and Hu, Junjie and Xiao Wen},\n  journal={arXiv preprint arXiv:2406.02069},\n  year={2024}\n}\n```\n\n```latex\n@article{fu2024not,\n  title={Not All Heads Matter: A Head-Level KV Cache Compression Method with Integrated Retrieval and Reasoning},\n  author={Fu, Yu and Cai, Zefan and Asi, Abedelkadir and Xiong, Wayne and Dong, Yue and Xiao, Wen},\n  journal={arXiv preprint arXiv:2410.19258},\n  year={2024}\n}\n```\n\n## Acknowledgement\n\n\nThanks **[SnapKV]** [SnapKV: LLM Knows What You are Looking for Before Generation](https:\u002F\u002Fgithub.com\u002FFasterDecoding\u002FSnapKV) for providing open-source code to support the expansion of this project.\n","![# KVCache-Facroty](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZefan-Cai_KVCache-Factory_readme_9f69c86720bc.png)\n\n\n\n## 新闻\n\n- [2024-11-28] 更名为 KVCache-Factory！我们项目的目标现在是构建一个统一的框架，用于对多种模型的 KV 缓存进行压缩。\n\n- [2024-06-25] 现已支持使用大语言模型进行多 GPU 推理！快来试试在 LlaMa-3-70B-Instruct 上使用 PyramidKV 吧！\n\n- [2024-06-10] 在 Flash Attention v2 和 Sdpa Attention 中现已支持 PyramidKV、SnapKV、H2O 和 StreamingLLM！如果你的设备（如 V100、3090）不支持 Flash Attention v2，可以将 attn_implementation 设置为 sdpa，从而在 Sdpa Attention 中尝试 PyramidKV！\n\n## 待办事项：\n\n- [x] 支持 Streaming LLM、H2O 和 SnapKV 的实现\n- [x] 支持 Mistral 模型\n- [x] 支持 Needle 的实现\n- [x] 支持在没有 Flash Attention v2（即 Sdpa Attention）的情况下对 V100 进行 KV 缓存压缩\n- [x] 支持 70B LlaMa-3 的多 GPU 推理\n- [ ] 引入新功能以支持 KV 缓存预算分配（例如百分比支持）\n- [ ] 支持 Mixtral\n- [ ] 支持批量推理\n- [ ] 支持解码阶段的 KV 缓存压缩\n\n## 性能\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"figs\u002FResult.png\" width=\"100%\"> \u003Cbr>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"figs\u002FNeedle.png\" width=\"80%\"> \u003Cbr>\n\u003C\u002Fp>\n\n\n## 可视化：低效注意力 \n\nLlama 模型在包含 3 个文档时的注意力图如下所示：\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"figs\u002Fattention_pattern.png\" width=\"100%\"> \u003Cbr>\n\u003C\u002Fp>\n\n`.\u002Fvisualization-tools\u002Fvis.ipynb` 复现了论文中的可视化结果。我们在 `.\u002Fvisualization` 目录下提供了更多可视化工具，支持不同层次的 KV 缓存可视化。\n不同层的模型注意力图将存储在 `.\u002Fattention` 目录中。\n\n\n\n## 需求\n\n```python\ntransformers >= 4.41\nflash-attn >= 2.4.0.post1\n```\n\n## 安装\n\n```python\n\ngit clone https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FPyramidKV.git\ncd PyramidKV\npip install -r requirements.txt .\n\n```\n\n## 推理\n\n\n我们支持在 `LongBench` 上运行的推理代码，以复现我们的结果。\n\n请参考 `scripts\u002Fscripts_longBench\u002Feval.sh`，根据你的需求修改参数。\n\n我们的代码库支持 Flash Attention v2、Sdpa Attention 等。我们论文中展示的结果基于 Flash Attention v2。\n\n```bash\nexport CUDA_VISIBLE_DEVICES=$1\n\nmethod=$2 # 支持 PyramidKV、SnapKV、H2O、StreamingLLM\nmax_capacity_prompts=64 # 论文中为128、2048\nattn_implementation=$3 # 支持 \"flash_attention_2\"、\"sdpa\"、\"eager\"\nsource_path=$4\nmodel_path=$5\nsave_dir=${source_path}\"results_long_bench\" # 结果保存路径\n\npython3 run_longbench.py \\\n    --method ${method} \\\n    --model_path ${model_path} \\\n    --max_capacity_prompts ${max_capacity_prompts} \\\n    --attn_implementation ${attn_implementation} \\\n    --save_dir ${save_dir} \\\n    --use_cache True\n\n\n```\n\n* CUDA_VISIBLE_DEVICES：对于大语言模型的多 GPU 推理，只需指定 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7。对于单 GPU 推理，则只需指定 CUDA_VISIBLE_DEVICES=0。\n* model_path：你的模型路径。目前支持“Llama-3-8B-Instruct”。\n* method：支持 `PyramidKV`、`SnapKV`、`StreamingLLM`、`H2O`。\n* max_capacity_prompts：每层选择的 KV 大小。（例如，论文中为 128 或 2048）。当方法为“PyramidKV”时，由于总的 KV 数量保持不变，每层的具体 KV 长度会相应调整。\n* save_dir：保存 LongBench 结果的目录路径。\n\n修改参数后，运行：\n\n```bash \n\nsh scripts\u002Fscripts_longBench\u002Feval.sh\n\n```\n\n## 针尖藏草堆\n\n我们支持在 `针尖藏草堆` 数据集上运行的推理代码，以复现我们的结果。\n\n请参考 `scripts\u002Fscripts_needle\u002Feval.sh`，根据你的需求修改参数。\n\n我们的代码库支持 Flash Attention v2、Sdpa Attention 等。我们论文中展示的结果基于 Flash Attention v2。\n\n```\n\nMETHOD='pyramidkv'       # ['full', 'pyramidkv', 'snapkv', 'streamingllm', 'h2o']\nMAX_CAPACITY_PROMPT=96  # [64, 96, 128, 256, 512, 1024, 2048, ...]\nattn_implementation=\"flash_attention_2\" # 支持 \"flash_attention_2\"、\"sdpa\"、\"\"。\nTAG=test\n\n\n# 对于 Llama3-8b\n\n(\npython -u run_needle_in_haystack.py --s_len 1000 --e_len 8001\\\n    --model_provider LLaMA3 \\\n    --model_name \u002Fmnt\u002Fworkspace\u002Fzhiyuanhu\u002Fyuliang\u002Fmodels\u002Fllama3-8b_raw \\\n    --attn_implementation ${attn_implementation} \\\n    --step 100 \\\n    --method $METHOD \\\n    --max_capacity_prompt $MAX_CAPACITY_PROMPT \\\n    --model_version LlaMA3_${METHOD}_${MAX_CAPACITY_PROMPT}_${TAG}\n) 2>&1  | tee results_needle\u002Flogs\u002FLlaMA3_${METHOD}_${MAX_CAPACITY_PROMPT}_${TAG}.log\n\n```\n\n* LLaMA3 和 Mistral2 的推理都支持单 GPU。\n* model_provider：LLaMA3 或 Mistral2\n* model_name：你的模型路径。目前支持“Llama-3-8B-Instruct”和“Mistral-7B-Instruct-v0.2”。\n* step：上下文长度的增加幅度。\n* method：支持 `PyramidKV`、`SnapKV`、`StreamingLLM`、`H2O`。\n* max_capacity_prompt：每层选择的 KV 大小。（例如，论文中为 128 或 2048）。当方法为“PyramidKV”时，由于总的 KV 数量保持不变，每层的具体 KV 长度会相应调整。\n\n\n\n要复现我们的结果，请运行：\n\n```\nbash scripts\u002Fscripts_needle\u002Feval.sh\n```\n\n推理完成后，运行\n\n`python scripts\u002Fscripts_needle\u002Fvisualize.py` \n\n以生成图像。你需要将 `visualize.py` 中的 `FOLDER_PATH` 修改为你输出的路径（即 `eval.sh` 中的 `--model_version` 参数值）。\n\n\n\n## 引用\n\n如果你发现 **PyramidKV** 对你的研究和应用有帮助，请使用以下 BibTeX 格式引用：\n\n```latex\n@article{cai2024pyramidkv,\n  title={Pyramidkv: 基于金字塔信息漏斗的动态 KV 缓存压缩},\n  author={Cai, Zefan 和 Zhang, Yichi 和 Gao, Bofei 和 Liu, Yuliang 和 Liu, Tianyu 和 Lu, Keming 和 Xiong, Wayne 和 Dong, Yue 和 Chang, Baobao 和 Hu, Junjie 和 Xiao Wen},\n  journal={arXiv 预印本 arXiv:2406.02069},\n  year={2024}\n}\n```\n\n```latex\n@article{fu2024not,\n  title={并非所有头都重要：一种集成检索与推理的头部级 KV 缓存压缩方法},\n  author={Fu, Yu 和 Cai, Zefan 和 Asi, Abedelkadir 和 Xiong, Wayne 和 Dong, Yue 和 Xiao, Wen},\n  journal={arXiv 预印本 arXiv:2410.19258},\n  year={2024}\n}\n```\n\n## 致谢\n\n\n感谢 **[SnapKV]** [SnapKV：LLM 在生成之前就知道你在寻找什么](https:\u002F\u002Fgithub.com\u002FFasterDecoding\u002FSnapKV)，为我们提供了开源代码，助力本项目的扩展。","# KVCache-Factory 快速上手指南\n\nKVCache-Factory 是一个统一的框架，旨在为多种大语言模型提供高效的 KV Cache 压缩方案（如 PyramidKV, SnapKV, H2O, StreamingLLM），支持在单卡或多卡环境下运行，显著降低显存占用并提升长文本推理效率。\n\n## 环境准备\n\n### 系统要求\n- **GPU**: 支持 NVIDIA GPU。\n  - 若使用 **Flash Attention v2**（推荐，性能最佳）：需 Ampere 架构及以上（如 A100, RTX 3090\u002F4090）。\n  - 若使用 **SDPA Attention**：兼容旧架构（如 V100, RTX 2080Ti 等）。\n- **Python**: 建议 Python 3.8+\n- **CUDA**: 已正确安装并与 PyTorch 版本匹配。\n\n### 前置依赖\n确保已安装以下基础库（项目会自动安装特定版本）：\n- `transformers >= 4.41`\n- `flash-attn >= 2.4.0.post1` (可选，但强烈推荐)\n\n> **国内加速提示**：建议使用清华或阿里镜像源加速 pip 安装。\n> ```bash\n> export PIP_INDEX_URL=https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n## 安装步骤\n\n1. **克隆项目代码**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FPyramidKV.git\n   cd PyramidKV\n   ```\n\n2. **安装依赖**\n   ```bash\n   pip install -r requirements.txt .\n   ```\n   *注：若安装 `flash-attn` 失败，请确认 CUDA 环境正常，或暂时跳过该依赖使用 SDPA 模式。*\n\n## 基本使用\n\n本项目主要通过脚本在 `LongBench` 或 `Needle in Haystack` 基准测试上运行压缩算法。以下以 **LongBench** 为例展示最简用法。\n\n### 1. 配置运行参数\n你可以直接修改 `scripts\u002Fscripts_longBench\u002Feval.sh`，或通过命令行传入参数。核心参数说明如下：\n- `method`: 压缩算法，支持 `PyramidKV`, `SnapKV`, `H2O`, `StreamingLLM`。\n- `max_capacity_prompts`: 每层保留的 KV 数量（例如 64, 128, 2048）。\n- `attn_implementation`: 注意力实现方式，支持 `flash_attention_2` (推荐), `sdpa` (兼容旧卡), `eager`。\n- `model_path`: 本地模型路径（如 `Llama-3-8B-Instruct`）。\n\n### 2. 执行推理\n假设你使用单张显卡 (ID 0)，运行 PyramidKV 算法，保留 64 个 KV，使用 Flash Attention v2：\n\n```bash\nexport CUDA_VISIBLE_DEVICES=0\n\nmethod=PyramidKV\nmax_capacity_prompts=64\nattn_implementation=flash_attention_2\nsource_path=.\u002Fdata\u002FLongBench\u002F # 请替换为你的数据集路径\nmodel_path=\u002Fpath\u002Fto\u002FLlama-3-8B-Instruct # 请替换为你的模型路径\nsave_dir=${source_path}\"results_long_bench\"\n\npython3 run_longbench.py \\\n    --method ${method} \\\n    --model_path ${model_path} \\\n    --max_capacity_prompts ${max_capacity_prompts} \\\n    --attn_implementation ${attn_implementation} \\\n    --save_dir ${save_dir} \\\n    --use_cache True\n```\n\n### 3. 多卡推理（针对 70B 等大模型）\n只需修改 `CUDA_VISIBLE_DEVICES` 即可自动启用多卡并行：\n```bash\nexport CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7\n# 其余命令同上\n```\n\n### 4. 可视化结果 (可选)\n对于 Needle in Haystack 任务，推理完成后可生成可视化图表：\n```bash\n# 修改 scripts\u002Fscripts_needle\u002Fvisualize.py 中的 FOLDER_PATH 为你的输出目录\npython scripts\u002Fscripts_needle\u002Fvisualize.py\n```","某金融科技公司正在构建基于 Llama-3-70B 的智能研报分析系统，需要处理长达数万字的文档并提取关键数据，但受限于显存容量，长文本推理频繁报错。\n\n### 没有 KVCache-Factory 时\n- **显存爆炸导致服务不可用**：处理长篇研报时，全量 KV Cache 迅速占满单卡显存，即使使用多卡也难以支撑 70B 大模型的长上下文推理，程序常因 OOM（内存溢出）崩溃。\n- **关键信息丢失严重**：若强行截断输入或使用简单的滑动窗口策略，模型会遗忘文档中间的关键财务数据（即“大海捞针”能力失效），导致分析结果错误。\n- **硬件适配成本高**：团队部分服务器仅配备 V100 或 3090 显卡，不支持最新的 Flash Attention v2，无法直接部署主流的长文本优化方案，被迫闲置旧设备。\n- **算法验证繁琐**：想要对比 StreamingLLM、SnapKV 等不同压缩算法的效果，需分别修改底层代码并重新编译，开发周期长达数周。\n\n### 使用 KVCache-Factory 后\n- **显存占用大幅降低**：通过集成 PyramidKV 等统一压缩框架，在保持精度的前提下将 KV Cache 压缩至原有大小的几分之一，成功在有限显存上跑通 70B 模型的长文档推理。\n- **长文理解精度回升**：利用其动态分配机制，模型能精准保留文档中的关键“针尖”信息，即使在极长上下文中也能准确提取分散的财务指标。\n- **老旧硬件全面激活**：借助对 SDPA Attention 的支持，团队直接在 V100 集群上部署了压缩方案，无需升级硬件即可享受长文本加速红利。\n- **一键切换算法策略**：仅需修改启动脚本中的 `method` 参数（如设为 `pyramidkv` 或 `h2o`），即可在不同压缩策略间无缝切换，半天内完成效果调优。\n\nKVCache-Factory 通过统一的压缩框架打破了显存与上下文长度的博弈，让大模型在低成本硬件上也能实现精准的长文档理解。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FZefan-Cai_KVCache-Factory_9f69c867.png","Zefan-Cai","Zefan Cai","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FZefan-Cai_0a34bc1e.jpg","I help community use large language models.",null,"https:\u002F\u002Fgithub.com\u002FZefan-Cai",[80,84,88,92,96],{"name":81,"color":82,"percentage":83},"Python","#3572A5",98.4,{"name":85,"color":86,"percentage":87},"Shell","#89e051",0.7,{"name":89,"color":90,"percentage":91},"Cuda","#3A4E3A",0.6,{"name":93,"color":94,"percentage":95},"C","#555555",0.3,{"name":97,"color":98,"percentage":99},"Makefile","#427819",0,1319,168,"2026-04-08T13:26:54","MIT","Linux","必需 NVIDIA GPU。支持 Flash Attention v2 的设备（如 A100, H100）可获得最佳性能；不支持 Flash Attention v2 的设备（如 V100, RTX 3090）可设置 attn_implementation=sdpa 使用 Sdpa Attention。支持多卡推理（如 Llama-3-70B），需通过 CUDA_VISIBLE_DEVICES 指定多张显卡。","未说明",{"notes":108,"python":106,"dependencies":109},"该项目原名 PyramidKV，现更名为 KVCache-Factory。主要支持 Llama-3 和 Mistral 模型。若显卡不支持 Flash Attention v2，必须使用 'sdpa' 注意力实现模式。运行长上下文基准测试（LongBench）或“大海捞针”（Needle in Haystack）测试时，需根据脚本修改模型路径、压缩方法（PyramidKV, SnapKV, H2O, StreamingLLM）及 KV 容量参数。",[110,111],"transformers>=4.41","flash-attn>=2.4.0.post1",[14,35],[114,115,116],"kv-cache","kv-cache-compression","llm","2026-03-27T02:49:30.150509","2026-04-11T23:23:12.801874",[120,125,130,135,140,145],{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},29978,"在 LongBench 上评估 Llama-3-8B-Instruct 时，为什么我的得分远低于论文结果？","请确保直接从 Hugging Face 下载 `meta-llama\u002FMeta-Llama-3-8B-Instruct` 模型，不要手动转换权重。如果分数仍然偏低，可能是因为缺少针对 Llama-3 的 Chat Template 配置导致模型停止符生成不正确。此外，论文实验是在早期版本（上下文窗口较小）上进行的，实现方式是在中间切断，前后各保留 4k 上下文，这与当前完整的 32k 版本行为可能不同。","https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FKVCache-Factory\u002Fissues\u002F12",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},29979,"运行 Mistral 7B 的 Full KV Cache 模式时出现显存溢出（OOM）怎么办？","建议使用多卡运行（代码库已支持），例如使用 2 张 A100。如果单卡必须运行，可以尝试将 `prepare_input` 函数替换为 Transformers 官方的实现，或者检查是否使用了正确的 Flash Attention 版本。部分用户反馈即使更换官方 `prepare_input` 仍可能 OOM，此时多卡并行是主要解决方案。","https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FKVCache-Factory\u002Fissues\u002F11",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},29980,"仓库中 CAM 方法的实现原理是否与原始论文一致？","维护者承认当前实现与原始论文存在差异：原始论文是将即将丢弃的 token 合并到后续 token 中，而当前代码是先选择 TopK token 后再进行合并操作。正确的顺序应该是先采用 CAM 的 merge 方法聚合 token 信息，再通过 TopK 保留相同 budget 的 tokens。维护者表示正在修复此问题以符合原意。关于 `start_budget` 默认比例为 0.1，`merge_prob` 的计算逻辑参考了原始 CAM 代码实现。","https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FKVCache-Factory\u002Fissues\u002F35",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},29981,"PyramidKV 代码中每层 KV Cache 数量的计算公式为何与论文描述不一致（未除以 m）？","这是一个文档\u002F公式表述问题。实际上公式中的分母位置应该是 `m-1`（即 $k^{m-1}$ 的索引减去 $k^0$ 的索引），而不是简单的 `m`。代码逻辑是正确的（KV-size = $k^{total}\u002Fm$），论文中的公式描述有误，维护者承诺会修正论文中的相关表述。","https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FKVCache-Factory\u002Fissues\u002F36",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},29982,"在 Needle in a Haystack 测试中，模型拒绝回答或只生成结束符怎么办？","这通常是由于 Prompt 模板配置不当导致的。维护者已提交专门的 Needle 测试代码来解决此问题。建议直接使用仓库中最新提交的 Needle 测试脚本，其中包含了经过验证的 Prompt 格式和推理配置，避免手动构造 Prompt 时出现的格式错误。","https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FKVCache-Factory\u002Fissues\u002F4",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},29983,"论文中使用的 Llama-3-8B 模型具体是哪个版本？为什么复现结果对不上？","使用的是 Hugging Face 上的官方 `Meta-Llama-3-8B-Instruct` 模型。结果不一致的主要原因是：论文工作开展时 Llama-3 刚发布，尚未有性能完善的 32k 长文本检查点。因此，论文中的实现策略是在序列中间切断，分别在前面和后面各保留 4k 的上下文窗口，而不是使用完整的长上下文模式。复现时需注意这一上下文截断策略。","https:\u002F\u002Fgithub.com\u002FZefan-Cai\u002FKVCache-Factory\u002Fissues\u002F8",[]]