第一课 深度学习推理框架基础

什么是推理框架

深度学习推理框架用于==完成训练阶段的神经网络模型文件==进行加载,并根据模型文件中网络结构权重参数对输入图像(数据)进行预测。

环境准备

Windows 下的环境准备

  1. 拉取Docker镜像:
1
docker pull registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale
  1. 创建本地文件夹,并将课程代码克隆到该文件夹中。
1
git clone https://github.com/zjhellofss/kuiperdatawhale.git
  1. 创建并运行一个镜像的容器。
1
docker run -it -p 7860:22 registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale /bin/bash
  1. 尝试使用ssh命令连接容器,这里的用户名固定是me, 登录密码是1.
1
ssh -p 7860 me@127.0.0.1

Linux下环境准备

  1. 拉取docker镜像:

    1
    sudo docker pull registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale
  2. 创建本地文件夹,并克隆课程代码

    1
    2
    3
    mkdir -p ~/code/kuiperdatawhale
    cd ~/code/kuiperdatawhale
    git clone https://github.com/zjhellofss/kuiperdatawhale.git
  3. 创建一个镜像的容器并运行。

    1
    2
    sudo docker run -it registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale 
    /bin/bash
  4. 在容器中输入ifconfig查看ip地址。

  5. 尝试使用ssh命令连接容器,这里的用户名固定是me,ip地址为4中ifconfig输出的inet,登录密码设置为1

    1
    ssh me@inet

关于KuiperInfer的技术全景概述

KuiperInfer可以分为以下几个部分:

  1. Operator:深度学习计算图中的计算节点。包括以下几个部分:
    1. 存储输入与输出张量。
    2. 计算节点的类型与名称
    3. 参数信息(卷积核的步长,大小)
    4. 权重信息(weight,bias)
  2. Graph:多个Operator串联成的有向无环图,规定各个Operato的执行流程与顺序。
  3. Layer:Operator中运行的具体执行者
  4. Tensor:用于存储==多维数据==的数据结构,方便数据在计算节点之间传递,同时该结构也封装矩阵乘、点积等与矩阵相关的基本操作。

img

使用VScode连接容器

在 VSCode 中,连接容器是一件很简单的事情,首先你需要安装 Docker 插件,点击左侧的扩展栏(或是ctrl+shift+X),键入 Docker,随后选择安装:

img

安装后,你将会看到左侧出现一个相同长相的小鲸鱼,左键点击它你将会看到我们启动的所有容器:

img

在成功进入容器之前,我们还需要再安装几个小插件,我们接着搜索 Dev container 以及 Remote Development 插件,都安装第一个即可。

  1. 接下来,你需要右键之前启动的容器 registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale,选择 附加 Visual Studio Code 进入 Docker 环境,若你没有看到这个选项,请再次确保前面的三个插件已经都完全安装。
    在进入 Docker 环境后,我们还需要手动再次 clone 课程代码,你可以执行 ctrl + J 调出控制台终端,在终端中输入:
1
2
cd /home 
git clone https://github.com/zjhellofss/kuiperdatawhale.git

然后在左上角选择文件 —— 打开文件夹 —— /home/kuiperdatawhale —— 确定即可进入课程主界面。

  1. 进入 Docker 环境后的 VSCode 拥有独立的插件环境,所以我们需要重新安装有关插件:
    你需要在此时的主界面找到扩展,且根据安装 Docker 插件的步骤自行搜索完成以下几款插件的安装:
    CMake 相关插件的安装(共三种)

![第一课 深度学习推理框架基础

什么是推理框架

深度学习推理框架用于==完成训练阶段的神经网络模型文件==进行加载,并根据模型文件中网络结构权重参数对输入图像(数据)进行预测。

环境准备

Windows 下的环境准备

  1. 拉取Docker镜像:
1
docker pull registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale
  1. 创建本地文件夹,并将课程代码克隆到该文件夹中。
1
git clone https://github.com/zjhellofss/kuiperdatawhale.git
  1. 创建并运行一个镜像的容器。
1
docker run -it -p 7860:22 registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale /bin/bash
  1. 尝试使用ssh命令连接容器,这里的用户名固定是me, 登录密码是1.
1
ssh -p 7860 me@127.0.0.1

Linux下环境准备

  1. 拉取docker镜像:

    1
    sudo docker pull registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale
  2. 创建本地文件夹,并克隆课程代码

    1
    2
    3
    mkdir -p ~/code/kuiperdatawhale
    cd ~/code/kuiperdatawhale
    git clone https://github.com/zjhellofss/kuiperdatawhale.git
  3. 创建一个镜像的容器并运行。

    1
    2
    sudo docker run -it registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale 
    /bin/bash
  4. 在容器中输入ifconfig查看ip地址。

  5. 尝试使用ssh命令连接容器,这里的用户名固定是me,ip地址为4中ifconfig输出的inet,登录密码设置为1

    1
    ssh me@inet

关于KuiperInfer的技术全景概述

KuiperInfer可以分为以下几个部分:

  1. Operator:深度学习计算图中的计算节点。包括以下几个部分:
    1. 存储输入与输出张量。
    2. 计算节点的类型与名称
    3. 参数信息(卷积核的步长,大小)
    4. 权重信息(weight,bias)
  2. Graph:多个Operator串联成的有向无环图,规定各个Operato的执行流程与顺序。
  3. Layer:Operator中运行的具体执行者
  4. Tensor:用于存储==多维数据==的数据结构,方便数据在计算节点之间传递,同时该结构也封装矩阵乘、点积等与矩阵相关的基本操作。

img

使用VScode连接容器

在 VSCode 中,连接容器是一件很简单的事情,首先你需要安装 Docker 插件,点击左侧的扩展栏(或是ctrl+shift+X),键入 Docker,随后选择安装:

img

安装后,你将会看到左侧出现一个相同长相的小鲸鱼,左键点击它你将会看到我们启动的所有容器:

img

在成功进入容器之前,我们还需要再安装几个小插件,我们接着搜索 Dev container 以及 Remote Development 插件,都安装第一个即可。

  1. 接下来,你需要右键之前启动的容器 registry.cn-hangzhou.aliyuncs.com/hellofss/kuiperinfer:datawhale,选择 附加 Visual Studio Code 进入 Docker 环境,若你没有看到这个选项,请再次确保前面的三个插件已经都完全安装。
    在进入 Docker 环境后,我们还需要手动再次 clone 课程代码,你可以执行 ctrl + J 调出控制台终端,在终端中输入:
1
2
cd /home 
git clone https://github.com/zjhellofss/kuiperdatawhale.git

然后在左上角选择文件 —— 打开文件夹 —— /home/kuiperdatawhale —— 确定即可进入课程主界面。

  1. 进入 Docker 环境后的 VSCode 拥有独立的插件环境,所以我们需要重新安装有关插件:
    你需要在此时的主界面找到扩展,且根据安装 Docker 插件的步骤自行搜索完成以下几款插件的安装:
    CMake 相关插件的安装(共三种)

img

C++ 相关插件的安装(共一种)

img

  1. 在安装成功后,我们就可以开始编译调试了,你将会在下方看到如下界面:

img

首先,你需要点击工具图表,选择 GCC 9.4.0 x86_64-linux-gnu 版本的编译工具,确保编译工具一致。
接下来让我们尝试编译运行主程序,只需要在 ▶ 键右侧选择对应的编译目标(比如图中我选择了 kuiper_datawhale_course1),再点击▶ 按钮 即可开始编译运行。

img

如果配置成功,程序会出现如下的运行结果,出现Failed这是因为本节课作业需要完成一定的代码,若作业都正确完成,Failed标签就会在运行结果中消失。

1
2
3
4
5
6
7
8
9
10
11
[==========] Running 7 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 7 tests from test_arma
[ RUN ] test_arma.Axby
/tmp/tmp.dvfnZylz2q/course1/test/axby.cpp:32: Failure
Expected equality of these values:
approx_equal(y, answer, "absdiff", 1e-5f)
Which is: false
true
[ FAILED ] test_arma.Axby (0 ms)
[ RUN ] test_arma.e_power_minus

除了编译程序,调试程序也是很重要的一环,在这里你可以试试看点击 ▶ 键旁边的小虫子键,然后观察会发生什么现象,也可以自己尝试打断点看看程序的执行流是否会停留在预期位置,甚至在调试控制台输入变量看看会出现什么结果,这里的探索就交给你。另外,如果你想了解更多有关 VSCode 的使用方法以及调试说明,请参考资料

](https://pic4.zhimg.com/v2-5cf9a46adc0f7bf34020db00d0d9bd03_1440w.jpg)

C++ 相关插件的安装(共一种)

img

  1. 在安装成功后,我们就可以开始编译调试了,你将会在下方看到如下界面:

img

首先,你需要点击工具图表,选择 GCC 9.4.0 x86_64-linux-gnu 版本的编译工具,确保编译工具一致。
接下来让我们尝试编译运行主程序,只需要在 ▶ 键右侧选择对应的编译目标(比如图中我选择了 kuiper_datawhale_course1),再点击▶ 按钮 即可开始编译运行。

img

如果配置成功,程序会出现如下的运行结果,出现Failed这是因为本节课作业需要完成一定的代码,若作业都正确完成,Failed标签就会在运行结果中消失。

1
2
3
4
5
6
7
8
9
10
11
[==========] Running 7 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 7 tests from test_arma
[ RUN ] test_arma.Axby
/tmp/tmp.dvfnZylz2q/course1/test/axby.cpp:32: Failure
Expected equality of these values:
approx_equal(y, answer, "absdiff", 1e-5f)
Which is: false
true
[ FAILED ] test_arma.Axby (0 ms)
[ RUN ] test_arma.e_power_minus

除了编译程序,调试程序也是很重要的一环,在这里你可以试试看点击 ▶ 键旁边的小虫子键,然后观察会发生什么现象,也可以自己尝试打断点看看程序的执行流是否会停留在预期位置,甚至在调试控制台输入变量看看会出现什么结果,这里的探索就交给你。另外,如果你想了解更多有关 VSCode 的使用方法以及调试说明,请参考资料

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

0%