/nju_aics_exp

南京大学智能计算系统课程实验

Primary LanguageJupyter Notebook

AI计算系统课程实验

目录

序号 实验 CPU Ascend Python C++
基于三层感知机实现手写数字识别
搭建VGG16神经网络实现图像分类
基于ACL搭建VGG16实现图片分类应用
基于MindSpore框架实现VGG17训练和验证
基于CANN构建VGG17
TBE算子开发与集成
基于MindSpore的量化推理实验
全流程垃圾分类应用

注:所有实验均配有学生版和教师版指导书,notebook在每个实验的teacher文件夹下

一 基于三层感知机实现手写数字识别

本实验的目的是掌握神经网络的设计原理,掌握神经网络的训练和推理方法。

实验内容如下:

  1. python语言实现全连接算子、激活函数算子的正向及反向传播实现。

  2. 构建三层感知机网络。

  3. 对手写数字数据集mnist进行训练和推理。

二 搭建VGG16神经网络实现图像分类

本实验的目的是掌握卷积神经网络的设计原理,能够独立构建卷积神经网络,深入了解卷积、池化等算子的正向传播及反向传播原理,深入了解链式求导法则。能够使用 Python 语言构建 VGG16 网络模型来对给定的输入图像进行分类并求得中间过程梯度。

实验内容如下:

  1. python语言实现卷积算子、最大池化算子的正向及反向传播实现。
  2. 构建三层感知机网络。
  3. 对花卉数据集的部分图片进行推理得到分类结果。
  4. 根据指定标签进行反向传播求得中间过程梯度。

三 基于ACL搭建VGG16实现图片分类应用

本实验的目的掌握使用AscendCL(Ascend Computing Language)实现模型应用的开发。将以训练好的 VGG16 网络模型(.onnx模型)转换为Davinci架构专用的模型(.om模型),使 VGG16 网络推理过程可以高效的运行在Ascend硬件上。并对指定图片进行推理输出指定结果,搭建一个实时的图片分类应用。

实验内容如下:

  1. 使用atc工具将.onnx模型转为.om模型。

  2. 使用python语言或c++语言调用acl接口实现资源初始化、资源申请、数据加载、模型加载、模型推理、模型卸载、资源释放、去初始化。

  3. 基于Ascend310推理芯片,调用.om模型对花卉数据集的部分图片进行推理得到分类结果。

四 基于MindSpore框架实现VGG17训练和验证

本实验的目的是熟悉和使用ModelArts平台和MindSpore深度学习框架,熟悉MindSpore常用算子API接口,调用MindSpore算子搭建VGG17卷积神经网络,并在花卉数据集上进行模型训练和验证。

实验内容如下:

  1. 使用MindSpore框架搭建VGG17神经网络,包括网络初始化和传播过程的实现。
  2. 在Modelart平台上使用Ascend910训练芯片对花卉数据集进行模型训练,并保存对应权重。
  3. 对花卉数据集的测试集进行验证,校验模型鲁棒性。

五 基于CANN构建VGG17

本实验的目的是了解CANN高性能算子库,了解算子原型的定义与调用,熟悉通过元算子构建整个网络模型。

实验内容如下:

  1. 根据算子原型进行算子调用,并加载提供的预训练权重。包括数据、卷积、全连接层、激活函数等基本算子的调用与加载。
  2. 根据调用算子构建VGG17网络模型。
  3. 对VGG17网络模型进行编译graph得到离线模型。
  4. 运行测试案例校验离线模型的正确性。

六 TBE算子开发与集成

本实验的目的是基于TBE算子开发语言开发运行在AI Core上的自定义算子,并对自定义开发的算子进行性能测试。将自定义开发的算子注册至算子库,在基于算子库构建 VGG17 神经网络时能够运行自定义开发的算子。

实验内容如下:

  1. 对BatchNormalization和Softmax算子进行分析。
  2. 创建BatchNormalization和Softmax算子开发工程。
  3. 定义算子原型文件,包含算子的输入、输出、属性信息以及形状推到。
  4. 实现算子主要功能函数,调用tbe算子实现算子运算逻辑。
  5. 配置算子信息库,对算子类型,输入输出名称、数据类型和数据排布格式等信息进行配置。
  6. 对实现算子进行编译部署。
  7. 运行测试案例校验算子实现逻辑正确性。
  8. 调用开发的算子,对指定图片进行推理,并输出正确结果。

七 基于MindSpore的量化推理实验

本实验的目的是了解神经网络量化操作,能够实现 int8 量化操作,构建量化 VGG16 神经网络,并基于MindSpore框架实现量化推理,能够编写量化操作代码。

实验内容如下:

  1. 实现基本的量化模块,并搭建量化卷积模块、量化全连接层模块、量化激活函数模块、量化最大池化模块。
  2. 使用MindSpore框架构建VGG16卷积神经网络和量化VGG16卷积神经网络,实现相应的正向传播模块。
  3. 在指定的数据集上对VGG16网络进行推理,获得对应的结果。
  4. 对VGG16网络进行量化推理,获取量化中间结果。
  5. 对VGG16网络进行量化,并对量化后的卷积神经网络进行推理,且输出正确结果。

八 全流程垃圾分类应用

本实验的目的是熟悉图片分类从训练到部署的全流程应用,熟悉和使用ModelArts平台和MindSpore深度学习框架,掌握移植和优化代表性图片分类算法(SENet)的方法和流程,基于垃圾分类数据集实现图片分类算法的训练、验证、推理和部署。

实验内容如下:

  1. 对垃圾分类数据集的分析处理,获取数据相关信息。
  2. 使用MindSpore框架搭建SE-ResNet50模型。
  3. 基于Ascend910芯片进行模型训练并保存对应的模型权重。
  4. 对垃圾分类测试集进行验证,校验模型鲁棒性。
  5. 对训练好的模型进行导出为.om模型。
  6. 基于Ascend310芯片使用AscendCL实现模型应用的部署开发,并搭建一个实时的垃圾分类应用。