【自制C++深度学习框架】前言

您所在的位置:网站首页 diy相册本怎么制作 【自制C++深度学习框架】前言

【自制C++深度学习框架】前言

2023-06-12 03:14| 来源: 网络整理| 查看: 265

KuiperCourse

KuiperInfer-logo

介绍

此GitHub项目是一个初学者的深度学习框架,使用C++编写,旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能:

计算图:使用计算图来描述深度学习模型的计算过程,利用计算图将神经网络的计算过程视为一个有向无环图。通过构建计算图,可以将深度学习模型转化为一系列的计算节点,通过节点之间的连接来表达模型的计算逻辑,使得计算过程可视化并易于维护和优化。

张量:使用Tensor类封装张量,支持float类型数据,并提供了访问张量属性和元素的接口以及一些查询、修改张量属性的函数。在计算图中,使用张量来表示各个操作的输入和输出,将神经网络中的所有数据表示为张量,以支持并行计算。

前向传播:实现了基础的前向传播。可以自定义神经网络结构,如添加层、激活函数等。

易于扩展:模块化设计使得用户可以轻松地添加新的模块或算法,以适应不同的任务需求。

通过学习和使用这个项目,用户可以深入了解计算图、张量、前向传播,使用C++构建简单的深度学习框架。 同时,本项目也为用户提供了一个基础框架,以便他们可以更全面地研究、开发和部署深度学习算法。

开发环境 系统:ubuntu 22.04开发语言:C++ 17数学库:Armadillo + OpenBlas加速库:OpenMP单元测试:Google Test性能测试:Google Benchmark其他:opencv + glog 搭建环境 使用Linux对应发行版的包管理器安装必要的组件 Fedora & Red Hat: cmake, openblas-devel, lapack-devel, arpack-devel, SuperLU-develUbuntu & Debian: cmake, libopenblas-dev, liblapack-dev, libarpack2-dev, libsuperlu-dev

Ubuntu:

sudo apt update sudo apt install cmake libopenblas-dev liblapack-dev libarpack2-dev libsuperlu-dev armadillo-11.4.2(背后调用OpenBlas)的编译安装 源码下载地址:https://arma.sourceforge.net/docs.html安装: mkdir build cd build cmake .. make -j8 sudo make install Glog日志库和GTest测试库的编译安装

源码下载地址:

https://github.com/google/googletesthttps://github.com/google/glog

先安装glog,再安装gtest,两者之间有依赖关系。

git clone https://github.com/google/glog.git cd glog mkdir build cd build cmake .. make -j8 sudo make install git clone https://github.com/google/googletest.git cd googletest mkdir build cd build cmake .. make -j8 sudo make install Google Benchmark的编译安装 git clone https://github.com/google/benchmark.git git clone https://github.com/google/googletest.git benchmark/googletest cd benchmark mkdir build && cd build cmake .. make -j2 sudo make install opencv的安装 sudo apt install libopencv-dev 本项目的编译

本项目是对b站上的课程KuiperCourse第14次课程代码的解读,详细分析请看tutorials文件夹下的文件。

git clone https://github.com/zjhellofss/KuiperCourse.git cd KuiperCourse git checkout thirteen mkdir build && cd build cmake .. make -j2

也可以使用Clion进行编译。

未来工作 移植并实现任意一个深度学习模型,需要附加 demo 程序供演示。模型需要的 PNNX 文件获取方法,请自行参考 PNNX 项目优化任意一个或多个算子,使得运行速度在本机上加快 5%以上。时间测评以 Google Benchmark 框架为准,该框架使用方法请自行查阅。预研 Kuiperinfer 上的量化方法,并根据实际情况完成一个(含)以上算子的 int8 量化实现,推荐阅读资料 https://github.com/BUG1989/caffe-int8-convert-tools支持 Kuiperinfer 的Python API,推荐使用 Pybind 实现。优化 Kuiperinfer 的运行时需要的内存空间,使得总体资源消耗减少 5% 以上。推荐从算子输出空间复用着手(不同算子执行时空不同,它们的输出空间理论上可以复用)。预研 Kuiperinfer 上的算子并行方法(并行算子调度),并根据个人实际情况写出它的对应实现。

与作者进行交流:将整个项目的代码、实验报告、预研文档(如果有的话)打包发送到邮箱 [email protected]

代码

原作者的代码:

架视频课程:https://space.bilibili.com/1822828582推理框架代码:https://github.com/zjhellofss/KuiperInfer课程代码:https://github.com/zjhellofss/KuiperCourse/

我在课程代码的基础上添加了教程:

https://gitcode.net/qq_50258800/kuiperinferhttps://github.com/kiloGrand/kuiperinfer


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3