2024-2025ICT备赛
链接
- 昇腾AI全栈介绍:
https://www.mindspore.cn/tutorial/zh-CN/r1.2/introduction.html
昇腾计算,是基于昇腾系列处理器构建的全栈AI计算基础设施及应用,包括昇腾Ascend系列芯片、Atlas系列硬件、CANN芯片使能、MindSpore AI框架、ModelArts、MindX应用使能等
- 昇腾大模型训练开发(MindSpore)
https://www.hiascend.com/edu/growth/details/6ce1cb8a880d4ab58c85ef843ded2c9d
- 华为AI开发框架MindSpore
https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiX+CBUCNXE155+Self-paced/about
- 昇腾AI赛道学习空间
https://talent.shixizhi.huawei.com/center/privateCenter.htm?schoolId=1365189427395223554&type=studyCenter_LearningTask&sxz-lang=zh_CN&mapDetail=3&mapDetailId=1717745115962806274&freedomMapClickItemId=1847185340759060482&freedomMapClickItemId=1831536371775934466&freedomMapClickItemId=1717745115962806288&freedomMapClickItemId=1717745115983777797&freedomMapClickItemId=1717746003334926337&freedomMapClickItemId=1770711109533810690
昇思MindSpore技术公开课
https://github.com/mindspore-courses/step_into_llm
MindSpore 分布式并行
什么是数据并行?
数字视觉预处理(DVPP)
数字视觉预处理对外提供6个模块,分别为视频解码(VDEC)模块、视频编码(VENC)模块、JPEG解码(JPEGD)模块、JPEG编码(JPEGE)模块、PNG解码(PNGD)模块和视觉预处理(VPC)模块。
- 当输入图片格式为PNG时,需要调用PNGD解码模块进行解码,将PNG图片以RGB格式进行数据输出给昇腾AI处理器进行推理计算
- JPEGD模块对JPEG格式的图片进行解码,将原始输入的JPEG图片转换成YUV数据,对神经网络的推理输入数据进行预处理
- JPEG图片处理完成后,需要用JPEGE编码模块对处理后的数据进行JPEG格式还原,用于神经网络的推理输出数据的后处理
- 数字视觉处理(DVPP)模块的执行流程如下图所示,需要由Matrix、DVPP、DVPP驱动和DVPP硬件模块共同协作完成
真题
MindSpore
1、MindSpore深度学习框架的候选运行时支持多种硬件平台,包括CPU、GPU、NPU等。以下关于MindSpore后端的描述中,正确的有哪些项?(多选题)
A.MindSpore后端运行时负责将计算图转换为对应硬件平台的执行指令,同时进行硬件相关的优化
B.MindSpore后端运行时可以根据用户的需求,动态地选择合适的硬件平台进行计算
C.MindSpore后端运行时可以实现跨硬件平台的数据传输和同步,保证计算的正确性和一致性
D.MindSpore后端运行时可以根据硬件平台的特性,自动地调整计算图的结构和参数,提高计算的效率和精度
正确答案:AC
- 这题没找到资料
2、MindSpore是一个全场景深度学习框架,提供了丰富的数据处理和数据增强的功能。MindSpore数据处理的核心是Dataset类,它可以从不同的数据源加载数据,并支持多种数据处理操作,如复制、分批、混洗、映射等。以下关于MindSpore数据处理的描述中,正确的是哪一项?(单选题)
A.Dataset类只能从文件系统中加载数据,不支持从内存中或网络中加载数据
B.Dataset类可以通过map函数对数据进行映射操作,用户可以自定义函数或使用transforms模块提供的算子
C.Dataset类可以通过batch函数对数据进行分批操作,但是不支持将不足一批的数据截掉
D.Dataset类可以通过shuffle函数对数据进行混洗操作,混洗程度由参数buffer_size设定,buffer_size越大,混洗时间越短,可节约计算资源消耗
正确答案:B
- buffer_size参数的大小与混洗(shuffle)的时间并没有直接的反比关系,相反,较大的buffer_size可能会导致更长的初始化时间,因为框架需要先填充更大的缓冲区,较大的buffer_size通常可以提供更好的数据随机性,这对于训练过程是有益的
3、MindSpore是一个全场景深度学习框架,提供了丰富的模型层、损失函数、优化器等组件,帮助用户快速构建神经网络。MindSpore神经网络构建的核心是Cell类,它是所有网络的基类,也是网络的基本单元。以下关于MindSpore神经网络构建的描述中,正确的有哪些项?(多选题)
A.自定义网络时,需要继承Cell类,并重写__init__方法和construct方法
B.Cell类重写了__call__方法,在Cell类的实例被调用时,会执行construct方法
C.Cell类可以通过requires_grad方法指定网络是否需要微分求梯度,在不传入参数调用时,默认设置requires_grad为False
D.Cell类可以通过set_train方法指定模型是否为训练模式,在不传入参数调用时,默认设置mode属性为False
正确答案:AB
C. 错误。requires_grad属性是用来控制张量(Tensor)是否需要计算梯度的,而不是Cell类的方法。在MindSpore中,可以通过设置张量的requires_grad属性来控制该张量是否参与梯度计算。对于网络参数,可以通过Parameter类的构造函数中的requires_grad参数来指定。Cell类本身没有requires_grad方法。
D. 错误。Cell类提供了set_train方法来切换模型的训练模式或评估模式。如果不传入参数调用此方法,默认会将模型设置为训练模式,即mode属性设置为True。
官网的注释:https://authoring-modelarts-cnnorth4.huaweicloud.com/console/lab?share-url-b64=aHR0cHM6Ly9vYnMuZHVhbHN0YWNrLmNuLW5vcnRoLTQubXlodWF3ZWljbG91ZC5jb20vbWluZHNwb3JlLXdlYnNpdGUvbm90ZWJvb2svcjIuMC90dXRvcmlhbHMvemhfY24vYmVnaW5uZXIvbWluZHNwb3JlX3F1aWNrX3N0YXJ0LmlweW5i=&imageid=b8671c1e-c439-4ae2-b9c6-69b46db134ae)&emsp&[
](https://obs.dualstack.cn-north-4.myhuaweicloud.com/mindspore-website/notebook/r2.0/tutorials/zh_cn/beginner/mindspore_quick_start.ipynb
- 网络构建 mindspore.nn类是构建所有网络的基类,也是网络的基本单元。当用户需要自定义网络时,可以继承nn.Cell类,并重写__init__方法和construct方法。__init__包含所有网络层的定义,construct中包含数据(Tensor)的变换过程(即计算图的构造过程)
- 对于D选项,官网这样说: network;网络模型实现,一般使用Cell包装。推理时的网络结构一般和训练是一样的。需要注意推理时给Cell加set_train(False)的标签,训练时加set_train(True)的标签,这个和PyTorch model.eval() (模型评估模式),model.train() (模型训练模式) 一样
- 对于C选项,官网有:MindSpore的 requires_grad 参数与PyTorch也有差异,该参数在PyTorch中为一个后端级别的参数,该参数设为 False 时,代表不需要对该张量计算梯度,构建计算图时不会包含该张量,也不会记录每个操作的梯度信息,在推理阶段等场景可以提高计算效率;而MindSpore的该参数则为一个前端级别的参数,参数设为 False 时,MindSpore的自动微分机制在后端依旧会对该张量进行梯度计算,只会在前端侧对该参数以属性的形式进行展示并使用,例如,MindSpore中的 trainable_params 方法则会屏蔽掉Parameter中 requires_grad 为 False 的属性
4、MindSpore提供了丰富的网络构建和优化的功能。MindSpore网络优化的核心是Optimizer类,它可以对网络的可训练参数进行梯度更新,并支持多种优化算法,如SGD、Adam、Momentum等。以下关于MindSpore网络优化的描述中,正确的是哪一项?(单选题)
A.Optimizer类只能对网络的权重参数进行优化,不支持对偏置参数进行优化
B.Optimizer类可以通过参数learning_rate设置学习率策略,支持固定的学习率或动态的学习率
C.Optimizer类无需参数分组即可通过参数parameters对不同的参数配置不同的学习率、权重衰减和梯度中心化策略
D.Optimizer类可以通过clip类算子对梯度进行裁剪操作,如果要将输入的Tensor值裁剪到最大值和最小值之间,可以用clip_by_global_norm
正确答案:B
- C. 错误。参数分组是指将网络中的参数按照一定的规则分成不同的组,每个组有不同的学习率、权重衰减和梯度中心化策略。在MindSpore中,可以通过设置参数的group属性来指定参数的分组。
5、MindSpore提供了多种模型迁移工具,如MindSpore Dev Toolkit、TroubleShooter等,支持将神经网络从其他主流深度学习框架快速迁移到MindSpore进行二次开发和调优。以下有关MindSpore网络迁移的流程描述中,正确的是哪一项?(单选题)
A.网络脚本开发;
B.网络脚本分析;
C.网络执行调试;
D.网络精度性能调优;
E.MindSpore环境配置
A.ECBAD B.EBACD C.EDCBA D.EABCD
正确答案:B
- 配环境、分析、开发、调试、优化
6、以下关于MindSpore的统一模型文件MindIR的描述中,正确的有哪些项?(多选题)
A.MindIR同时存储了网络结构和权重参数
B.同一MindIR文件支持多种硬形态的部署
C.支持云侧(训练)和端侧(推理)任务
D.MindIR模型与硬件平台解耦,实现一次训练多次部署
正确答案:ABCD
- “解耦”的含义是指MindIR模型文件与具体的硬件平台之间没有直接的绑定关系,这为模型的跨平台部署提供了极大的便利性和灵活性
7、如图所示,在使用MindSpore构建的残差网络中,以下关于该段代码的描述中,正确的有哪些项?(多选题)
A.结构的主分支有两层卷积结构
B.主分支第二层卷积层通过大小1×1的卷积核进行升维
C.主分支与shortcuts输出的特征矩阵相加时,需要保证主分支与shortcuts输出的特征矩阵shape相同
D.该段代码可以正常运行的前提条件是要求in_channel = out_channel*2
正确答案:ABC
昇腾AI全栈
1、以下关于达芬奇架构(AI Core)中的硬件架构且对应的功能介绍中,不正确是哪一项?(单选题)
A.达芬奇架构(AI Core)包括计算单元、存储单元。计算单元:包含两种基础计算资源(矢量计算单元、向量计算单元)﹔存储系统: AI Core的片上存储单元和相应的数据通路构成了存储系统
B.达芬奇架构这一专门为AI算力提升所研发的架构,是昇腾AI计算引擎和AI处理器的核心所在
C.矩阵计算单元和累加器主要完成矩阵相关运算。一拍完成一个fp16的16×16与16×16矩阵乘(4096)
D.累加器:把当前矩阵乘的结果与前次计算的中间结果相加,可以用于完成卷积中加bias操作
正确答案:A
昇腾 AI 处理器:达芬奇架构:https://github.com/hbulpf/aipath/blob/master/frames/ascend/intro/davinci.md
昇腾 AI 处理器的计算核心主要由 AI Core 构成, 负责执行标量、向量和张量相关的计算密集型算子。AI Core 采用了达芬奇架构.
- 计算部件: 矩阵计算单元 (Cube Unit)、向量计算单元 (Vector Unit)
和标量计算单元 (Scalar Unit)
- 这三种计算单元分别对应了张量、向量和标量三种常见的计算模式, 形成了三条独立的执行流水线, 在系统软件的统一调度下互相配合达到优化的计算效率
- 片上缓冲区: 这些存储资源和相关联的计算资源相连,或者和总线接口单元
(Bus Interface Unit, BIU)
相连,从而可以获得外部总线上的数据;具体来说,片上缓冲区包括:
- 用来放置整体图像特征数据、网络参数以及中间结果的输入缓冲区 (Input Buffer, IB) 和输出缓冲区(Output Buffer, OB)
- 提供一些临时变量的高速寄存器单元, 这些寄存器单元位于各个计算单元中
- 存储转换单元 (Memory Transfer Unit, MTE): 设置于输入缓冲区之后,
主要的目的是为了以极高的效率实现数据格式的转换
- 例如卷积操作中为了加速卷积运算,需要用 Img2Col 函数将卷积操作转化为矩阵乘积操作。存储转换单元将 Img2Col 函数固化在了硬件电路中, 极大地提升了 AI Core 的执行效率, 从而能够实现不间断的卷积计算 (与之相对的,GPU 是以软件来实现 Img2Col 函数的,因此效率不如 AI Core)
- 控制单元:
主要包括系统控制模块、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块
- 系统控制模块负责指挥和协调 AI Core 的整体运行模式、配置参数和实现功耗控制等
- 标量指令处理队列主要实现控制指令的译码
考试宝的练习题
判断题
1、朴素贝叶斯模型假设所有特征之间相互独立
2、昇腾芯片采用的达芬奇3DCube框架,是一种针对AI计算优化的架构。该框架通过高效的计算单元组织和数据流动设计,确实使得昇腾芯片能够实现高算力、高能效以及良好的可扩展性。这些优点使得昇腾芯片在AI计算领域表现出色。
3、人脸检测服务在测试图像中没有人脸时不会报错,而是返回没有人脸的结果。
4、
不是三要素吗...虽然这么说也没错
5、朴素贝叶斯算法的一个基本假设就是特征之间相互独立,即样本特征之间的独立同分布。这是朴素贝叶斯分类器“朴素”一词的含义。如果特征之间存在相互依赖关系,那么朴素贝叶斯算法的分类效果可能会受到影响。
6、集成模型随机森林的底层实际上是决策树,更具体地说,是CART(分类与回归树)而不是ID3树。ID3树是另一种决策树算法,它使用信息增益来构建树,而CART树则使用基尼不纯度。 这里可以拓展一下关于集成模型随机森林的概念
7、根据华为云图像内容审核API的请求参数,categories参数用于指定检测场景。如果该值为空或无此参数,则表示API会默认检测politics和terrorism两个场景,但不包含porn场景。
8、
9、在Tensorflow2.x框架中,EagerExecution模式实际上是一种命令式编程(imperativeprogramming)模式,它允许操作立即执行并返回其值,而不需要构建一个图来在后续会话中执行。相反,声明式编程(declarativeprogramming)更侧重于“什么”应该被执行,而不是“如何”执行,这在 Tensorflow 中通常与图(Graph)执行模式相关联。
10、TensorFlow2.0 支持 GPU 加速,其主要表现之一就是在进行矩阵的加减乘除等运算时,可以利用 GPU 的并行计算能力,显著提高运算速度。这种加速对于深度学习等需要大量矩阵运算的应用尤为重要。
11、Tensorflow 是一个用于机器学习和深度学习的端到端开源平台。
12、TensorFlow 提供了自身的可视化工具,但在某些情况下,用户可能仍然会选择使用 matplotlib 来满足其特定的可视化需求。
13、Tensor 是 MindSpore 中用于数据存储的基本组件。
14、在深度学习中,激活函数的选择对于神经网络的性能和稳定性至关重要。Sigmoid、tanh 和 Softsign 等函数在神经网络层数加深时,存在梯度消失的问题,这会导致梯度难以传递到下一层,进而影响网络的训练和优化。
15、RNN(循环神经网络)与前馈神经网络有显著的区别,其中最关键的一点在于它们处理序列数据的方式不同。RNN通过引入循环结构,在每个时间步都将前一时刻的信息传递给当前时刻的隐藏层,从而能够捕捉输入序列中的时序依赖关系。这是RNN的一个核心特性,也是它相对于前馈神经网络的主要优势之一。
16、在 MindSpore 框架中,Cell 是构建所有网络的基类,它代表了神经网络中的一个节点。用户可以通过直接调用 Cell 对象来实现前向计算,执行网络。
17、MindSpore 支持的处理器种类,包括 Ascend 处理器(昇腾处理器)、GPU(图形处理单元)和CPU(中央处理器)。
18、MindSpore张量和NumPy数组在某些方面相似,但在设计理念和实现机制上有明显的区别。
19、MindSpore是一种面向AI应用场景的开发框架,专注于提供高效、易用和灵活的解决方案。其中,通过面向芯片的深度图优化技术来减少同步等待、最大化数据计算通信的并行度,让整个模型训练和推理过程更高效。
20、Julia 编程语言从张量原生表达、IR开放和高性能入手,结合科学计算 HPC 领域的积累,可以更好地支持 AI 领域的工作。
21、FPGA是现场可编程门阵列,GPU是图形处理器
22、AlCore 作为昇腾 AI 芯片的计算核心,主要负责矩阵类复杂计算,而非矩阵类复杂计算则由其他部件或者算法来处理。
23、在以连接主义为基础的神经网络中,每个节点并不直接表达特定的意义,而是通过其连接权重和激活函数等来共同作用于整个网络的输出。
24、网格搜索(GridSearch)是一种参数调节方法,它通过在给定的参数空间中逐网格点进行实验,以找到最优参数组合。然而,这种方法效率较低,因为它需要遍历整个网格才能找到最优解。在许多情况下,更高效的参数调节方法是随机搜索(RandomSearch)或启发式搜索(HeuristicSearch)。
25、TensorFlow2.0中取消了图和会话的机制,改为使用 tf.function 来封装计算作为图的执行。 前面的话有点问题,TensorFlow 2.0 确实减少了对图和会话的直接操作需求,但并没有完全去除这些概念。tf.function 成为了连接 Eager Execution 和图执行模式的桥梁,使得开发者可以根据需要在这两种模式之间灵活切换。
26、模型的容量指其拟合各种函数的能力,也称为模型的复杂度。
27、在卷积层中,Dropout比例是指在网络训练时随机丢弃一定比例的神经元,即将其激活值设置为0的比例。这个比例通常设定在 0.2 到 0.5 范围内。这样做是为了防止过拟合,使模型更具泛化能力。通过随机丢弃一部分神经元,模型被迫学习更多的冗余特征,从而提高了模型的鲁棒性
28、2004年的DARPA挑战赛是自动驾驶技术发展的一个重要里程碑。在这场比赛中,部分参赛车辆确实展示出了先进的感知能力,能够检测到障碍物。虽然当时的技术尚未实现对交通信号灯的识别,但这一比赛为自动驾驶汽车的后续发展奠定了基础,特别是在感知和导航技术方面。
29、昇腾 AI 应用不仅支持对接第三方框架,也支持 MindSpore 框架的训练。推理类应用主要负责处理和执行 AI 模型,而框架类应用(训练)则负责模型的训练和开发。
30、在深度学习中,dropout 技术主要是在训练阶段使用,以减少过拟合的风险。在预测或评估阶段,通常不使用 dropout。
31、卷积神经网络中,同一卷积层的所有卷积核是共享权重的,这是卷积神经网络的一个重要特性,可以显著减少模型参数的数量。
32、卷积神经网络中的全连接层可以确保输入图像被转换为固定尺寸的卷积特征图,但这并不意味着输入图像的尺寸必须保持一致。事实上,输入图像的尺寸可以根据需要调整,以适应不同的任务和数据集。
33、单层感知机和逻辑回归都是线性分类器,只能处理线性可分的数据
34、单层感知机(Single Layer Perceptron, SLP)是一个简单的线性分类器,只能处理线性可分的数据。这意味着它只能找到一条直线(二维空间)、平面(三维空间)或多维超平面来分离两类数据点。对于非线性可分的数据集,单层感知机会遇到无法完全正确分类的情况
35、逻辑回归(Logistic Regression)也是一种线性分类器,但它主要用于二分类问题。逻辑回归通过对线性组合的结果应用sigmoid函数来进行概率估计,因此它可以产生连续的概率值而不是离散的类别标签。尽管如此,逻辑回归本质上仍然是线性的,因为它依赖于输入特征的线性组合
36、前馈神经网络是一种常见的神经网络类型,其特点是在神经元的输出层和下一层之间没有相互连接,信息的传递只沿着一个方向进行。此外,前馈神经网络中的每一层包含的神经元数量可以根据需要调整,以适应不同的任务和数据集.
关于前馈神经网络,有个比较好的动画讲解:https://okai.brown.edu/zh/chapter5.html
博客:https://0809zheng.github.io/2020/04/17/feedforward-neural-network.html
37、前馈神经网络与全连接神经网络之间的区别是: >> 连接方式:(1)前馈神经网络:信息从输入层到输出层单向传播,层间连接可以是全连接、部分连接或稀疏连接。(2)全连接神经网络:每一层的每个神经元都与下一层的所有神经元相连,是一种特殊的前馈神经网络。
38、MindSpore 是一种用于深度学习训练和推理的开源框架。该算法通过对一阶矩阵进行近似表达,降低计算复杂度,然后再对矩阵进行降频、降维度以加速计算。这是 MindSpore 算法的核心思想,也是其能够高效处理大规模数据集的原因。(不确定是否正确)
动量优化器可以为每个参数设置不同的学习率,在深度学习中,动量优化器是一种常用的优化算法,它可以通过调整学习率来改变参数更新的速度和幅度,从而更好地优化模型性能。
强化学习是一种机器学习算法,它通过与环境交互并观察到环境给予的反馈(奖励或惩罚)来学习如何做出决策。强化学习的优势在于它具有更强的适应性,可以处理更复杂的环境和任务,并且不需要预先知道数据分布。虽然强化学习可以处理大量的训练数据,但这个陈述中的“增加了训练数据量”是不准确的,因为强化学习通常不需要与监督学习或非监督学习相比的特定训练数据量。
在 PyTorch 中,动态图是它的主要特点,它允许用户在运行时定义和修改图结构。静态图通常用于 TensorFlow 等其他深度学习框架。
输出通道数为 3、卷积核大小为 5∗5、使用 normal 算子初始化参数的卷积层。
与FPGA相比,相同工艺下,基于ASIC的AI芯片功耗更小,因此更适合用于手机等终端设备上。 与FPGA(Field-Programmable Gate Array,现场可编程门阵列)相比,基于ASIC(Application-Specific Integrated Circuit,专用集成电路)的AI芯片在相同工艺下通常具有更低的功耗,因此更适合用于手机等终端设备上。
昇腾 AI 处理器中包含 AI CPU, 控制整个 AICore 的运算,完成整个程序的循环控制分支判断,但不限于这些功能
165、使用mindspore.nn.conv2d构建二位卷积神经网络时,默认情况下,接受图像数据格式为【数量,通道,高 度,宽度】 在使用 MindSpore 的 nn.conv2D 构建二维卷积神经网络时,图像数据通常以 [数量,通道,高度,宽度] 的顺序提供。但需要注意的是,题目中的“二位”可能会引起误解,因为在计算机视觉领域,通常我们讨论的是彩色图像(即三维数据,包含通道、高度和宽度),而非灰度图像(即二维数据)。所以,这里的需要更严谨一些,建议使用[数量,通道数,高度,宽度]作为正确的输入格式。
华为 HiAI 提供了三层能力开放,这三层能力分别是:HiAIFoundation、HiAIEngine 和 HiAIPlatform,HiAIFoundation是基础层,提供基础算法和芯片支持;HiAIEngine是引擎层,提供高效的AI运算能力;HiAIPlatform是平台层,提供一站式的AI开发、部署和管理服务。
AI 芯片在推理时需要进行多种优化,这些优化可能涉及算法、硬件加速等多个方面,因此与主要用于训练场景的 AI芯片相比,设计可能更加复杂。
为保证模型精度及避免硬件差异带来的影响,Mindspore 的并行训练需要相同型号的设备(如:全部都使用 Atlas100T Pro者全部都用 NVIDIA V100) ×
MindSpore 的并行训练支持不同型号的设备,但需确保设备间的兼容性和性能匹配。
XOR问题是线性分类问题
XOR问题是一种逻辑分类问题,因为输入和输出之间的关系不是线性的,所以为“错误”。
池化层在卷积神经网络中并非必不可少
MindSpore 支持动态图和静态图两种模型开发方式。但是在静态图下,对于python语法有所限制,因此从动态图切换成静态图时需要符合静态图的语法规则,才能正确使用静态图来进行执行 ×
MindSpore 确实支持动态图和静态图两种模型开发方式。在静态图下,虽然对Python语法有所要求,但并不意味着对语法有严格的限制。从动态图切换到静态图时,主要是需要遵循静态图编程的一些特定规则和约定,而非必须完全符合静态图的语法规则。
损失函数是定义在参数空间的函数,目标是找到最优的参数值,使得损失函数的值最小。
在生成对抗网络中,判断网络的输入主要是生成网络生成的样本数据以及真实的样本数据,因为判断器的作用就是区分输入的样本数据是来自真实的数据集还是网络生成的数据集