[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-zjhellofss--KuiperInfer":3,"tool-zjhellofss--KuiperInfer":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 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[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},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":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"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":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":94,"env_os":95,"env_gpu":96,"env_ram":97,"env_deps":98,"category_tags":109,"github_topics":110,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":128,"updated_at":129,"faqs":130,"releases":171},5258,"zjhellofss\u002FKuiperInfer","KuiperInfer","校招、秋招、春招、实习好项目！带你从零实现一个高性能的深度学习推理库，支持大模型 llama2 、Unet、Yolov5、Resnet等模型的推理。Implement a high-performance deep learning inference library step by step","KuiperInfer 是一个开源的深度学习推理框架教学项目，旨在带领开发者从零开始亲手构建一个高性能的推理引擎。它解决了初学者难以深入理解深度学习框架底层原理、缺乏大型 C++ 工程实战经验的痛点，帮助用户打破对黑盒框架的依赖。\n\n该项目非常适合计算机专业学生、求职开发者以及对系统底层感兴趣的算法工程师。通过跟随课程，用户不仅能掌握现代 C++（C++20）的高标准写法、CMake 项目管理及单元测试技巧，还能深入理解计算图设计、算子实现与注册机制等核心概念。\n\nKuiperInfer 的技术亮点在于其“双后端”架构，同时支持 CPU 和 CUDA 加速，并涵盖了从基础卷积、池化算子到大模型（如 Llama 3、Qwen 2.5）推理的完整链路。项目还引入了 Int8 量化等优化手段，支持 ResNet、YOLOv5、UNet 及最新大模型的推理演示。这不仅是一个可运行的推理库，更是一份详尽的工程实践指南，能显著提升用户在校招面试中的竞争力及技术深度。","# News：新课发布，《动手自制大模型推理框架》，全手写cuda算子，课程框架支持LLama2和3.x以及Qwen2.5模型\n\nHi，各位朋友们好！我是 KuiperInfer 的作者。KuiperInfer 作为一门开源课程，迄今已经在 GitHub 上已斩获 2.5k star。\n如今在原课程的基础上，**我们全新推出了《动手自制大模型推理框架》， 新课程支持Llama系列大模型（包括最新的LLama3.2）以及Qwen2.5系列大模型，同时支持 Cuda 加速和 Int8 量化**，自推出以来便广受好评。\n\n## 《动手自制大模型推理框架》课程目录：\nhttps:\u002F\u002Ftvle9mq8jh.feishu.cn\u002Fdocx\u002FAGb0dpqwfohQ9oxx4QycqbCjnJh\n## 《动手自制大模型推理框架》课程优势\n\n1. 采用最新的C++ 20标准去写代码，统一、美观的代码风格，良好的错误处理；\n2. 优秀的项目管理形式，我们采用CMake+Git的方式管理项目，接轨大厂；\n3. 授人以渔，教大家怎么设计一个现代C++项目，同时教大家怎么用单元测试和Benchmark去测试验证自己的项目； \n4. CPU算子和CUDA双后端实现，对时新的大模型（LLama3和Qwen系列）有非常好的支持。\n\n\n**如果你对大模型推理感兴趣，想要深入了解并掌握相关技术，想在校招、秋招面试当中脱颖而出，那么这门《动手自制大模型推理框架》课程绝对不容错过。快来加入我们，一起开启学习之旅吧！\n    感兴趣的同学欢迎扫一扫课程下方二维码或者添加微信 lyrry1997 参加课程**\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_bff7599210fa.jpg\"  \u002F>\n\n\n\n## 《动手自制大模型推理框架》课程项目运行效果\n> LLama1.1b fp32模型，视频无加速，运行平台为Nvidia 3060 laptop，速度为60.34 token\u002Fs\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_636e469a8a36.gif)\n\n\n\n# KuiperInfer (自制深度学习推理框架)\n![](https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002Fkuiperinfer\u002Factions\u002Fworkflows\u002Fcmake.yml\u002Fbadge.svg)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_c8544b85a9a1.jpg)\n\n带领你亲手打造一个深度学习推理框架。关注我的[B站空间](https:\u002F\u002Fspace.bilibili.com\u002F1822828582)，获取最新视频更新。\n\n跟随本项目，从零开始自制深度学习推理框架，你将有以下收获：\n1. 学习一个深度学习框架背后的知识，掌握现代C++项目的写法，调试技巧和工程经验；\n2. 如何设计、编写一个计算图；\n3. 实现常见的算子，卷积算子、池化算子、全连接算子等；\n4. 在3的基础上，学会常见的优化手段加速算子的执行；\n5. 最后你将获得一个属于自己的推理框架，可以推理resnet, unet, yolov5, mobilenet等模型，对面试和知识进阶大有裨益。\n\n**视频课程链接：**[https:\u002F\u002Fspace.bilibili.com\u002F1822828582](https:\u002F\u002Fspace.bilibili.com\u002F1822828582)\n\n\n## 课程大纲\n\n第二次课程是第一次课程的重置版，内容更加充实和完善，第一次课程大纲见下方章节。\n\n| 课程节数                                              | 进度  | 课程链接                                    |\n| ----------------------------------------------------- |-----| ------------------------------------------- |\n| **第一讲** 项目预览和环境配置                         | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV118411f7yM |\n| **第二讲** 张量(Tensor)的设计与实现                   | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1hN411k7q7 |\n| **第三讲** 计算图的定义                               | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1vc411M7Yp |\n| **第四讲** 构建计算图关系和执行顺序                   | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV19s4y1r7az |\n| **第五讲** KuiperInfer中的算⼦和注册⼯⼚                 | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1gx4y1o7pj |\n| **第六讲** 卷积和池化算子的实现                       | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1hx4y197dS |\n| **第七讲** 表达式层中词法分析和语法分析以及算子的实现 | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1j8411o7ao |\n| **第八讲** 自制推理框架支持Resnet网络的推理           | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1o84y1o7ni |\n| **第九讲** 自制推理框架支持YoloV5网络的推理           | 完成  |    https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Qk4y1A7XL                                        |\n\n## Demo效果\n\n### Unet语义分割\n\n> 🥰 KuiperInfer当前已支持Unet网络的推理，采用[carvana的预训练权重](https:\u002F\u002Fgithub.com\u002Fmilesial\u002FPytorch-UNet)\n\n![](https:\u002F\u002Fimgur.com\u002FFDXALEa.jpg)\n![](https:\u002F\u002Fimgur.com\u002FhbbZeoT.jpg)\n\n推理复现可参考文末的 **运行 Kuiper 的 demo**\n\n### Yolov5目标检测\n\n> Demo直接使用yolov5-s的预训练权重(coco数据集)，使用KuiperInfer推理\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_d29617d3770f.jpg)\n\n\n\n## 第一次课程大纲\n\n我在b站上开了一门教学课程，目前是课程的前13次课程。课程大纲如下，主页是: https:\u002F\u002Fspace.bilibili.com\u002F1822828582 , 欢迎大家关注支持。**进学习群的方式如上图的二维码。**\n\n| 课程节数   | 主要内容                                                   | 进度 | 课程链接                                     |\n| ---------- | ---------------------------------------------------------- | ---- | -------------------------------------------- |\n| 第一次课   | 整体框架解读和开发环境配置                                 | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1HV4y1A7H8\u002F |\n| 第二次课   | 张量Tensor类的解析和输入数据的内存排布                     | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Ed4y1v7Gb\u002F |\n| 第三次课   | 从CSV文件中初始化张量Tensor一个实例                        | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Pg411J7V5\u002F |\n| 第四次课   | 手写第一个算子Relu并完成算子注册工厂类                     | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1bG4y1J7sQ\u002F |\n| 第五次课   | Im2col的原理和卷积算子的实现                               | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1F841137Ct  |\n| 第六次课   | 照猫画虎，完成MaxPooling算子                               | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1m3411S7yy  |\n| 第七次课   | 图结构(PNNX)讲解和计算图初步                               | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1VW4y1V7vp  |\n| 第八次课   | 读取PNNX并构建自己的计算图                                 | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1HY4y1Z7S3  |\n| 第九次课   | 卷积算子的实现和im2col加速计算的原理                       | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1F841137Ct  |\n| 第十次课   | 再探Tensor类，构建计算图的图关系以及对算子的输入输出预分配 | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1M54y1K7AG  |\n| 第十一次课 | 算子的执行流程                                             | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1wY411C7Kv  |\n| 第十二次课 | 用我们自制的推理框架完成ResNet网络的推理和图片的分类       | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1jD4y1M772  |\n| 第十三次课 | 用自制的推理框架支持Yolov5模型的推理                       | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1xs4y1J7t2  |\n\n\n## 项目贡献\n\n### 贡献者列表\n\n感谢以下同学对Kuiperinfer的付出\n- [zjhellofss](https:\u002F\u002Fgithub.com\u002Fzjhellofss)\n- [liuxubit](https:\u002F\u002Fgithub.com\u002Fliuxubit)\n- [Azusachan](https:\u002F\u002Fgithub.com\u002FAzusachan)\n- [wfs2010](https:\u002F\u002Fgithub.com\u002Fwfs2010)\n- [mlmz](https:\u002F\u002Fgithub.com\u002Fminleminzui)\n- [Tigerrr07](https:\u002F\u002Fgithub.com\u002FTigerrr07)\n- [zyt1024](https:\u002F\u002Fgithub.com\u002Fzyt1024)\n- [zpye](https:\u002F\u002Fgithub.com\u002Fzpye)\n- [cmcamdy](https:\u002F\u002Fgithub.com\u002Fcmcamdy)\n- [superCB](https:\u002F\u002Fgithub.com\u002FSuperCB)\n- [sanbuphy](https:\u002F\u002Fgithub.com\u002Fsanbuphy)\n- [TypeFloat](https:\u002F\u002Fgithub.com\u002FTypeFloat)\n- [Jasmine-up](https:\u002F\u002Fgithub.com\u002FJasmine-up)\n- [PerrySkywalker](https:\u002F\u002Fgithub.com\u002FPerrySkywalker)\n- [delve-wang](https:\u002F\u002Fgithub.com\u002Fdelve-wang)\n- [z-learner](https:\u002F\u002Fgithub.com\u002Fz-learner)\n- [Meihongtao](https:\u002F\u002Fgithub.com\u002FMeihongtao)\n\n### 如何参与项目贡献？\n1. 提交代码增加新功能或修改bug；\n2. 提出特别有用的建议；\n3. 完善文档或增加单元测试。\n\n### 本项目和视频课程的关系\n- 本项目相当于课程的上游或者预研项目\n\n- 这里的每一个功能都有可能成为视频课程中的知识点，无论是我开发的还是其他同学完善的。\n\n## 使用的技术和开发环境\n* 开发语言：C++ 17\n* 数学库：Armadillo + OpenBlas(或者更快的Intel MKL)\n* 加速库：OpenMP\n* 单元测试：Google Test\n* 性能测试：Google Benchmark\n\n## 安装过程(使用Docker)\n1. docker pull registry.cn-hangzhou.aliyuncs.com\u002Fhellofss\u002Fkuiperinfer:latest\n2. sudo docker run -t -i registry.cn-hangzhou.aliyuncs.com\u002Fhellofss\u002Fkuiperinfer:latest \u002Fbin\u002Fbash\n3. cd code\n4. git clone --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git\n5. cd KuiperInfer\n6. **git checkout -b 你的新分支 study_version_0.02 (如果想抄本项目的代码，请使用这一步切换到study tag)**\n7. mkdir build\n8. cd build\n9. cmake -DCMAKE_BUILD_TYPE=Release -DDEVELOPMENT=OFF ..\n10. make -j$(nproc)\n\n**Tips:**\n\n1. **如果需要对KuiperInfer进行开发**，请使用 git clone  --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git 同时下载子文件夹tmp, 并在cmake文件中设置`$DEVELOPMENT`或者指定`-DDEVELOPMENT=ON`\n2. **如果国内网速卡顿**，请使用 git clone https:\u002F\u002Fgitee.com\u002Ffssssss\u002FKuiperInferGitee.git\n3. **如果想获得更快地运行体验**，请在本机重新编译openblas或apt install intel-mkl\n\n## 安装过程(构建Docker镜像)\n1. docker build -t kuiperinfer:latest .\n2. docker run --name kuiperinfer -it kuiperinfer:latest \u002Fbin\u002Fbash\n3. cd \u002Fapp\n4. 余下步骤参考上述安装过程的步骤4-10\n\n##  安装过程(不使用docker)\n1. git clone --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git\n2. **git checkout -b 你的新分支 study_version_0.01 (如果想抄本项目的代码，请使用这一步切换到study tag)**\n3. 安装必要环境(openblas推荐编译安装，可以获得更快的运行速度，或者使用apt install intel-mkl替代openblas)\n```shell\n apt install cmake, libopenblas-dev, liblapack-dev, libarpack-dev, libsuperlu-dev\n```\n4. 下载并编译armadillo https:\u002F\u002Farma.sourceforge.net\u002Fdownload.html\n5. 编译安装glog\\google test\\google benchmark\n6. 余下步骤和上述一致\n\n**Tips:**\n1. google benchmark编译过程中，如果遇到关于gtest缺失的报错，可以在google benchmark的cmake中关闭gtest选项\n\n## 运行 Kuiper 的 demo\n\n### 运行Unet的推理\n\n请在编译后复制 `tmp\u002Funet\u002Fdemo` 文件夹下的 test.png 图片绝对地址或相对地址，\n随后在 `build\u002Fdemos` 中按下列格式运行推理程序\n\n```bash\n.\u002Funet_test test.png unet_demo.pnnx.param unet_demo.pnnx.bin\n```\n\n其中 pnnx 模型的下载地址：https:\u002F\u002Fcowtransfer.com\u002Fs\u002F09c7f337bab443\n\n若推理成功，你将会在文件夹内看到原图的分割后结果 unet_output.jpg .\n\n### 运行Yolov5的推理\n\n请在demos文件夹下的yolo_test.cpp文件夹中以下代码进行修改\n\n```cpp\nconst std::string& image_path = \"imgs\u002Fcar.jpg\";\nconst std::string& param_path = \"tmp\u002Fyolo\u002Fdemo\u002Fyolov5s_batch8.pnnx.param\";\nconst std::string& bin_path = \"tmp\u002Fyolo\u002Fdemo\u002Fyolov5s_batch8.pnnx.bin\";\n```\n\n- `image_path`指定图像目录，`param_path`为模型的参数文件，`bin_path`为模型的权重文件，请替换为自己本地的路径。\n\n- 模型定义和权重下载地址如下： https:\u002F\u002Fcowtransfer.com\u002Fs\u002F9bc43e0905cb40\n\n- 编译完成后，在项目目录调用 `.\u002Fbuild\u002Fdemos\u002Fyolo_test`\n\n\n## 已经支持的算子\n**总体理念：逐步优化已经有的算子；有需要的时候再对未实现的算子进行开发**\n\n- Convolution\n- AdaptivePooling\n- MaxPooling\n- Expression(抽象语法树)\n- Flatten, View(维度展平和变形)\n- Sigmoid\n- HardSigmoid\n- HardSwish\n- ReLU\n- Linear(矩阵相乘)\n- Softmax\n- BatchNorm\n- Upsample\n- SiLU\n- Concat\n- ConvTranspose\n\n## 目录\n**source**是源码目录\n\n1. **data\u002F** 是张量类Tensor的实现和Tensor初始化方法\n2. **layer\u002F** 是算子的实现\n3. **parser\u002F** 是Pnnx表达式的解析类\n4. **runtime\u002F** 是计算图结构，解析和运行时相关\n\n**test**是单元测试目录，基本做到public方法单元测试权覆盖\n\n**bench**是google benchmark, 包含对MobilenetV3, Resnet18和yolov5s的性能测试。\n\n## 性能测试\n### 测试设备\n\n15 核心的AMD EPYC 7543(霄龙) 32-Core Processor (Docker 容器，宿主机共有32核心)\n\n### 编译环境\n\ngcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0\n\n### 性能结果\n耗时通过连续五次运行,并以求平均的方式计算\n\n| **input size**         | **模型名称**     | **计算设备**              | **耗时**         |\n| ---------------------- | ---------------- | ------------------------- | ---------------- |\n| 224×224 batch = 8      | MobileNetV3Small | CPU(armadillo + openblas) | 6.76ms \u002F image   |\n| 224×224 batch = 8      | ResNet18         | CPU(armadillo + openblas) | 23.53ms \u002F image  |\n| 224×224 batch =16      | ResNet18         | CPU(armadillo + openblas) | 13.52ms \u002F image  |\n| 640×640 batch = 8      | Yolov5nano       | CPU(armadillo + openblas) | 78.37ms \u002F image  |\n| **640×640** batch = 8  | **Yolov5s**      | CPU(armadillo + openblas) | 177.54ms \u002F image |\n| **640×640** batch = 16 | **Yolov5s**      | CPU(armadillo + openblas) | 134.57ms \u002F image |\n\n## 致谢\n\n推理框架NCNN，已经在借鉴的代码中保留了NCNN的BSD协议 https:\u002F\u002Fgithub.com\u002FTencent\u002Fncnn\n\n优秀的数学库Openblas: https:\u002F\u002Fgithub.com\u002Fxianyi\u002FOpenBLAS\n\n优秀的数学库Armadillo: https:\u002F\u002Farma.sourceforge.net\u002Fdocs.html\n\n给予我灵感的Caffe框架: https:\u002F\u002Fgithub.com\u002FBVLC\u002Fcaffe\n\nfmath框架：https:\u002F\u002Fgithub.com\u002Fherumi\u002Ffmath\u002F\n","# 新闻：新课发布，《动手自制大模型推理框架》，全手写CUDA算子，课程框架支持LLaMA2和3.x以及通义千问2.5模型\n\n嗨，各位朋友们好！我是 KuiperInfer 的作者。KuiperInfer 作为一门开源课程，迄今已经在 GitHub 上已斩获 2.5k star。\n如今在原课程的基础上，**我们全新推出了《动手自制大模型推理框架》， 新课程支持Llama系列大模型（包括最新的LLaMA3.2）以及通义千问2.5系列大模型，同时支持 CUDA 加速和 Int8 量化**，自推出以来便广受好评。\n\n## 《动手自制大模型推理框架》课程目录：\nhttps:\u002F\u002Ftvle9mq8jh.feishu.cn\u002Fdocx\u002FAGb0dpqwfohQ9oxx4QycqbCjnJh\n## 《动手自制大模型推理框架》课程优势\n\n1. 采用最新的C++ 20标准去写代码，统一、美观的代码风格，良好的错误处理；\n2. 优秀的项目管理形式，我们采用CMake+Git的方式管理项目，接轨大厂；\n3. 授人以渔，教大家怎么设计一个现代C++项目，同时教大家怎么用单元测试和Benchmark去测试验证自己的项目； \n4. CPU算子和CUDA双后端实现，对时新的大模型（LLaMA3和通义千问系列）有非常好的支持。\n\n\n**如果你对大模型推理感兴趣，想要深入了解并掌握相关技术，想在校招、秋招面试当中脱颖而出，那么这门《动手自制大模型推理框架》课程绝对不容错过。快来加入我们，一起开启学习之旅吧！\n    感兴趣的同学欢迎扫一扫课程下方二维码或者添加微信 lyrry1997 参加课程**\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_bff7599210fa.jpg\"  \u002F>\n\n\n\n## 《动手自制大模型推理框架》课程项目运行效果\n> LLaMA1.1b fp32模型，视频无加速，运行平台为Nvidia 3060 laptop，速度为60.34 token\u002Fs\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_636e469a8a36.gif)\n\n\n\n# KuiperInfer (自制深度学习推理框架)\n![](https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002Fkuiperinfer\u002Factions\u002Fworkflows\u002Fcmake.yml\u002Fbadge.svg)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_c8544b85a9a1.jpg)\n\n带领你亲手打造一个深度学习推理框架。关注我的[B站空间](https:\u002F\u002Fspace.bilibili.com\u002F1822828582)，获取最新视频更新。\n\n跟随本项目，从零开始自制深度学习推理框架，你将有以下收获：\n1. 学习一个深度学习框架背后的知识，掌握现代C++项目的写法，调试技巧和工程经验；\n2. 如何设计、编写一个计算图；\n3. 实现常见的算子，卷积算子、池化算子、全连接算子等；\n4. 在3的基础上，学会常见的优化手段加速算子的执行；\n5. 最后你将获得一个属于自己的推理框架，可以推理resnet, unet, yolov5, mobilenet等模型，对面试和知识进阶大有裨益。\n\n**视频课程链接：**[https:\u002F\u002Fspace.bilibili.com\u002F1822828582](https:\u002F\u002Fspace.bilibili.com\u002F1822828582)\n\n\n## 课程大纲\n\n第二次课程是第一次课程的重置版，内容更加充实和完善，第一次课程大纲见下方章节。\n\n| 课程节数                                              | 进度  | 课程链接                                    |\n| ----------------------------------------------------- |-----| ------------------------------------------- |\n| **第一讲** 项目预览和环境配置                         | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV118411f7yM |\n| **第二讲** 张量(Tensor)的设计与实现                   | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1hN411k7q7 |\n| **第三讲** 计算图的定义                               | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1vc411M7Yp |\n| **第四讲** 构建计算图关系和执行顺序                   | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV19s4y1r7az |\n| **第五讲** KuiperInfer中的算子和注册工厂                 | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1gx4y1o7pj |\n| **第六讲** 卷积和池化算子的实现                       | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1hx4y197dS |\n| **第七讲** 表达式层中词法分析和语法分析以及算子的实现 | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1j8411o7ao |\n| **第八讲** 自制推理框架支持Resnet网络的推理           | 完成  | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1o84y1o7ni |\n| **第九讲** 自制推理框架支持YoloV5网络的推理           | 完成  |    https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Qk4y1A7XL                                        |\n\n## Demo效果\n\n### Unet语义分割\n\n> 🥰 KuiperInfer当前已支持Unet网络的推理，采用[carvana的预训练权重](https:\u002F\u002Fgithub.com\u002Fmilesial\u002FPytorch-UNet)\n\n![](https:\u002F\u002Fimgur.com\u002FFDXALEa.jpg)\n![](https:\u002F\u002Fimgur.com\u002FhbbZeoT.jpg)\n\n推理复现可参考文末的 **运行 Kuiper 的 demo**\n\n### Yolov5目标检测\n\n> Demo直接使用yolov5-s的预训练权重(coco数据集)，使用KuiperInfer推理\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_readme_d29617d3770f.jpg)\n\n\n\n## 第一次课程大纲\n\n我在b站上开了一门教学课程，目前是课程的前13次课程。课程大纲如下，主页是: https:\u002F\u002Fspace.bilibili.com\u002F1822828582 , 欢迎大家关注支持。**进学习群的方式如上图的二维码。**\n\n| 课程节数   | 主要内容                                                   | 进度 | 课程链接                                     |\n| ---------- | ---------------------------------------------------------- | ---- | -------------------------------------------- |\n| 第一次课   | 整体框架解读和开发环境配置                                 | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1HV4y1A7H8\u002F |\n| 第二次课   | 张量Tensor类的解析和输入数据的内存排布                     | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Ed4y1v7Gb\u002F |\n| 第三次课   | 从CSV文件中初始化张量Tensor一个实例                        | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Pg411J7V5\u002F |\n| 第四次课   | 手写第一个算子Relu并完成算子注册工厂类                     | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1bG4y1J7sQ\u002F |\n| 第五次课   | Im2col的原理和卷积算子的实现                               | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1F841137Ct  |\n| 第六次课   | 照猫画虎，完成MaxPooling算子                               | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1m3411S7yy  |\n| 第七次课   | 图结构(PNNX)讲解和计算图初步                               | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1VW4y1V7vp  |\n| 第八次课   | 读取PNNX并构建自己的计算图                                 | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1HY4y1Z7S3  |\n| 第九次课   | 卷积算子的实现和im2col加速计算的原理                       | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1F841137Ct  |\n| 第十次课   | 再探Tensor类，构建计算图的图关系以及对算子的输入输出预分配 | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1M54y1K7AG  |\n| 第十一次课 | 算子的执行流程                                             | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1wY411C7Kv  |\n| 第十二次课 | 用我们自制的推理框架完成ResNet网络的推理和图片的分类       | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1jD4y1M772  |\n| 第十三次课 | 用自制的推理框架支持Yolov5模型的推理                       | 完成 | https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1xs4y1J7t2  |\n\n\n## 项目贡献\n\n### 贡献者列表\n\n感谢以下同学对KuiperInfer的付出\n- [zjhellofss](https:\u002F\u002Fgithub.com\u002Fzjhellofss)\n- [liuxubit](https:\u002F\u002Fgithub.com\u002Fliuxubit)\n- [Azusachan](https:\u002F\u002Fgithub.com\u002FAzusachan)\n- [wfs2010](https:\u002F\u002Fgithub.com\u002Fwfs2010)\n- [mlmz](https:\u002F\u002Fgithub.com\u002Fminleminzui)\n- [Tigerrr07](https:\u002F\u002Fgithub.com\u002FTigerrr07)\n- [zyt1024](https:\u002F\u002Fgithub.com\u002Fzyt1024)\n- [zpye](https:\u002F\u002Fgithub.com\u002Fzpye)\n- [cmcamdy](https:\u002F\u002Fgithub.com\u002Fcmcamdy)\n- [superCB](https:\u002F\u002Fgithub.com\u002FSuperCB)\n- [sanbuphy](https:\u002F\u002Fgithub.com\u002Fsanbuphy)\n- [TypeFloat](https:\u002F\u002Fgithub.com\u002FTypeFloat)\n- [Jasmine-up](https:\u002F\u002Fgithub.com\u002FJasmine-up)\n- [PerrySkywalker](https:\u002F\u002Fgithub.com\u002FPerrySkywalker)\n- [delve-wang](https:\u002F\u002Fgithub.com\u002Fdelve-wang)\n- [z-learner](https:\u002F\u002Fgithub.com\u002Fz-learner)\n- [Meihongtao](https:\u002F\u002Fgithub.com\u002FMeihongtao)\n\n### 如何参与项目贡献？\n1. 提交代码增加新功能或修改bug；\n2. 提出特别有用的建议；\n3. 完善文档或增加单元测试。\n\n### 本项目和视频课程的关系\n- 本项目相当于课程的上游或者预研项目\n\n- 这里的每一个功能都有可能成为视频课程中的知识点，无论是我开发的还是其他同学完善的。\n\n## 使用的技术和开发环境\n* 开发语言：C++ 17\n* 数学库：Armadillo + OpenBlas(或者更快的Intel MKL)\n* 加速库：OpenMP\n* 单元测试：Google Test\n* 性能测试：Google Benchmark\n\n## 安装过程(使用Docker)\n1. docker pull registry.cn-hangzhou.aliyuncs.com\u002Fhellofss\u002Fkuiperinfer:latest\n2. sudo docker run -t -i registry.cn-hangzhou.aliyuncs.com\u002Fhellofss\u002Fkuiperinfer:latest \u002Fbin\u002Fbash\n3. cd code\n4. git clone --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git\n5. cd KuiperInfer\n6. **git checkout -b 你的新分支 study_version_0.02 (如果想抄本项目的代码，请使用这一步切换到study tag)**\n7. mkdir build\n8. cd build\n9. cmake -DCMAKE_BUILD_TYPE=Release -DDEVELOPMENT=OFF ..\n10. make -j$(nproc)\n\n**Tips:**\n\n1. **如果需要对KuiperInfer进行开发**，请使用 git clone  --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git 同时下载子文件夹tmp，并在cmake文件中设置`$DEVELOPMENT`或者指定`-DDEVELOPMENT=ON`\n2. **如果国内网速卡顿**，请使用 git clone https:\u002F\u002Fgitee.com\u002Ffssssss\u002FKuiperInferGitee.git\n3. **如果想获得更快地运行体验**，请在本机重新编译openblas或apt install intel-mkl\n\n## 安装过程(构建Docker镜像)\n1. docker build -t kuiperinfer:latest .\n2. docker run --name kuiperinfer -it kuiperinfer:latest \u002Fbin\u002Fbash\n3. cd \u002Fapp\n4. 余下步骤参考上述安装过程的步骤4-10\n\n## 安装过程（不使用 Docker）\n1. 使用 `git clone --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git` 克隆仓库。\n2. **`git checkout -b 你的新分支 study_version_0.01`（若想直接使用本项目代码，请切换到 `study` 标签）**\n3. 安装必要的环境（推荐编译安装 OpenBLAS，以获得更快的运行速度；也可使用 `apt install intel-mkl` 替代 OpenBLAS）：\n   ```shell\n   apt install cmake, libopenblas-dev, liblapack-dev, libarpack-dev, libsuperlu-dev\n   ```\n4. 下载并编译 Armadillo：[https:\u002F\u002Farma.sourceforge.net\u002Fdownload.html](https:\u002F\u002Farma.sourceforge.net\u002Fdownload.html)。\n5. 编译并安装 glog、Google Test 和 Google Benchmark。\n6. 剩余步骤与上述一致。\n\n**提示：**\n1. 在编译 Google Benchmark 时，若遇到缺少 gtest 的错误，可在 Google Benchmark 的 CMake 配置中关闭 gtest 选项。\n\n## 运行 Kuiper 的 Demo\n\n### 运行 UNet 的推理\n\n编译完成后，请复制 `tmp\u002Funet\u002Fdemo` 文件夹下的 `test.png` 图片的绝对路径或相对路径，随后在 `build\u002Fdemos` 中按以下格式运行推理程序：\n\n```bash\n.\u002Funet_test test.png unet_demo.pnnx.param unet_demo.pnnx.bin\n```\n\n其中 PNNX 模型的下载地址为：[https:\u002F\u002Fcowtransfer.com\u002Fs\u002F09c7f337bab443](https:\u002F\u002Fcowtransfer.com\u002Fs\u002F09c7f337bab443)。若推理成功，您将在当前目录下看到分割后的结果图 `unet_output.jpg`。\n\n### 运行 YOLOv5 的推理\n\n请在 `demos` 文件夹下的 `yolo_test.cpp` 文件中修改以下代码：\n\n```cpp\nconst std::string& image_path = \"imgs\u002Fcar.jpg\";\nconst std::string& param_path = \"tmp\u002Fyolo\u002Fdemo\u002Fyolov5s_batch8.pnnx.param\";\nconst std::string& bin_path = \"tmp\u002Fyolo\u002Fdemo\u002Fyolov5s_batch8.pnnx.bin\";\n```\n\n- `image_path` 指定图像路径，`param_path` 为模型的参数文件，`bin_path` 为模型的权重文件，请替换为您本地的实际路径。\n- 模型定义及权重下载地址如下：[https:\u002F\u002Fcowtransfer.com\u002Fs\u002F9bc43e0905cb40](https:\u002F\u002Fcowtransfer.com\u002Fs\u002F9bc43e0905cb40)。\n- 编译完成后，在项目根目录下执行 `.\u002Fbuild\u002Fdemos\u002Fyolo_test`。\n\n## 已支持的算子\n**总体理念：逐步优化现有算子；必要时再开发未实现的算子。**\n\n- 卷积 (Convolution)\n- 自适应池化 (AdaptivePooling)\n- 最大池化 (MaxPooling)\n- 表达式（抽象语法树）(Expression)\n- 展平与变形 (Flatten, View)\n- Sigmoid\n- HardSigmoid\n- HardSwish\n- ReLU\n- 线性变换（矩阵乘法）(Linear)\n- Softmax\n- 批量归一化 (BatchNorm)\n- 上采样 (Upsample)\n- SiLU\n- 拼接 (Concat)\n- 转置卷积 (ConvTranspose)\n\n## 目录结构\n**source** 是源码目录：\n1. **data\u002F** 包含张量类 Tensor 的实现及初始化方法。\n2. **layer\u002F** 包含算子的实现。\n3. **parser\u002F** 包含 PNNX 表达式的解析类。\n4. **runtime\u002F** 包含计算图结构、解析及运行时相关代码。\n\n**test** 是单元测试目录，基本覆盖了所有公共方法的单元测试。\n\n**bench** 是 Google Benchmark 目录，包含对 MobileNetV3、ResNet18 和 YOLOv5s 的性能测试。\n\n## 性能测试\n### 测试设备\nAMD EPYC 7543（霄龙）15 核处理器（Docker 容器，宿主机共有 32 核）。\n\n### 编译环境\ngcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0。\n\n### 性能结果\n耗时通过连续五次运行并取平均值计算。\n\n| **输入尺寸**         | **模型名称**     | **计算设备**              | **耗时**         |\n| ---------------------- | ---------------- | ------------------------- | ---------------- |\n| 224×224 batch = 8      | MobileNetV3Small | CPU（Armadillo + OpenBLAS） | 6.76ms \u002F 图像   |\n| 224×224 batch = 8      | ResNet18         | CPU（Armadillo + OpenBLAS） | 23.53ms \u002F 图像  |\n| 224×224 batch = 16     | ResNet18         | CPU（Armadillo + OpenBLAS） | 13.52ms \u002F 图像  |\n| 640×640 batch = 8      | YOLOv5nano       | CPU（Armadillo + OpenBLAS） | 78.37ms \u002F 图像  |\n| **640×640** batch = 8  | **YOLOv5s**      | CPU（Armadillo + OpenBLAS） | 177.54ms \u002F 图像 |\n| **640×640** batch = 16 | **YOLOv5s**      | CPU（Armadillo + OpenBLAS） | 134.57ms \u002F 图像 |\n\n## 致谢\n推理框架 NCNN：在借鉴的代码中保留了 NCNN 的 BSD 协议，详见 [https:\u002F\u002Fgithub.com\u002FTencent\u002Fncnn](https:\u002F\u002Fgithub.com\u002FTencent\u002Fncnn)。\n\n优秀的数学库 OpenBLAS：[https:\u002F\u002Fgithub.com\u002Fxianyi\u002FOpenBLAS](https:\u002F\u002Fgithub.com\u002Fxianyi\u002FOpenBLAS)。\n\n优秀的数学库 Armadillo：[https:\u002F\u002Farma.sourceforge.net\u002Fdocs.html](https:\u002F\u002Farma.sourceforge.net\u002Fdocs.html)。\n\n给予我灵感的 Caffe 框架：[https:\u002F\u002Fgithub.com\u002FBVLC\u002Fcaffe](https:\u002F\u002Fgithub.com\u002FBVLC\u002Fcaffe)。\n\nfmath 框架：[https:\u002F\u002Fgithub.com\u002Fherumi\u002Ffmath\u002F](https:\u002F\u002Fgithub.com\u002Fherumi\u002Ffmath\u002F)。","# KuiperInfer 快速上手指南\n\nKuiperInfer 是一个基于现代 C++ 手写的深度学习推理框架开源项目。通过本项目，你可以从零构建计算图、实现算子（如卷积、池化等），并支持 ResNet、UNet、YoloV5 等模型的推理。新版课程更支持 Llama3 和 Qwen2.5 等大模型及 CUDA 加速。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**: Linux (推荐 Ubuntu 20.04+) 或 macOS\n- **编译器**: 支持 C++17 标准的编译器 (GCC 9.4+ 或 Clang)\n- **构建工具**: CMake 3.10+\n- **硬件**: \n    - CPU: 支持 OpenMP 的多核处理器\n    - GPU (可选): NVIDIA 显卡及 CUDA Toolkit (用于新版大模型加速)\n\n### 前置依赖\n项目主要依赖以下数学库和测试框架：\n- **数学库**: Armadillo, OpenBLAS (或 Intel MKL)\n- **其他**: Google Test, Google Benchmark, glog\n- **包管理**: `apt` (Ubuntu\u002FDebian) 或 `yum` (CentOS)\n\n> **提示**：若需更快运行速度，推荐手动编译安装 OpenBLAS 或使用 `intel-mkl` 替代默认 OpenBLAS。\n\n---\n\n## 安装步骤\n\n### 方案一：使用 Docker（推荐，环境最省心）\n\n如果你希望快速体验且避免环境配置问题，推荐使用官方提供的 Docker 镜像。\n\n1. **拉取镜像**\n   ```bash\n   docker pull registry.cn-hangzhou.aliyuncs.com\u002Fhellofss\u002Fkuiperinfer:latest\n   ```\n\n2. **启动容器**\n   ```bash\n   sudo docker run -t -i registry.cn-hangzhou.aliyuncs.com\u002Fhellofss\u002Fkuiperinfer:latest \u002Fbin\u002Fbash\n   ```\n\n3. **克隆代码并编译**\n   在容器内执行以下命令：\n   ```bash\n   cd code\n   # 国内用户推荐使用 Gitee 镜像加速\n   git clone https:\u002F\u002Fgitee.com\u002Ffssssss\u002FKuiperInferGitee.git\n   cd KuiperInfer\n   \n   # 切换到学习版本分支 (如需复现课程代码)\n   git checkout -b study_version_0.02 \n   \n   mkdir build && cd build\n   cmake -DCMAKE_BUILD_TYPE=Release -DDEVELOPMENT=OFF ..\n   make -j$(nproc)\n   ```\n\n### 方案二：本地源码编译\n\n若需在本地开发或调试，请按以下步骤操作：\n\n1. **安装系统依赖**\n   ```bash\n   sudo apt install cmake libopenblas-dev liblapack-dev libarpack-dev libsuperlu-dev\n   # 可选：安装更快的数学库\n   # sudo apt install intel-mkl\n   ```\n   *注：Armadillo、Google Test\u002FBenchmark 可能需要单独下载编译，或参考项目文档进行源码安装。*\n\n2. **克隆项目**\n   ```bash\n   # 国内加速源\n   git clone https:\u002F\u002Fgitee.com\u002Ffssssss\u002FKuiperInferGitee.git\n   # 或原始源\n   # git clone --recursive https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer.git\n   \n   cd KuiperInfer\n   git checkout -b study_version_0.01\n   ```\n\n3. **编译构建**\n   ```bash\n   mkdir build && cd build\n   cmake -DCMAKE_BUILD_TYPE=Release -DDEVELOPMENT=OFF ..\n   make -j$(nproc)\n   ```\n   *若遇到 Google Benchmark 编译报错缺少 gtest，可在其 CMake 配置中关闭 gtest 选项。*\n\n---\n\n## 基本使用\n\n编译完成后，可运行内置 Demo 验证框架功能。\n\n### 1. 运行 UNet 语义分割 Demo\n\n**准备工作**：\n- 下载 UNet 模型文件 (.param 和 .bin)：[点击下载](https:\u002F\u002Fcowtransfer.com\u002Fs\u002F09c7f337bab443)\n- 准备一张测试图片 `test.png`，将其放入 `tmp\u002Funet\u002Fdemo` 目录或记录其绝对路径。\n\n**执行推理**：\n进入 `build\u002Fdemos` 目录，运行以下命令：\n```bash\n.\u002Funet_test test.png unet_demo.pnnx.param unet_demo.pnnx.bin\n```\n*参数说明：`图片路径` `模型结构文件` `模型权重文件`*\n\n**结果**：推理成功后，当前目录下将生成 `unet_output.jpg`，即分割后的结果图。\n\n### 2. 运行 YoloV5 目标检测 Demo\n\n**准备工作**：\n- 下载 YoloV5 模型文件：[点击下载](https:\u002F\u002Fcowtransfer.com\u002Fs\u002F9bc43e0905cb40)\n- 修改源码配置：编辑 `demos\u002Fyolo_test.cpp`，更新以下路径为你的本地实际路径：\n  ```cpp\n  const std::string& image_path = \"imgs\u002Fcar.jpg\"; \u002F\u002F 替换为图片路径\n  const std::string& param_path = \"tmp\u002Fyolo\u002Fdemo\u002Fyolov5s_batch8.pnnx.param\"; \u002F\u002F 替换为 param 路径\n  const std::string& bin_path = \"tmp\u002Fyolo\u002Fdemo\u002Fyolov5s_batch8.pnnx.bin\";     \u002F\u002F 替换为 bin 路径\n  ```\n- 重新编译项目以应用更改。\n\n**执行推理**：\n在项目根目录或 build 目录下运行：\n```bash\n.\u002Fbuild\u002Fdemos\u002Fyolo_test\n```\n\n**结果**：程序将输出带有检测框的图片结果。\n\n---\n\n> **进阶提示**：\n> - 若需开发新功能，请在 CMake 时设置 `-DDEVELOPMENT=ON` 并确保 clone 时带上 `--recursive` 参数以获取子模块。\n> - 项目支持算子包括 Convolution, ReLU, Softmax, BatchNorm 等，详细列表可查看源码 `layer\u002F` 目录。","计算机专业应届生小李正在备战大厂算法岗校招，急需一个能深入理解深度学习底层原理并展示工程能力的实战项目。\n\n### 没有 KuiperInfer 时\n- **理论脱节实践**：虽然熟悉 PyTorch 调用 API，但对算子底层实现、内存管理及计算图调度机制一无所知，面试时被问及“卷积底层如何优化”便哑口无言。\n- **项目同质化严重**：简历上满是调包完成的分类或检测任务，缺乏从零构建系统的经历，难以在激烈的秋招竞争中脱颖而出。\n- **高性能开发盲区**：完全不懂 CUDA 编程与 C++ 高性能优化，面对大模型推理加速、Int8 量化等前沿技术需求束手无策。\n- **工程规范缺失**：代码风格随意，缺乏 CMake 项目管理、单元测试及 Benchmark 验证经验，不符合大厂对工程素养的要求。\n\n### 使用 KuiperInfer 后\n- **掌握核心原理**：通过手写 Tensor 设计、计算图构建及卷积\u002F池化算子，彻底吃透了深度学习框架的底层逻辑，面试中对答如流。\n- **打造差异化简历**：成功从零实现支持 ResNet、Yolov5 乃至 Llama2\u002F3 等大模型的推理库，以全手写 CUDA 算子和量化技术成为面试中的亮点。\n- **具备加速落地能力**：学会了 CPU\u002FGPU 双后端开发与性能调优，能够独立解决大模型推理中的速度瓶颈问题，技术栈直接接轨工业界。\n- **习得现代工程范式**：遵循 C++20 标准，掌握了 CMake+Git 协作流程及完善的测试验证体系，展现出成熟工程师的代码素养。\n\nKuiperInfer 不仅帮助学习者填补了从理论到底层实现的鸿沟，更通过高含金量的实战项目成为了斩获大厂 Offer 的关键敲门砖。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzjhellofss_KuiperInfer_d29617d3.jpg","zjhellofss","傅莘莘","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzjhellofss_ecfda300.jpg","Email:\r\nhellofss@foxmail.com","YZ","浙江杭州",null,"hellofss@foxmail.com","https:\u002F\u002Fgithub.com\u002Fzjhellofss",[82,86],{"name":83,"color":84,"percentage":85},"C++","#f34b7d",99.4,{"name":87,"color":88,"percentage":89},"CMake","#DA3434",0.6,3392,359,"2026-04-07T07:17:46","MIT",4,"Linux","非必需。项目主要基于 CPU (OpenBLAS\u002FMKL) 运行；新课程版本支持 CUDA 加速，但未指定具体显卡型号、显存大小或 CUDA 版本要求（示例中使用了 Nvidia 3060 Laptop）。","未说明",{"notes":99,"python":100,"dependencies":101},"该项目是一个用 C++ 手写的深度学习推理框架课程代码。基础版本依赖 CPU 后端（Armadillo + OpenBLAS\u002FMKL）；新推出的课程版本支持 Llama3.x 和 Qwen2.5 等大模型，并增加了 CUDA 加速和 Int8 量化支持。官方推荐使用 Docker 部署环境，若在本地编译需手动安装 Armadillo、OpenBLAS\u002FMKL 及测试库。模型文件格式为 PNNX。","无 (项目主要使用 C++)",[102,87,103,104,105,106,107,108],"C++ 17\u002F20","Armadillo","OpenBLAS (或 Intel MKL)","OpenMP","Google Test","Google Benchmark","glog",[14],[111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],"inference","inference-engine","deep-learning","deep-neural-networks","convolution","relu","sigmoid","graph-algorithms","maxpooling","caffe","pnnx","pytorch","ncnn","diy","resnet","yolo","yolov5","2026-03-27T02:49:30.150509","2026-04-08T05:20:39.989609",[131,136,141,146,151,156,161,166],{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},23827,"如何获取支持 GPU 的教程或进行 CUDA 后端开发？","项目已有相应的课程支持。如需了解详情或讨论 CUDA 后端接口与类的设计方案，可以添加微信 lyrry1997 联系作者。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F24",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},23828,"导入 PNNX 格式模型文件时读取 bin 文件报错或大小返回 -1 怎么办？","这通常是因为使用了最新版本的 PNNX 转换工具，其生成的 bin 文件格式与旧版本不兼容。解决方案是使用 PNNX 的 20230217 版本重新转换模型，即可成功读取。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F55",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},23829,"为什么使用提供的 MobileNet 模型测试分类正确率很低？","代码仓库 temp 目录下提供的 mobile__224.pnnx 相关文件是随机权重的模型，并非预训练模型，因此分类结果不正确。如需使用预训练模型，请按以下步骤导出：\n1. 先将 PyTorch 模型转换为 TorchScript:\n```python\nimport torch\nif __name__ == '__main__':\n    model = torch.hub.load('pytorch\u002Fvision:v0.10.0', 'mobilenet_v2', pretrained=True)\n    model.eval()\n    x = torch.rand(1, 3, 224, 224)\n    mod = torch.jit.trace(model, x)\n    mod.save(\"mobilenet_v2.pt\")\n```\n2. 再参考 PNNX 官方文档（第 2,3,4 小节）将 TorchScript 转换为 pnnx.bin 和 pnnx.param 格式。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F50",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},23830,"代码中 `expf()` 函数未包含 `\u003Cmath.h>` 却能编译通过，原因是什么？","这是隐式包含导致的。项目依赖的 Armadillo 线性代数库的头文件中已经包含了 `\u003Ccmath>`，因此无需在源文件中再次显式包含即可使用 `expf` 等数学函数。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F25",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},23831,"Tensor 逐元素相乘函数中使用了取模运算符 `%`，这是否是错误？","这不是错误。在该项目中，底层使用了 Armadillo 库，在 Armadillo 的矩阵\u002F张量运算定义中，`%` 运算符被重载用于表示逐个元素相乘（Element-wise Multiplication），而非取模。具体可参考 Armadillo 官方文档。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F56",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},23832,"非 Docker 环境下如何正确安装 OpenBLAS 依赖？","在 Linux 环境下（如 Ubuntu\u002FDebian），可以通过 apt-get 安装 OpenBLAS 开发库。命令如下：\n```bash\napt-get install libopenblas-dev\n```\n此外，也可以尝试使用 vcpkg 包管理器来安装所有依赖。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F36",{"id":162,"question_zh":163,"answer_zh":164,"source_url":165},23833,"Windows 上的 GitHub Actions CI 构建经常失败或耗时过长如何解决？","构建失败通常是因为 OpenMP 的 SIMD 特性需要特定的编译器标志 `\u002Fllvm:experimental`。构建耗时过长则是因为缓存未保存 vcpkg 下载的包，导致每次 CI 都要重新编译所有依赖。优化缓存配置和添加正确的编译器标志可解决此问题。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F18",{"id":167,"question_zh":168,"answer_zh":169,"source_url":170},23834,"YoloDetect 层实现中关于 stages 循环逻辑和临时 Tensor 创建的疑问？","1. 关于创建 Tensor 未保存返回值：该处代码确实冗余，可以直接去掉。\n2. 关于 stages 循环逻辑：您的理解是正确的。外层循环遍历的是特征图尺寸（如 20x20, 40x40, 80x80），内层循环遍历的是 Anchor 的长宽比。原代码逻辑存在混淆（默认 YOLOv5 下两者数量均为 3），建议重构逻辑使代码更准确。","https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fissues\u002F27",[172,177,182,187,192],{"id":173,"version":174,"summary_zh":175,"released_at":176},145407,"ads","**全新推出自制大模型推理框架课程**  \n![](https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fblob\u002Fmain\u002Fimgs\u002Fme.jpg)  \n1. 仅需一个月，手把手教你使用C++和CUDA打造高性能大模型推理框架！授课老师来自一线芯片企业，具备多年C++项目设计与开发经验，其此前推出的免费课程曾荣登C++项目榜单前列，GitHub全站排名前120名，并在今年秋招季备受青睐；  \n2. 基于免费课程的超高人气，我们顺势推出了进阶版——大模型推理框架课程。该课程覆盖CUDA和CPU双后端，全面支持int8量化及LLaMA系列模型，助你技术实力更上一层楼。  \n3. 课程将带你从零开始，利用CUDA实现大模型推理所需的每一个算子！通过精心设计的图文课件和详尽的视频讲解，我们将复杂机制化繁为简，让你轻松掌握这一关键技术。机会不容错过，立即加入，让你的简历在众多求职者中脱颖而出！  \n\n**项目优势摘录**  \n1. 采用先进的项目管理方式，我们使用CMake+Git进行项目管理，接轨大型企业的开发流程；  \n2. 注重“授人以渔”，不仅教你如何设计现代C++项目，还传授如何运用单元测试和基准测试来验证项目的正确性与性能；  \n3. 全面采用最新的C++20标准编写代码，学习前沿技术，拒绝陈旧知识；  \n4. 同时提供CPU算子和CUDA算子实现，让你对比两种设备上的算子编写方式，并深入理解CUDA在速度上的显著优势。  \n\n**欢迎扫描下方二维码或添加微信 lyrry1997 咨询课程**  \n\n\n\n## 变更内容  \n* @PerrySkywalker 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F54 中更新了 tensor.cpp 文件；  \n* 最近邻上采样算子的内层循环中，无需判断目标位置的列数和行数是否小于目标图像的宽和高，此问题已由 @delve-wang 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F58 中修复；  \n* 修复 AdaptiveAveragePoolingLayer::check 中的拼写错误，以防止 forward_average_pooling_out1x1 测试中出现核心转储问题，此修改由 @z-learner 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F59 中完成。  \n\n## 新贡献者  \n* @PerrySkywalker 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F54 中完成了首次贡献；  \n* @delve-wang 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F58 中完成了首次贡献；  \n* @z-learner 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F59 中完成了首次贡献。  \n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fcompare\u002Fv0.1.1...v0.1.2 #64  \n\n#公告","2024-09-18T15:15:32",{"id":178,"version":179,"summary_zh":180,"released_at":181},145408,"vdemo","**全新推出自制大模型推理框架课程**  \n课程链接：[动手自制大模型推理框架开课了](https:\u002F\u002Fl0kzvikuq0w.feishu.cn\u002Fdocx\u002FKUewdlrI0oJfYmxGkercRlGAnTc)  \n1. 仅需一个月，手把手教你使用C++和CUDA打造高性能大模型推理框架！授课老师来自一线芯片企业，拥有多年C++项目设计与开发经验。其此前推出的免费课程曾荣登C++项目榜单前列，在GitHub全站排名前120名，今年秋招季更是备受青睐；  \n2. 基于免费课程的超高人气，我们顺势推出了进阶版——大模型推理框架课程。该课程覆盖CUDA和CPU双后端，全面支持int8量化及LLama系列模型，助你技术实力更上一层楼。  \n3. 本课程将带你从零开始，利用CUDA实现大模型推理所需的每一个算子！通过精心设计的图文课件和详尽的视频讲解，我们将复杂的技术原理化繁为简，让你轻松掌握这一关键技术。机会不容错过，立即加入，让你的简历在众多求职者中脱颖而出！  \n\n**项目优势摘录**  \n1. 采用先进的项目管理方式，我们使用CMake+Git进行项目管理，接轨大型企业的开发流程；  \n2. 注重“授人以渔”，不仅教你如何设计现代C++项目，还传授如何运用单元测试和Benchmark对项目进行验证；  \n3. 全面采用最新的C++ 20标准编写代码，学习前沿技术，拒绝陈旧知识；  \n4. 同时提供CPU算子和CUDA算子实现，让你对比两种设备上的算子编写方式，并深入理解CUDA在性能上的显著优势。  \n\n**欢迎扫描下方二维码或添加微信 lyrry1997 咨询课程**  \n\n![](https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fblob\u002Fmain\u002Fimgs\u002Fme.jpg)\n\n## 变更内容  \n* @PerrySkywalker 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F54 中更新了 tensor.cpp 文件；  \n* 最近邻上采样算子中，内层循环无需判断目标位置的列数与行数是否小于目标图像的宽和高，此优化由 @delve-wang 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F58 中完成；  \n* 修复 AdaptiveAveragePoolingLayer::check 中的拼写错误，以防止 forward_average_pooling_out1x1 测试中出现核心转储问题，该修复由 @z-learner 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F59 中完成。  \n\n## 新贡献者  \n* @PerrySkywalker 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F54 中完成了首次贡献；  \n* @delve-wang 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F58 中完成了首次贡献；  \n* @z-learner 在 https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fpull\u002F59 中完成了首次贡献。  \n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fzjhellofss\u002FKuiperInfer\u002Fcompare\u002Fv0.1.1...v0.1.2 #64  \n\n#公告","2024-09-05T17:06:48",{"id":183,"version":184,"summary_zh":185,"released_at":186},145409,"v0.1","1. 支持反卷积算子  \n2. 支持U-Net网络的推理  \n3. 增加张量的泛型支持  \n4. 修改卷积、表达式等算子的实现逻辑  \n5. 头文件全部添加注释  \n\n![](https:\u002F\u002Fimgur.com\u002FFDXALEa.jpg)  \n![](https:\u002F\u002Fimgur.com\u002FhbbZeoT.jpg)","2023-09-25T13:00:54",{"id":188,"version":189,"summary_zh":190,"released_at":191},145410,"v0.03","## 版本\n0.03\n## 运行时间统计（五次运行平均）\n> 测试框架为Google Benchmark，不含前后处理，运行时间受当时机器负载影响。\n\n|  模型种类   | 版本  | batch size   |输入大小| 运行时间 (ms per img)  |\n|  ----  | ----  | ----  | ----  | ----  |\n| MobileNet | V3Small |8|224 x 224| 6.6 ms \u002F image|\n|ResNet | ResNet18 |8|224 x 224| 20.91 ms \u002F image|\n|ResNet | ResNet18 |16|224 x 224| 14.62 ms \u002F image|\n|Yolov5 | V5Nano |4|320 x 320| 22.89 ms \u002F image|\n|Yolov5 | V5Small |8|640 x 640| 159.22 ms \u002F image|\n|Yolov5 | V5Small |16|640 x 640| 108.79 ms \u002F image|\n## 硬件\n> 硬件租赁于AutoDL，所有测试在容器内进行\n* CPU: 22 vCPU AMD EPYC 7T83 64核处理器\n* 内存: 90GB\n* 硬盘: 系统盘:30 GB\n\n## 软件\n* KuiperInfer: version 0.03\n* OpenBlas: 最新版本\n* Armadillo: version 12.4\n* OS: Ubuntu 22.04","2023-07-21T12:36:31",{"id":193,"version":194,"summary_zh":195,"released_at":196},145411,"study_version_0.02","大家学习完B站上的视频课程后，可以阅读下这个tag下的项目代码，学习完整的Kuiperinfer项目。","2023-04-17T12:34:59"]