MyFirstPage

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

什么是推理框架

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

环境准备

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 的使用方法以及调试说明,请参考资料