[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-OpenPPL--ppq":3,"tool-OpenPPL--ppq":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 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,52],"视频",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[14,35],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":75,"owner_website":76,"owner_url":77,"languages":78,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":102,"env_os":103,"env_gpu":104,"env_ram":105,"env_deps":106,"category_tags":113,"github_topics":114,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":122,"updated_at":123,"faqs":124,"releases":160},4673,"OpenPPL\u002Fppq","ppq","PPL Quantization Tool (PPQ) is a powerful offline neural network quantization tool.","PPQ（PPL Quantization Tool）是一款专为工业级应用打造的高性能离线神经网络量化工具。它的核心使命是将复杂的浮点运算模型高效转换为低精度的定点运算，从而显著降低芯片功耗、减少内存占用并提升推理速度，解决 AI 模型在端侧设备部署难、运行慢的痛点。\n\n这款工具特别适合算法工程师、嵌入式开发者以及希望优化模型性能的研究人员使用。面对日益复杂的网络结构，PPQ 提供了强大的计算图解析与调度能力，能够自动识别量化区域，同时允许用户精细控制每个算子的量化策略。其独特亮点在于高度灵活的架构设计：内置 27 个可自由组合的量化优化过程，支持用户自定义量化位宽与校准算法；拥有专为量化设计的执行引擎，无需依赖 Onnxruntime 即可模拟推理，并原生支持 FP8 等前沿量化规范。此外，PPQ 还兼容 TensorRT、OpenVINO、ncnn 等主流推理框架，帮助开发者轻松跨越从模型训练到硬件部署的鸿沟，是实现高效 AI 落地的得力助手。","![Banner](https:\u002F\u002Foss.sensetime.com\u002F20210820\u002F9212d4b51db2e186dc39095b9e01cd3a\u002Fccaf7b3f572fbe398f0d42e24435fc59.jpg)\n\n## PPL Quantization Tool 0.6.6 (PPL 量化工具)\n\nPPQ 是一个可扩展的、高性能的、面向工业应用的神经网络量化工具。\n\n神经网络量化，作为一种常用的神经网络加速方案自 2016 年以来被广泛地应用。相比于神经网络剪枝与架构搜索，网络量化的泛用性更强，具有较高的工业实用价值。特别是对于端侧芯片而言，在片上面积与功耗都受到限制的场景下，我们总是希望将所有浮点运算转换为定点运算。量化技术的价值在于浮点运算与访存是十分昂贵的，它依赖于复杂的浮点运算器以及较高的访存带宽。如果我们能够在可接受的范围内使用较低位宽的定点运算近似浮点结果，这将使得我们在芯片电路设计、系统功耗、系统延迟与吞吐量等多方面获得显著的优势。\n\n我们正处在时代的浪潮之中，基于神经网络的人工智能正快速发展，图像识别、图像超分辨率、内容生成、模型重建等技术正改变我们的生活。与之俱来的，是不断变化的模型结构，成为摆在模型量化与部署前的第一道难关。为了处理复杂结构，我们设计了完整的计算图逻辑结构与图调度逻辑，这些努力使得 PPQ 能够解析并修改复杂的模型结构，自动判定网络中的量化区与非量化区，并允许用户对调度逻辑进行手动控制。\n\n网络的量化与性能优化是严峻的工程问题，我们希望用户能够参与到网络的量化与部署过程中来，参与到神经网络的性能优化中来。为此我们在 Github 中提供相应的与部署相关学习资料，并在软件设计上刻意强调接口的灵活性。在我们不断的尝试与探索中，我们抽象出量化器这一逻辑类型，负责初始化不同硬件平台上的量化策略，并允许用户自定义网络中每一个算子、每一个张量的量化位宽、量化粒度与校准算法等。我们将量化逻辑重组为27个独立的量化优化过程 (Quantization Optimization Pass)，PPQ 的用户可以根据需求任意组合优化过程，完成高度灵活的量化任务。作为 PPQ 的使用者，您能够根据需求新增、修改所有优化过程，探索量化技术的新边界。\n\n这是一个为处理复杂量化任务而生的框架 —— PPQ 的执行引擎是专为量化设计的，截止 PPQ 0.6.6 版本，软件一共内置 99 种常见的 Onnx 算子执行逻辑，并原生支持执行过程中的量化模拟操作。PPQ 可以脱离 Onnxruntime 完成 Onnx 模型的推理与量化。作为架构设计一部分，我们允许用户使用 Python + Pytorch 或 C++ \u002F Cuda 为 PPQ 注册新的算子实现，新的逻辑亦可替换现有的算子实现逻辑。PPQ 允许相同的算子在不同平台上有不同的执行逻辑，从而支撑不同硬件平台的运行模拟。借助定制化的执行引擎与 PPQ Cuda Kernel 的高性能实现，使得 PPQ 具有极其显著的性能优势，往往能以惊人的效率完成量化任务。\n\nPPQ 的开发与推理框架关系密切，这使得我们能够了解硬件推理的诸多细节，从而严格控制硬件模拟误差。在国内外众多开源工作者共同努力之下，目前 PPQ 支持与 TensorRT, OpenPPL, Openvino, ncnn, mnn, Onnxruntime, Tengine, Snpe, GraphCore, Metax 等多个推理框架协同工作，并预制了对应量化器与导出逻辑。PPQ 是一个高度可扩展的模型量化框架，借助 ppq.lib 中的函数功能，您能够将 PPQ 的量化能力扩展到其他可能的硬件与推理库上。我们期待与您一起把人工智能带到千家万户之间。\n\n#### 在 0.6.6 的版本更新中，我们为你带来了这些功能：\n   1. [FP8 量化规范](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F574825662)，PPQ 现在支持 E4M3, E5M2 等多种规范的 FP8 [量化模拟与训练](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Ffp8_sample.py)\n   2. [PFL 基础类库](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Fyolo6_sample.py)，PPQ 现在提供一套更为基础的 api 函数帮助你完成更为灵活的量化\n   3. 更为强大的 [图模式匹配](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002FIR\u002Fsearch.py) 与 [图融合功能](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002FIR\u002Fmorph.py)\n   4. 基于 Onnx 的模型 [QAT](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FQAT\u002Fimagenet.py) 功能\n   5. 全新的 [TensorRT](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Fdeploy_trt_by_OnnxParser.md) 量化与导出逻辑\n   6. 全球最大的量化模型库 [OnnxQuant](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Ftree\u002Fmaster\u002Fppq\u002Fsamples\u002FQuantZoo)\n   7. 其他未知的软件特性\n\n### Installation (安装方法)\n\n1. Install CUDA from [CUDA Toolkit](https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-toolkit-archive)\n\n2. Install Complier\n\n```bash\napt-get install ninja-build # for debian\u002Fubuntu user\nyum install ninja-build # for redhat\u002Fcentos user\n```\n\nFor Windows User:\n\n  (1) Download ninja.exe from [https:\u002F\u002Fgithub.com\u002Fninja-build\u002Fninja\u002Freleases](https:\u002F\u002Fgithub.com\u002Fninja-build\u002Fninja\u002Freleases), add it to Windows PATH.\n\n  (2) Install Visual Studio 2019 from [https:\u002F\u002Fvisualstudio.microsoft.com](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fzh-hans\u002F).\n\n  (3) Add your C++ compiler to Windows PATH Environment, if you are using Visual Studio, it should be like \"C:\\Program Files\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\Hostx86\\x86\"\n\n  (4) Update PyTorch version to 1.10+.\n\n3. Install PPQ\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq.git\ncd ppq\npip install -r requirements.txt\npython setup.py install\n```\n\n* Install PPQ from our docker image (optional):\n\n```bash\ndocker pull stephen222\u002Fppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5\n\ndocker run -it --rm --ipc=host --gpus all --mount type=bind,source=your custom path,target=\u002Fworkspace stephen222\u002Fppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5 \u002Fbin\u002Fbash\n\ngit clone https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq.git\ncd ppq\nexport PYTHONPATH=${PWD}:${PYTHONPATH}\n```\n\n* Install PPQ using pip (optional):\n\n```bash\npython3 -m pip install ppq\n```\n\n### Learning Path (学习路线)\n\n#### PPQ 基础用法及示例脚本\n| | **Description 介绍** | **Link 链接** |\n| :-: | :- | :-: |\n| 01 | 模型量化 | [onnx](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fquantize.py), [caffe](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Fquantize_caffe_model.py), [pytorch](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Fquantize_torch_model.py) |\n| 02 | 执行器 | [executor](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fexecute.py) |\n| 03 | 误差分析 | [analyser](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fanalyse.py) |\n| 04 | 校准器 | [calibration](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fcalibration.py) |\n| 05 | 网络微调 | [finetune](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Ffinetune.py) |\n| 06 | 网络调度 | [dispatch](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fdispatch.py) |\n| 07 | 最佳实践 | [Best Practice](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002FbestPractice.py) |\n|  |  | |\n| 08 | 目标平台 | [platform](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002FtargetPlatform.py) |\n| 09 | 优化过程 | [Optim](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Foptimization.py) |\n| 10 | 图融合 | [Fusion](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Ffusion.py) |\n\n#### PPQ 优化过程文档\n| | **Description 介绍** | **Link 链接** |\n| :-: | :-: | :-: |\n| 01 | QuantSimplifyPass(通用量化精简过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantSimplify.md) |\n| 02 | QuantFusionPass(通用量化图融合过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantFusion.md) |\n| 03 | QuantAlignmentPass(通用量化对齐过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantAlignment.md) |\n| 04 | RuntimeCalibrationPass(参数校准过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FRuntimeCalibrationPass.md) |\n| 05 | BiasCorrectionPass(Bias修正过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FBiasCorrectionPass.md) |\n| 06 | QuantSimplifyPass(通用量化精简过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantSimplify.md) |\n| 07 | LayerwiseEqualizationPass(层间权重均衡过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FLayerwiseEqualization.md) |\n| 08 | LayerSpilitPass(算子分裂过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FLayerSpilit.md) |\n| 09 | LearnedStepSizePass(网络微调过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FLearnedStepSizePass.md) |\n| 10 | Other(其他) | [refer to](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Ftree\u002Fmaster\u002Fppq\u002Fquantization\u002Foptim) |\n\n#### 视频资料\n|  | **Desc 介绍** | **Link 链接** |\n| :-: | :-: | :-: |\n| 01 | 计算机体系结构基础知识 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1gS4y1Y7KR) |\n| 02 | 网络性能分析 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1oT4y1h73e) |\n| 03 | 量化计算原理 | [part1](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1fB4y1m7fJ), [part2](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1qA4y1Q7Uh) |\n| 04 | 图优化与量化模拟 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Kr4y1n7cy) |\n| 05 | 图调度与模式匹配 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1xY411A7ea) |\n| 06 | 神经网络部署 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz) |\n| 07 | 量化参数选择 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1QF41157aM) |\n| 08 | 量化误差传播分析 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1CU4y1q7tr) |\n\n#### 量化部署教程\n| **使用例子(Examples)** | **网络部署平台(Platform)** | **输入模型格式(Format)** | **链接(Link)** | **相关视频(Video)** |\n| :- | :-: | :-: | :-: | :-: |\n| `TensorRT` |  |  |  |  |\n| 使用 Torch2trt 加速你的网络 | pytorch | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Torch2trt.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT 量化训练 | TensorRT | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_QAT.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT 后训练量化(PPQ) | TensorRT | onnx |\u003Cp align=\"left\">[1. Quant with TensorRT OnnxParser](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Fdeploy_trt_by_OnnxParser.md)\u003Cp align=\"left\">[2. Quant with TensorRT API](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Fdeploy_trt_by_api.md)|  |\n| TensorRT fp32 部署 | TensorRT | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Fp32.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT 性能比较 | TensorRT | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Benchmark.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT Profiler | TensorRT | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Profiling.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| `onnxruntime` |  |  |  |  |\n| 使用 onnxruntime 加速你的网络 | onnxruntime | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOnnxruntime\u002FExample_Fp32.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz \"Network Deploy\") |\n| onnx 后训练量化(PPQ) | onnxruntime | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOnnxruntime\u002FExample_PTQ.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz \"Network Deploy\") |\n| onnxruntime 性能比较 | onnxruntime | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOnnxruntime\u002FExample_Benchmark.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz \"Network Deploy\") |\n| `openvino` |  |  |  |  |\n| 使用 openvino 加速你的网络 | openvino | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_Fp32.py) ||\n| openvino 量化训练 | openvino | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_QAT.py) ||\n| openvino 后训练量化(PPQ) | openvino | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_PTQ.py) ||\n| openvino 性能比较 | openvino | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_Benchmark.py) ||\n| `snpe` |  |  |  |  |\n| snpe 后训练量化(PPQ) | snpe | caffe | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Finference_with_snpe_dsp.md) ||\n| `ncnn` |  |  |  |  |\n| ncnn 后训练量化(PPQ) | ncnn | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Finference_with_ncnn.md) ||\n| `OpenPPL` |  |  |  |  |\n| ppl cuda 后训练量化(PPQ) | ppl cuda | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Finference_with_ppl_cuda.md) ||\n\n#### Dive into PPQ 深入理解量化框架\n|  | **Desc 介绍** | **Link 链接** |\n| :-: | :-: | :-: |\n| 01 | PPQ 量化执行流程 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1kt4y1b75m) |\n| 02 | PPQ 网络解析 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV16B4y1h7u4) |\n| 03 | PPQ 量化图调度 | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1ig411f7f5) |\n| 04 | PPQ 目标平台与 TQC |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Lf4y1o7Zd) |\n| 05 | PPQ 量化器 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1494y1971i) |\n| 06 | PPQ 量化优化过程 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1zT411g7Ly) |\n| 07 | PPQ 量化函数 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1CU4y1q7tr) |\n\n### Contact Us\n\n| WeChat Official Account | QQ Group |\n| :----:| :----: |\n| OpenPPL | 627853444 |\n| ![OpenPPL](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_readme_6c4488ca8243.jpg)| ![QQGroup](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_readme_2b0a54952607.jpg) |\n\nEmail: openppl.ai@hotmail.com\n\n### Other Resources\n\n* [Sensetime Parrots](https:\u002F\u002Fwww.sensetime.com\u002Fcn)\n* [Sensetime Parrots Primitive Libraries](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppl.nn)\n* [Sensetime mmlab](https:\u002F\u002Fgithub.com\u002Fopen-mmlab)\n\n### Contributions\n\n  We appreciate all contributions. If you are planning to contribute back bug fixes, please do so without any further discussion.\n\n  If you plan to contribute new features, utility functions, or extensions to the core, please first open an issue and discuss the feature with us. Sending a PR without discussion might end up resulting in a rejected PR because we might be taking the core in a different direction than you might be aware of.\n\n### Benchmark\n\nPPQ is tested with models from mmlab-classification, mmlab-detection, mmlab-segamentation, mmlab-editing, here we listed part of out testing result.\n\n* No quantization optimization procedure is applied with following models.\n\n| Model | Type | Calibration | Dispatcher | Metric | PPQ(sim) | PPLCUDA | FP32 |\n|  ----  | ----  |   ----  | ----  |  ----  | ----  |  ----  |  ----  |\n| Resnet-18  | Classification | 512 imgs | conservative | Acc-Top-1 | 69.50% | 69.42% | 69.88% |\n| ResNeXt-101 | Classification | 512 imgs | conservative | Acc-Top-1 | 78.46% | 78.37% | 78.66% |\n| SE-ResNet-50 | Classification | 512 imgs | conservative | Acc-Top-1 | 77.24% | 77.26% | 77.76% |\n| ShuffleNetV2 | Classification | 512 imgs | conservative | Acc-Top-1 | 69.13% | 68.85% | 69.55% |\n| MobileNetV2  | Classification | 512 imgs | conservative | Acc-Top-1 | 70.99% | 71.1% | 71.88% |\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n| retinanet | Detection | 32 imgs | pplnn | bbox_mAP | 36.1% | 36.1% | 36.4% |\n| faster_rcnn | Detection | 32 imgs | pplnn | bbox_mAP | 36.6% | 36.7% | 37.0% |\n| fsaf | Detection | 32 imgs | pplnn | bbox_mAP | 36.5% | 36.6% | 37.4% |\n| mask_rcnn | Detection | 32 imgs | pplnn | bbox_mAP | 37.7% | 37.6% | 37.9% |\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n| deeplabv3 | Segmentation | 32 imgs | conservative | aAcc \u002F mIoU | 96.13% \u002F 78.81% | 96.14% \u002F 78.89%  | 96.17% \u002F 79.12% |\n| deeplabv3plus | Segmentation | 32 imgs | conservative | aAcc \u002F mIoU | 96.27% \u002F 79.39% | 96.26% \u002F 79.29%  | 96.29% \u002F 79.60% |\n| fcn | Segmentation | 32 imgs | conservative | aAcc \u002F mIoU | 95.75% \u002F 74.56% | 95.62% \u002F 73.96%  | 95.68% \u002F 72.35% |\n| pspnet | Segmentation | 32 imgs | conservative | aAcc \u002F mIoU | 95.79% \u002F 77.40% | 95.79% \u002F 77.41%  | 95.83% \u002F 77.74% |\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n| srcnn | Editing | 32 imgs | conservative | PSNR \u002F SSIM | 27.88% \u002F 79.70% | 27.88% \u002F 79.07%  | 28.41% \u002F 81.06% |\n| esrgan | Editing | 32 imgs | conservative | PSNR \u002F SSIM | 27.84% \u002F 75.20% | 27.49% \u002F 72.90%  | 27.51% \u002F 72.84% |\n\n* PPQ(sim) stands for PPQ quantization simulator's result.\n* Dispatcher stands for dispatching policy of PPQ.\n* Classification models are evaluated with ImageNet, Detection and Segmentation models are evaluated with the COCO dataset, Editing models are evaluated with DIV2K dataset.\n* All calibration datasets are randomly picked from training data.\n\n### License\n\n![Logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_readme_10d5dfa7d39d.png)\n\nThis project is distributed under the [Apache License, Version 2.0](LICENSE).\n","![Banner](https:\u002F\u002Foss.sensetime.com\u002F20210820\u002F9212d4b51db2e186dc39095b9e01cd3a\u002Fccaf7b3f572fbe398f0d42e24435fc59.jpg)\n\n## PPL 量化工具 0.6.6 (PPL Quantization Tool)\n\nPPQ 是一个可扩展的、高性能的、面向工业应用的神经网络量化工具。\n\n神经网络量化，作为一种常用的神经网络加速方案自 2016 年以来被广泛地应用。相比于神经网络剪枝与架构搜索，网络量化的泛用性更强，具有较高的工业实用价值。特别是对于端侧芯片而言，在片上面积与功耗都受到限制的场景下，我们总是希望将所有浮点运算转换为定点运算。量化技术的价值在于浮点运算与访存是十分昂贵的，它依赖于复杂的浮点运算器以及较高的访存带宽。如果我们能够在可接受的范围内使用较低位宽的定点运算近似浮点结果，这将使得我们在芯片电路设计、系统功耗、系统延迟与吞吐量等多方面获得显著的优势。\n\n我们正处在时代的浪潮之中，基于神经网络的人工智能正快速发展，图像识别、图像超分辨率、内容生成、模型重建等技术正改变我们的生活。与之俱来的，是不断变化的模型结构，成为摆在模型量化与部署前的第一道难关。为了处理复杂结构，我们设计了完整的计算图逻辑结构与图调度逻辑，这些努力使得 PPQ 能够解析并修改复杂的模型结构，自动判定网络中的量化区与非量化区，并允许用户对调度逻辑进行手动控制。\n\n网络的量化与性能优化是严峻的工程问题，我们希望用户能够参与到网络的量化与部署过程中来，参与到神经网络的性能优化中来。为此我们在 Github 中提供相应的与部署相关学习资料，并在软件设计上刻意强调接口的灵活性。在我们不断的尝试与探索中，我们抽象出量化器这一逻辑类型，负责初始化不同硬件平台上的量化策略，并允许用户自定义网络中每一个算子、每一个张量的量化位宽、量化粒度与校准算法等。我们将量化逻辑重组为27个独立的量化优化过程 (Quantization Optimization Pass)，PPQ 的用户可以根据需求任意组合优化过程，完成高度灵活的量化任务。作为 PPQ 的使用者，您能够根据需求新增、修改所有优化过程，探索量化技术的新边界。\n\n这是一个为处理复杂量化任务而生的框架 —— PPQ 的执行引擎是专为量化设计的，截止 PPQ 0.6.6 版本，软件一共内置 99 种常见的 Onnx 算子执行逻辑，并原生支持执行过程中的量化模拟操作。PPQ 可以脱离 Onnxruntime 完成 Onnx 模型的推理与量化。作为架构设计一部分，我们允许用户使用 Python + Pytorch 或 C++ \u002F Cuda 为 PPQ 注册新的算子实现，新的逻辑亦可替换现有的算子实现逻辑。PPQ 全然允许相同的算子在不同平台上有不同的执行逻辑，从而支撑不同硬件平台的运行模拟。借助定制化的执行引擎与 PPQ Cuda Kernel 的高性能实现，使得 PPQ 具有极其显著的性能优势，往往能以惊人的效率完成量化任务。\n\nPPQ 的开发与推理框架关系密切，这使得我们能够了解硬件推理的诸多细节，从而严格控制硬件模拟误差。在国内外众多开源工作者共同努力之下，目前 PPQ 支持与 TensorRT, OpenPPL, Openvino, ncnn, mnn, Onnxruntime, Tengine, Snpe, GraphCore, Metax 等多个推理框架协同工作，并预制了对应量化器与导出逻辑。PPQ 是一个高度可扩展的模型量化框架，借助 ppq.lib 中的函数功能，您能够将 PPQ 的量化能力扩展到其他可能的硬件与推理库上。我们期待与您一起把人工智能带到千家万户之间。\n\n#### 在 0.6.6 的版本更新中，我们为你带来了这些功能：\n   1. [FP8 量化规范](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F574825662)，PPQ 现在支持 E4M3, E5M2 等多种规范的 FP8 [量化模拟与训练](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Ffp8_sample.py)\n   2. [PFL 基础类库](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Fyolo6_sample.py)，PPQ 现在提供一套更为基础的 api 函数帮助你完成更为灵活的量化\n   3. 更为强大的 [图模式匹配](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002FIR\u002Fsearch.py) 与 [图融合功能](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002FIR\u002Fmorph.py)\n   4. 基于 Onnx 的模型 [QAT](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FQAT\u002Fimagenet.py) 功能\n   5. 全新的 [TensorRT](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Fdeploy_trt_by_OnnxParser.md) 量化与导出逻辑\n   6. 全球最大的量化模型库 [OnnxQuant](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Ftree\u002Fmaster\u002Fppq\u002Fsamples\u002FQuantZoo)\n   7. 其他未知的软件特性\n\n### Installation (安装方法)\n\n1. Install CUDA from [CUDA Toolkit](https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-toolkit-archive)\n\n2. Install Complier\n\n```bash\napt-get install ninja-build # for debian\u002Fubuntu user\nyum install ninja-build # for redhat\u002Fcentos user\n```\n\nFor Windows User:\n\n  (1) Download ninja.exe from [https:\u002F\u002Fgithub.com\u002Fninja-build\u002Fninja\u002Freleases](https:\u002F\u002Fgithub.com\u002Fninja-build\u002Fninja\u002Freleases), add it to Windows PATH.\n\n  (2) Install Visual Studio 2019 from [https:\u002F\u002Fvisualstudio.microsoft.com](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fzh-hans\u002F).\n\n  (3) Add your C++ compiler to Windows PATH Environment, if you are using Visual Studio, it should be like \"C:\\Program Files\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\Hostx86\\x86\"\n\n  (4) Update PyTorch version to 1.10+.\n\n3. Install PPQ\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq.git\ncd ppq\npip install -r requirements.txt\npython setup.py install\n```\n\n* Install PPQ from our docker image (optional):\n\n```bash\ndocker pull stephen222\u002Fppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5\n\ndocker run -it --rm --ipc=host --gpus all --mount type=bind,source=your custom path,target=\u002Fworkspace stephen222\u002Fppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5 \u002Fbin\u002Fbash\n\ngit clone https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq.git\ncd ppq\nexport PYTHONPATH=${PWD}:${PYTHONPATH}\n```\n\n* Install PPQ using pip (optional):\n\n```bash\npython3 -m pip install ppq\n```\n\n### Learning Path (学习路线)\n\n#### PPQ 基础用法及示例脚本\n| | **Description 介绍** | **Link 链接** |\n| :-: | :- | :-: |\n| 01 | 模型量化 | [onnx](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fquantize.py), [caffe](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Fquantize_caffe_model.py), [pytorch](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002Fquantize_torch_model.py) |\n| 02 | 执行器 | [executor](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fexecute.py) |\n| 03 | 误差分析 | [analyser](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fanalyse.py) |\n| 04 | 校准器 | [calibration](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fcalibration.py) |\n| 05 | 网络微调 | [finetune](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Ffinetune.py) |\n| 06 | 网络调度 | [dispatch](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Fdispatch.py) |\n| 07 | 最佳实践 | [Best Practice](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002FbestPractice.py) |\n|  |  | |\n| 08 | 目标平台 | [platform](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002FtargetPlatform.py) |\n| 09 | 优化过程 | [Optim](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Foptimization.py) |\n| 10 | 图融合 | [Fusion](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTutorial\u002Ffusion.py) |\n\n#### PPQ 优化过程文档\n| | **Description 介绍** | **Link 链接** |\n| :-: | :-: | :-: |\n| 01 | QuantSimplifyPass(通用量化精简过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantSimplify.md) |\n| 02 | QuantFusionPass(通用量化图融合过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantFusion.md) |\n| 03 | QuantAlignmentPass(通用量化对齐过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantAlignment.md) |\n| 04 | RuntimeCalibrationPass(参数校准过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FRuntimeCalibrationPass.md) |\n| 05 | BiasCorrectionPass(Bias修正过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FBiasCorrectionPass.md) |\n| 06 | QuantSimplifyPass(通用量化精简过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FQuantSimplify.md) |\n| 07 | LayerwiseEqualizationPass(层间权重均衡过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FLayerwiseEqualization.md) |\n| 08 | LayerSpilitPass(算子分裂过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FLayerSpilit.md) |\n| 09 | LearnedStepSizePass(网络微调过程) | [doc](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002FPasses\u002FLearnedStepSizePass.md) |\n| 10 | Other(其他) | [refer to](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Ftree\u002Fmaster\u002Fppq\u002Fquantization\u002Foptim) |\n\n#### 视频资料\n|  | **Desc 介绍** | **Link 链接** |\n| :-: | :-: | :-: |\n| 01 | 计算机体系结构基础知识 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1gS4y1Y7KR) |\n| 02 | 网络性能分析 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1oT4y1h73e) |\n| 03 | 量化计算原理 | [part1](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1fB4y1m7fJ), [part2](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1qA4y1Q7Uh) |\n| 04 | 图优化与量化模拟 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Kr4y1n7cy) |\n| 05 | 图调度与模式匹配 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1xY411A7ea) |\n| 06 | 神经网络部署 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz) |\n| 07 | 量化参数选择 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1QF41157aM) |\n| 08 | 量化误差传播分析 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1CU4y1q7tr) |\n\n#### 量化部署教程\n| **使用例子(Examples)** | **网络部署平台(Platform)** | **输入模型格式(Format)** | **链接(Link)** | **相关视频(Video)** |\n| :- | :-: | :-: | :-: | :-: |\n| `TensorRT` |  |  |  |  |\n| 使用 Torch2trt 加速你的网络 | pytorch | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Torch2trt.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT 量化训练 | TensorRT | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_QAT.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT 后训练量化(PPQ) | TensorRT | onnx |\u003Cp align=\"left\">[1. Quant with TensorRT OnnxParser](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Fdeploy_trt_by_OnnxParser.md)\u003Cp align=\"left\">[2. Quant with TensorRT API](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Fdeploy_trt_by_api.md)|  |\n| TensorRT fp32 部署 | TensorRT | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Fp32.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT 性能比较 | TensorRT | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Benchmark.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| TensorRT Profiler | TensorRT | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FTensorRT\u002FExample_Profiling.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1AU4y127Uo) |\n| `onnxruntime` |  |  |  |  |\n| 使用 onnxruntime 加速你的网络 | onnxruntime | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOnnxruntime\u002FExample_Fp32.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz \"Network Deploy\") |\n| onnx 后训练量化(PPQ) | onnxruntime | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOnnxruntime\u002FExample_PTQ.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz \"Network Deploy\") |\n| onnxruntime 性能比较 | onnxruntime | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOnnxruntime\u002FExample_Benchmark.py) | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1t34y1E7Fz \"Network Deploy\") |\n| `openvino` |  |  |  |  |\n| 使用 openvino 加速你的网络 | openvino | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_Fp32.py) ||\n| openvino 量化训练 | openvino | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_QAT.py) ||\n| openvino 后训练量化(PPQ) | openvino | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_PTQ.py) ||\n| openvino 性能比较 | openvino | pytorch | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fppq\u002Fsamples\u002FOpenvino\u002FExample_Benchmark.py) ||\n| `snpe` |  |  |  |  |\n| snpe 后训练量化(PPQ) | snpe | caffe | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Finference_with_snpe_dsp.md) ||\n| `ncnn` |  |  |  |  |\n| ncnn 后训练量化(PPQ) | ncnn | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Finference_with_ncnn.md) ||\n| `OpenPPL` |  |  |  |  |\n| ppl cuda 后训练量化(PPQ) | ppl cuda | onnx | [link](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq\u002Fblob\u002Fmaster\u002Fmd_doc\u002Finference_with_ppl_cuda.md) ||\n\n#### Dive into PPQ 深入理解量化框架\n|  | **Desc 介绍** | **Link 链接** |\n| :-: | :-: | :-: |\n| 01 | PPQ 量化执行流程 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1kt4y1b75m) |\n| 02 | PPQ 网络解析 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV16B4y1h7u4) |\n| 03 | PPQ 量化图调度 | [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1ig411f7f5) |\n| 04 | PPQ 目标平台与 TQC |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Lf4y1o7Zd) |\n| 05 | PPQ 量化器 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1494y1971i) |\n| 06 | PPQ 量化优化过程 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1zT411g7Ly) |\n| 07 | PPQ 量化函数 |  [link](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1CU4y1q7tr) |\n\n\n\n### 联系我们\n\n| 微信公众号 | QQ群 |\n| :----:| :----: |\n| OpenPPL | 627853444 |\n| ![OpenPPL](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_readme_6c4488ca8243.jpg)| ![QQGroup](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_readme_2b0a54952607.jpg) |\n\n邮箱: openppl.ai@hotmail.com\n\n### 其他资源\n\n* [商汤Parrots](https:\u002F\u002Fwww.sensetime.com\u002Fcn)\n* [商汤Parrots基础库](https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppl.nn)\n* [商汤mmlab](https:\u002F\u002Fgithub.com\u002Fopen-mmlab)\n\n### 贡献\n\n我们感谢所有贡献。如果您计划提交 bug 修复，请直接提交，无需进一步讨论。\n\n如果您计划贡献新功能、实用工具或对核心的扩展，请先创建一个 issue，并与我们讨论该功能。未经讨论就发送 PR 可能会导致 PR 被拒绝，因为我们可能正在将核心向您不了解的方向发展。\n\n### 基准测试\n\nPPQ 使用 mmlab-classification、mmlab-detection、mmlab-segamentation、mmlab-editing 中的模型进行测试，此处列出部分测试结果。\n\n* 以下模型未应用量化优化流程。\n\n| 模型 | 类型 | 校准 | 调度器 | 指标 | PPQ(sim) | PPLCUDA | FP32 |\n|  ----  | ----  |   ----  | ----  |  ----  | ----  |  ----  |  ----  |\n| Resnet-18  | 分类 | 512 张图像 | 保守 | Top-1 精确率 | 69.50% | 69.42% | 69.88% |\n| ResNeXt-101 | 分类 | 512 张图像 | 保守 | Top-1 精确率 | 78.46% | 78.37% | 78.66% |\n| SE-ResNet-50 | 分类 | 512 张图像 | 保守 | Top-1 精确率 | 77.24% | 77.26% | 77.76% |\n| ShuffleNetV2 | 分类 | 512 张图像 | 保守 | Top-1 精确率 | 69.13% | 68.85% | 69.55% |\n| MobileNetV2  | 分类 | 512 张图像 | 保守 | Top-1 精确率 | 70.99% | 71.1% | 71.88% |\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n| retinanet | 目标检测 | 32 张图像 | pplnn | bbox_mAP | 36.1% | 36.1% | 36.4% |\n| faster_rcnn | 目标检测 | 32 张图像 | pplnn | bbox_mAP | 36.6% | 36.7% | 37.0% |\n| fsaf | 目标检测 | 32 张图像 | pplnn | bbox_mAP | 36.5% | 36.6% | 37.4% |\n| mask_rcnn | 目标检测 | 32 张图像 | pplnn | bbox_mAP | 37.7% | 37.6% | 37.9% |\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n| deeplabv3 | 图像分割 | 32 张图像 | 保守 | aAcc \u002F mIoU | 96.13% \u002F 78.81% | 96.14% \u002F 78.89%  | 96.17% \u002F 79.12% |\n| deeplabv3plus | 图像分割 | 32 张图像 | 保守 | aAcc \u002F mIoU | 96.27% \u002F 79.39% | 96.26% \u002F 79.29%  | 96.29% \u002F 79.60% |\n| fcn | 图像分割 | 32 张图像 | 保守 | aAcc \u002F mIoU | 95.75% \u002F 74.56% | 95.62% \u002F 73.96%  | 95.68% \u002F 72.35% |\n| pspnet | 图像分割 | 32 张图像 | 保守 | aAcc \u002F mIoU | 95.79% \u002F 77.40% | 95.79% \u002F 77.41%  | 95.83% \u002F 77.74% |\n|  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |  ----  |\n| srcnn | 图像修复 | 32 张图像 | 保守 | PSNR \u002F SSIM | 27.88% \u002F 79.70% | 27.88% \u002F 79.07%  | 28.41% \u002F 81.06% |\n| esrgan | 图像修复 | 32 张图像 | 保守 | PSNR \u002F SSIM | 27.84% \u002F 75.20% | 27.49% \u002F 72.90%  | 27.51% \u002F 72.84% |\n\n* PPQ(sim) 表示 PPQ 量化模拟器的结果。\n* 调度器表示 PPQ 的调度策略。\n* 分类模型使用 ImageNet 数据集评估，目标检测和图像分割模型使用 COCO 数据集评估，图像修复模型使用 DIV2K 数据集评估。\n* 所有校准数据集均从训练数据中随机选取。\n\n### 许可证\n\n![Logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_readme_10d5dfa7d39d.png)\n\n本项目采用 [Apache License, Version 2.0](LICENSE) 许可证发布。","# PPQ (PPL Quantization Tool) 快速上手指南\n\nPPQ 是一个可扩展、高性能的工业级神经网络量化工具，支持将浮点模型转换为定点模型，适用于 TensorRT、OpenVINO、NCNN、MNN 等多种推理框架。\n\n## 1. 环境准备\n\n在开始安装前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐 Ubuntu\u002FCentOS) 或 Windows\n*   **CUDA Toolkit**: 需预先安装与显卡匹配的 CUDA 版本（从 [NVIDIA 官网](https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-toolkit-archive) 下载）\n*   **Python**: 建议 Python 3.8+\n*   **PyTorch**: 版本需 >= 1.10\n*   **编译器**:\n    *   **Linux (Debian\u002FUbuntu)**: `ninja-build`\n    *   **Linux (RedHat\u002FCentOS)**: `ninja-build`\n    *   **Windows**: Visual Studio 2019+ 及对应的 C++ 编译器环境变量配置\n\n## 2. 安装步骤\n\n您可以选择源码安装或使用 Docker 镜像（推荐用于快速体验）。\n\n### 方法一：源码安装（推荐）\n\n首先安装构建工具 `ninja`：\n\n```bash\n# Debian\u002FUbuntu 用户\napt-get install ninja-build\n\n# RedHat\u002FCentOS 用户\nyum install ninja-build\n```\n\n克隆仓库并安装依赖：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq.git\ncd ppq\npip install -r requirements.txt\npython setup.py install\n```\n\n> **提示**：国内用户若遇到 pip 下载慢的问题，可使用清华源加速：\n> `pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n### 方法二：Docker 镜像安装（最简便）\n\n直接使用预置好 CUDA、cuDNN 和 TensorRT 环境的镜像：\n\n```bash\n# 拉取镜像\ndocker pull stephen222\u002Fppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5\n\n# 启动容器（请将 your custom path 替换为本机实际路径）\ndocker run -it --rm --ipc=host --gpus all --mount type=bind,source=your custom path,target=\u002Fworkspace stephen222\u002Fppq:ubuntu18.04_cuda11.4_cudnn8.4_trt8.4.1.5 \u002Fbin\u002Fbash\n\n# 在容器内配置环境变量\ncd \u002Fworkspace\ngit clone https:\u002F\u002Fgithub.com\u002Fopenppl-public\u002Fppq.git\ncd ppq\nexport PYTHONPATH=${PWD}:${PYTHONPATH}\n```\n\n### 方法三：PIP 直接安装\n\n```bash\npython3 -m pip install ppq\n```\n\n## 3. 基本使用\n\nPPQ 的核心流程通常包括：加载模型 -> 创建量化器 -> 执行校准 (Calibration) -> 导出量化模型。以下是一个基于 ONNX 模型进行后训练量化 (PTQ) 的最简示例：\n\n```python\nfrom ppq import QuantizationSettingFactory, TargetPlatform\nfrom ppq.api import load_onnx_graph, quantize_onnx_graph, dump_onnx_graph\n\n# 1. 加载原始 ONNX 模型\ngraph = load_onnx_graph(onnx_import_from='your_model.onnx')\n\n# 2. 创建量化配置 (以 TensorRT 为例)\nsetting = QuantizationSettingFactory.trt_quantizing_setting()\n\n# 3. 执行量化 (需要少量校准数据，此处演示默认流程)\n# collator 用于收集校准数据，实际使用中需传入真实数据集\nquantized_graph = quantize_onnx_graph(\n    onnx_import_from='your_model.onnx',\n    calib_dataloader=None, # 替换为真实的校准数据加载器\n    platform=TargetPlatform.TENSORRT,\n    setting=setting\n)\n\n# 4. 导出生成的量化模型\ndump_onnx_graph(quantized_graph, 'quantized_model.onnx')\n\nprint(\"量化完成，模型已保存为 quantized_model.onnx\")\n```\n\n**进阶提示**：\n*   **校准数据**：为了获得最佳精度，请务必在 `calib_dataloader` 中传入代表真实分布的少量数据集（通常 100-500 张图像即可）。\n*   **平台适配**：修改 `TargetPlatform` 参数即可适配 OpenVINO (`OPENVINO`)、NCNN (`NCNN`) 等不同后端。\n*   **详细教程**：更多复杂场景（如 QAT 训练、自定义算子、误差分析）请参考项目 `ppq\u002Fsamples` 目录下的示例脚本。","某边缘计算团队正致力于将高精度的 YOLOv8 目标检测模型部署到算力受限的安防摄像头端侧芯片上，以满足实时监控的低延迟需求。\n\n### 没有 ppq 时\n- **精度损失不可控**：手动编写量化脚本难以处理复杂的算子融合逻辑，导致模型在从浮点转为定点（INT8）后，检测准确率大幅下降，无法满足业务指标。\n- **硬件适配成本高**：面对 TensorRT、OpenVINO 等不同推理后端，需要重复开发多套量化校准代码，缺乏统一的调度逻辑，开发周期被拉长数周。\n- **调试黑盒化**：缺乏细粒度的量化模拟工具，无法定位具体是哪个算子或哪一层张量导致了数值溢出或误差激增，排查问题如同“盲人摸象”。\n- **新特性支持滞后**：当尝试引入 FP8 等新型低精度格式以进一步压缩模型时，因底层执行引擎不支持，只能放弃探索更极致的性能优化方案。\n\n### 使用 ppq 后\n- **精度无损量化**：利用 ppq 内置的 27 个量化优化过程（Quantization Optimization Pass）和自动图调度逻辑，精准识别并保护敏感层，使 INT8 模型精度几乎持平原始浮点模型。\n- **一站式多端部署**：通过 ppq 预置的 TensorRT、ncnn 等导出逻辑，一套代码即可生成适配不同芯片的量化模型，将跨平台部署时间从数周缩短至几天。\n- **透明化误差分析**：借助 ppq 原生支持的离线量化模拟与详细的张量级监控，快速定位并修正了特定算子的量化策略，彻底消除了调试盲区。\n- **前沿技术落地**：直接调用 ppq 对 FP8（E4M3\u002FE5M2）的原生支持，成功在新一代硬件上验证了更低位宽方案的可行性，进一步降低了显存占用。\n\nppq 通过其高度可扩展的量化框架与精准的硬件模拟能力，让复杂的端侧模型部署从“高风险的手工活”变成了“可信赖的自动化流程”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FOpenPPL_ppq_84e4cff4.png","OpenPPL","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FOpenPPL_764b4a3e.png","A High-performance Deep Learning Inference Platform",null,"https:\u002F\u002Fopenppl.ai\u002F","https:\u002F\u002Fgithub.com\u002FOpenPPL",[79,83,87,90,94],{"name":80,"color":81,"percentage":82},"Python","#3572A5",92.4,{"name":84,"color":85,"percentage":86},"C++","#f34b7d",4.3,{"name":88,"color":89,"percentage":10},"Cuda","#3A4E3A",{"name":91,"color":92,"percentage":93},"C","#555555",0.1,{"name":95,"color":96,"percentage":97},"CMake","#DA3434",0,1789,275,"2026-04-03T09:27:32","Apache-2.0",4,"Linux, Windows","需要 NVIDIA GPU 以支持 CUDA 加速和量化模拟。需安装 CUDA Toolkit（Docker 示例基于 CUDA 11.4），具体显存大小未说明，取决于模型规模。","未说明",{"notes":107,"python":108,"dependencies":109},"Windows 用户需安装 Visual Studio 2019 及 C++ 编译器并配置环境变量。提供基于 Ubuntu 18.04 + CUDA 11.4 + cuDNN 8.4 + TensorRT 8.4 的 Docker 镜像。支持通过 pip 直接安装或源码编译安装。该工具主要用于神经网络量化，内置 99 种 ONNX 算子逻辑，可脱离 ONNX Runtime 独立运行推理与量化任务。","3.x (PyTorch 1.10+ 要求 Python 版本与之兼容，通常建议 3.8+)",[110,111,112],"torch>=1.10","onnx","ninja-build",[14],[115,116,117,118,119,111,120,121],"neural-network","deep-learning","quantization","pytorch","caffe","cuda","open-source","2026-03-27T02:49:30.150509","2026-04-06T18:52:24.876356",[125,130,135,140,145,150,155],{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},19752,"如何导出 ONNX 模型并保存量化后的模型？有可运行的示例吗？","PPQ 提供了详细的量化配置结构体来模拟硬件真实的量化过程，而非简单的 fake quant point。你可以导出 TargetPlatform.ONNX 来观察量化配置的 JSON 文件。关于具体的量化计算原理和硬件执行过程，建议参考官方提供的视频教程：[量化计算原理 (Part 1)](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1fB4y1m7fJ) 和 [量化计算原理 (Part 2)](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1qA4y1Q7Uh)。PPQ 的设计目标是构建统一的抽象表达以覆盖更多后端量化细节，确保在不同平台部署时量化信息语义充分。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F68",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},19753,"导入 PPQ 时报错提示无法编译 CUDA 扩展（PPQ can not complie cuda extensions），如何解决？","该问题通常是由于环境中缺少正确的 Torch 库函数或编译器配置导致的。为了避免繁琐的环境配置，维护者推荐使用预构建的 Docker 镜像。你可以尝试拉取以下镜像直接使用：\ndocker pull stephen222\u002Fppq:ppq_latest_0830\n该镜像已预装好相关依赖，可避免手动编译 CUDA 扩展时遇到的头文件缺失问题。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F223",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},19754,"在 CPU 上使用 KL 或 MSE 策略进行校准时报错，但 MinMax 策略正常，原因是什么？","在使用 KL 作为 observer 时，per-layer calibration（逐层校准）确实会出现算子未被正确量化的问题。这是因为逐层量化的逻辑存在缺陷，它在逐层定点的过程中没有考虑到联合定点策略，导致执行结果有偏。相比之下，Min-Max 策略目前未发现此问题。维护者指出该 per-layer calibration 的逻辑需要重构，建议在 CPU 环境下暂时优先使用 MinMax 策略，或等待后续版本修复。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F53",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},19755,"调用 TRT_INT8 导出时出现 AttributeError: 'Operation' object has no attribute 'config' 错误怎么办？","该错误通常是由于使用了旧版本的代码分支导致的。解决方案是重新克隆仓库并使用最新的 master 分支运行：\ngit clone \u003Crepository_url>\n确保使用最新代码后，相对导入（如 trt_exporter 中引入 caffe_exporter）的问题也会一并解决。如果问题依旧，请检查是否完全更新了本地安装的 ppq 包。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F262",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},19756,"PPQ 是否支持带有 NMS（非极大值抑制）算子的 ONNX 模型转换到 TensorRT？","对于包含 TRTBatchedNMS 等后处理算子的模型，PPQ 的处理方式通常是直接在图中移除这些算子后再进行量化转换。你可以在加载 ONNX 图后，使用 graph.remove_variable() 或相关方法移除 NMS 相关的输出变量和算子。例如：\ngraph.remove_variable(graph.variables['dets'])\n移除后再接入量化流程。此外，使用 ProgramEntrance2 脚本可以更好地控制量化细节和网络结构修改。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F377",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},19757,"量化超分模型（如 Real-ESRGAN）后图片变暗或精度损失严重，有什么优化策略？","超分模型本身对量化较为敏感，容易出现精度损失和亮度偏移。目前的经验表明，无论是 OpenVINO 还是 TensorRT 后端，直接量化都较难达到理想效果。建议尝试以下策略：\n1. 将偏差过多的层回退到 FP32 精度（混合精度量化）。\n2. 尝试修改模型结构使其更适合量化。\n3. 注意数据预处理方式，确保校准数据的分布与推理数据一致（如归一化方式）。\n如果效果仍不佳，可能需要针对特定模型结构定制量化策略或放弃对该类模型进行低比特量化。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F480",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},19758,"PPQ 是否支持混合精度量化？能否根据实际推理速度调整精度？","PPQ 支持混合精度量化，默认示例中 bits 可选范围为 [4, 8]。如果需要支持更广泛的位宽（如 [1, 4, 8, 16]），用户需要自行编写对应平台（如 INT1, INT16）的 Quantizer 逻辑，并在 ppq.core.quant 中注册新的平台定义。目前框架未自动结合板上实际推理速度进行动态调整，这需要用户根据具体硬件性能手动配置不同层的量化位宽。","https:\u002F\u002Fgithub.com\u002FOpenPPL\u002Fppq\u002Fissues\u002F203",[161,166,171,176,181],{"id":162,"version":163,"summary_zh":164,"released_at":165},117804,"v0.6.6","* API\n    * 添加了 PPQ 基础类库 PFL，更改了 API 的调用关系\n    * 移除了 AdvancedOptimizationSetting\n* 量化核心逻辑\n    * 添加了新的 QuantizationProperty: DYNAMIC，用于描述动态量化。动态量化功能将支撑 LSTM 的量化。\n    * 添加了新的 QuantizationProperty: FLOATING，用于描述浮点量化，PPQ现在从底层支持FP8 E4M3 E5M2, BF16, FP16的量化过程。目前FLOATING量化必须开启CUDA KERNEL完成计算。\n    * QuantizationStates 中的 SLAVE 状态与 PASSIVE 状态合并。在过去，SLAVE状态用于描述激活值的被动量化，而PASSIVE状态则用于描述参数的被动量化。被动量化参数将与其他TQC共享量化信息。DEQUANTIZED, DEACTIVED, SOI 状态全部与 FP32 合并。\n    * 为 TQC 添加了新的属性 master_by，用于创建被动量化链接\n    * 重新审视了 TQC.policy, roundind, num_of_bits, quant_min, quant_max属性，现在TQC父子链接将不共享这些内容，而只共享scale, offset。\n    * 添加了新的量化平台 TRT_FP8, GRAPHCORE_FP8，移除了 ACDEMIC 系列平台\n    * 针对 FP8 量化，放弃定点对齐中的向大端对齐策略\n    * 强制联合定点现在默认开启，即使复杂图的情况下也会默认执行级联联合定点。\n    * 添加了新的函数 can_export，可以使用该函数校验 TQC 是否能够被导出\n    * 移除了 ChannelwiseTensorQuantizationConfig 类型，相关属性 channel_axis 被直接移入父类\n* 异构执行\n    * 移除了 PPQDeviceSwitcher，cpu-gpu 的数据切换将在算子内部完成\n    * 移除了 cpu 后端，所有运算都将由统一的后端实现完成\n    * 添加了 layernorm 的执行逻辑\n* 图调度\n    * OpSocket 的定义现在将移入 ppq.IR.opdef，并且 socket 将作为算子上的一个基础属性\n    * 默认调度算法修改为 conservative，conservative 调度逻辑将使用 socket 进行重构\n* 模式匹配\n    * 子图模式匹配从贪心匹配改为暴力匹配，现在可以匹配任意子图模式，但当候选结果数量过大时，PPQ将返回错误。\n    * 新增 Layernorm 的图融合策略\n* 优化过程\n    * 移除了 QuantizeRefine Pass，该部分逻辑将由 Quantizer 完成，相关参数从 QuantizationSetting 中移除。\n    * 重写了 PassiveParameterQuantizePass，现在将允许分别对 Clip, Pad, Bias 进行控制，将允许控制 Clip, Pad 量化的导出可见性\n    * 重写了 ChannelSplitPass\n* 量化器\n     * 在创建初始量化信息时，将使用 Opsocket 的内容为算子初始化正确的 TQC，在过去这一职责是由 QuantizeRefine Pass 负责的\n     * 为算子初始化默认TQC时，在 create_default_quant_config 中现在将传入算子本身，而非 op.meta\n     * 添加了 FP8 量化器，添加了 FP8 量化的相关逻辑，添加了关于 FP8 的两套 calibration 逻辑\n* QAT\n     * 新建了QAT文件夹\n* 其他内容\n    * 修正了 ppq.api.__init__，避免 import 时引入不必要的内容\n    * 将 TargetPlatform.SHAPE_OR_INDEX 重命名为 TargetPlatform.SOI\n    * 移除了 ppq.IR.baseGraph 的函数 delete_operation, delete_variable\n    * 修正了一个图复制时可能出现的错误\n    * 修改了系统最大迭代次数的限制，这是由于对于一些较大规模的计算图，PPQ的调度器执行时会超出python默认的最大迭代深度。\n    * 修正了 hardsigmoid forward 的错误\n    * 允许导出大于2G的onnx文件\n    * 移除了 Reshape forward 逻辑中有关于 batchsize 的判断逻辑\n    * 暂时移除了创建 opsocket 时的一系列警告\n    * 修正了 op 和 graph 复制时 detail 属性没有成功复制的错误\n    * 修正了一个图复制时可能发生的错误\n    * 修正了 tengine exporter 的导出错误\n    * 修正了 tensorrt exporter 的导出错误\n    * 修正了子图切分时可能发生的一个错误\n    * 修正了 Quantizer 创建 TQC 的一个平台错误\n    * 修正了 ConvTranspose2D 量化轴的错误\n    * 添加了 bert, yolo6, fp8 的样例文件","2023-03-13T13:16:50",{"id":167,"version":168,"summary_zh":169,"released_at":170},117805,"v0.6.5","* 分析器\n  * 新增了统计分析方法 statistical_analyse\n  * 支持对多输出算子进行分析\n  * 重新设计了余弦相似度的计算方式\n* API\n  * 新增了 load_native_graph 接口\n  * 新增了 register_network_quantizer 接口\n  * 新增了 register_network_parser 接口\n  * 新增了 register_network_exporter 接口\n  * 允许以 setting=None 的形式调用 API 函数\n* 执行器\n  * 支持 1D 和 3D 卷积\n  * 支持 1D 和 3D 池化\n  * 支持 1D 和 3D 反卷积\n  * 支持 LSTM 和 GRU\n  * 支持 sin 和 cos\n  * 支持 abs\n  * 支持 sum\n  * 支持 Erf、Elu 和 Reciprocal\n  * 重写了 resize、slice 和 scatterND 的实现\n  * 移除了注册算子的限制条件，现在可以覆盖 PPQ 内置的算子实现\n  * 修复了 Conv、Pooling、ConvTranspose 和 Pad 中的 padding 问题，适配 ONNX 的 1D、2D 和 3D padding，并将以更高性能运行\n* 调度器\n  * 新增了 purseus 和 allin 两种调度器\n  * 引入了新的数据类型抽象 opsocket，该抽象将在下一版本中移至 ppq.IR 模块\n  * 默认子图切分方法更改为 purseus\n  * 增加了调度报警信息\n* 观察器\n  * 新增了保序量化方法 OrderPreserving，该方法将应用于分类网络，以提升分类性能\n  * 实现了 MSE 的非对称版本，并添加了 C++ 版本的 MSE 计算逻辑\n* 图\n  * 支持 1D 和 3D 卷积及反卷积与 BN 的融合\n  * Variable 类新增 shape 属性，可直接修改 shape 来设置动态形状\n  * 图匹配引擎允许以 ep_expr = None 的方式进行模式匹配\n  * 支持图的复制操作\n* 优化器\n  * 重写了 LSQ 算法，性能大幅提升；Advanced optimization 与 LSQ 算法合并，现称为 CuLSQ\n  * Brecq 算法已被移至 legacy 模块，不推荐使用\n  * 重写了 layerSplit 和 BiasCorrection 算法，性能有所提升\n  * 重写了 Layerwise Equalization 算法，现支持 1D、2D 和 3D 卷积及反卷积，并支持包含激活函数的操作\n  * 修复了 average pooling 算子对齐错误\n  * 修复了 bias 和 pad 量化的相关问题\n  * 移除了 RuntimePerlayerCalibrationPass，相关参数已不再生效\n  * 移除了 ConstantBakingPass，相关参数已不再生效\n  * 移除了 InplaceQuantizationSettingPass，相关参数已不再生效\n  * 移除了 fuse_conv_add 配置选项，相关优化流程已被移至 legacy 文件，需手动调用\n* 文档\n  * 新增了常见优化流程文档\n  * 新增了 YOLO 量化相关示例\n  * 新增了入门教程示例代码\n* CUDA\n  * 重写了量化核心函数，性能显著提升\n  * 重写了量化梯度传播函数，性能显著提升\n  * 现在编译开始时会自动解除编译锁\n* 核心模块\n  * 为 TensorQuantizationConfig 新增了 Visibilty 属性，用于控制 TQC 导出时的可见性\n  * 修改了一些属性名称，并将其写入 ppq.common.py\n  * TensorQuantizationConfig 中的 __is_revisable 方法现已成为公有方法，并更名为 is_revisable\n* 其他\n  * 导入 TensorRT 的警告信息现仅在导出时才会显示\n  * 新增了对 SNPE 1.6.3 的支持\n  * 新增了对 Tengine 的支持\n  * 修复了一系列已知问题","2022-09-02T06:38:51",{"id":172,"version":173,"summary_zh":174,"released_at":175},117806,"v0.6.4","重做了计算图操作接口，添加了函数 remove_operation, remove_variable, insert_op_on_var, insert_op_between_var, create_link_with_var, create_link_with_op, truncate_on_var。\n\n重做了 onnxruntime 导出逻辑，重做了 onnx oos 导出逻辑。\n\n更新了 lsq 算法，加速了执行。\n\n更新了 ssd 算法，加速了执行。\n\n更新了 core.ffi，现在如果编译失败会给出错误报告。\n\n添加了几个api函数，包括 manop 与 quantize_native_model，它们允许你手动控制优化逻辑。\n\n添加了第二类模式匹配功能。\n\n添加了 gru 分解的相关逻辑。\n\n添加了图 api 的测试类。\n\n添加了QNN导出逻辑。\n\n添加了 swish, mish 激活函数的融合逻辑。\n\n添加了 FPGAQuantizer。\n\n添加 mod 算子支持，添加 softplus 算子支持，添加 gru 算子支持。\n\n移除了 misc 文件夹，其中代码已经不再使用。\n\n修复了 pad 顺序不对的问题。\n\n修复了创建变量时变量可能重名的问题。\n\n修复了 path_matching 中中间结果没有被复制，从而导致结果可能出现错误的问题。\n\n修复了 matex gemm split pass 的一些不引人注意的 bug。\n\n修复了 delete_isolated 函数的一些错误。\n\n修复了一个 PPL_DSP_TI_INT8 被错误命名为 PPL_DSP_TI_IN8 的问题。","2022-06-01T07:26:12",{"id":177,"version":178,"summary_zh":179,"released_at":180},117807,"v0.6.3","* 修复多个 bug。\n* 优化 LSQ、SSD、DFQ 算法。\n* 增加一些导出器。","2022-03-30T12:43:50",{"id":182,"version":183,"summary_zh":184,"released_at":185},117808,"v0.6.2","* 现在网络训练时，缩放和偏移参数始终为 dtype=fp32 的 torch.Tensor。\n* PPQ 在量化网络时会显示网络快照。\n* 新增 BRECQ 和 LSQ 算法。\n* CUDA 核函数经过优化，并向 PPQ 中引入了更多 CUDA 核函数。\n* 添加了一个用于导出 ONNX 量化模型的导出器。\n* 自 PPQ 0.6.2 版本起，此处引入了测试用例。\n","2022-03-18T05:45:11"]