# action_nn_c **Repository Path**: duzc2/action_nn_c ## Basic Information - **Project Name**: action_nn_c - **Description**: 用于执行具体任务的神经网络。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-17 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # action_nn_c 基于 C11 的神经网络库与代码生成框架。 ## 核心特点 - **代码生成**:通过 profiler 从网络拓扑描述自动生成 C11 推理/训练代码 - **12+ 网络类型**:MLP、CNN、RNN、LSTM、xLSTM、minLSTM、Transformer、GNN、Seq2Seq、MobileNetV2、U-Net、Mamba-2 - **多后端**:标量 CPU、INT8 量化推理、OpenCL GPU 加速 - **WASM 支持**:通过 Emscripten 编译到 WebAssembly,在浏览器中运行 - **可视化编辑器**:基于 Rete.js 的拖拽式网络搭建,可导出 C 代码 - **共享组件**:RMS Norm、Skip Connection (LAuReL-RW)、Dropout/DropPath、Multi-Head Attention/GQA、SwiGLU、RoPE、Min GRU - **训练功能**:Adam/Muon 优化器、知识蒸馏、数据增强、权重保存/加载 ## 解决什么问题 ### 边缘/嵌入式设备上的轻量推理 纯 C 实现,无 GC,无运行时依赖。可通过 CMake 选项关闭不需要的网络类型,最小化二进制体积。支持 INT8 量化进一步降低模型大小和计算量。 ### 快速原型到生产部署 三阶段流水线:生成 → 训练 → 推理。从网络定义直接生成可编译的 C11 代码,无需运行时解析模型文件。 ### 浏览器端 AI 通过 Emscripten 编译到 WASM,配合可视化编辑器在浏览器中搭建网络、导出代码并运行推理。 ## 快速开始 ### 环境要求 - CMake 3.20+ - C11 编译器(GCC、Clang、MSVC) ### 一键构建 ```bash cmake --preset release cmake --build build/release --config Release ``` ### 运行 MNIST 示例 ```bash cd demo/mnist run_demo.bat # Windows # 或手动执行三步: # 1. 运行 generate 生成代码 # 2. 运行 train 训练模型 # 3. 运行 infer 进行推理 ``` ## 文档导航 | 文档 | 说明 | |------|------| | [架构总览](docs/concepts/architecture.md) | 整体架构与设计哲学 | | [网络定义系统](docs/concepts/network_def.md) | NN_NetworkDef 结构与 API | | [Profiler 流水线](docs/concepts/profiler_pipeline.md) | 代码生成机制 | | [后端系统](docs/concepts/backend_system.md) | VTable 分发与多后端 | | [从零开始](docs/guide/getting_started.md) | 环境搭建与第一个 Demo | | [创建自定义网络](docs/guide/create_network.md) | 编写 generate_main.c | | [网络类型详解](docs/guide/network_types.md) | 12 种网络类型参考 | | [训练指南](docs/guide/training.md) | 优化器、蒸馏、数据增强 | | [推理部署](docs/guide/inference.md) | 推理 API 与 INT8 量化 | | [GPU 加速](docs/guide/gpu_backend.md) | OpenCL 后端配置 | | [WASM 部署](docs/guide/wasm_web.md) | 浏览器端运行 | | [可视化编辑器](docs/guide/web_editor.md) | Web 编辑器使用 | | [源码结构](docs/deep/code_structure.md) | 模块组织与依赖 | | [Profiler 内部](docs/deep/profiler_internals.md) | 代码生成器实现细节 | | [网络实现模式](docs/deep/network_impl.md) | 网络类型实现规范 | | [共享组件](docs/deep/nn_components.md) | RMS Norm、Attention 等 | | [测试体系](docs/deep/testing.md) | 测试结构与运行 | | [Profiler API 参考](docs/reference/api_profiler.md) | profiler_generate_v2 签名 | | [网络定义 API 参考](docs/reference/api_network_def.md) | 工厂函数与结构体 | | [运行时 API 参考](docs/reference/api_runtime.md) | 推理/训练运行时 | | [CMake 选项](docs/reference/cmake_options.md) | 构建变量与预设 | | [WASM API](docs/reference/wasm_api.md) | JavaScript 接口 | ## 项目结构一览 ``` action_c/ ├── CMakeLists.txt # 顶层构建文件(C11、Threads) ├── CMakePresets.json # 预设:debug/release/hardened/sanitized ├── LICENSE # Apache 2.0 ├── src/ │ ├── CMakeLists.txt # 网络类型开关与子目录 │ ├── profiler/ # 网络定义、验证、哈希、代码生成 │ ├── nn/ # 网络类型实现、注册表、共享组件 │ │ ├── types/ # mlp/cnn/rnn/lstm/xlstm/min_lstm/ │ │ │ # transformer/gnn/seq2seq/mobilenet/ │ │ │ # unet/mamba2 │ │ ├── norm/ # RMS Normalization │ │ ├── dropout/ # Dropout + DropPath │ │ ├── residual/ # Skip Connection (LAuReL-RW) │ │ ├── embedding/ # Token Embedding + RoPE │ │ └── attention/ # Scaled Dot-Product Attention │ ├── infer/ # 推理运行时适配层 │ ├── train/ # 训练运行时、Muon 优化器、增强、蒸馏 │ ├── gpu/ # OpenCL + CLBlast 后端 │ └── utils/ # Arena 内存池、日志、安全数学 ├── demo/ # 15 个 Demo(mnist、snake、transformer 等) ├── tests/ # 单元测试、数值梯度验证、集成测试 ├── wasm/ # WASM 构建配置与 JS 绑定 ├── web_editor/ # Rete.js 可视化编辑器 ├── 3rdparty/CLBlast/ # OpenCL BLAS 库 └── cmake/ # CMake 模块(编译器标志、版本管理) ``` ## 许可证 Apache License 2.0。详见 [LICENSE](LICENSE)。