摘要: 深度学习范式主要是通过发现经验数据中,错综复杂的结构进行学习。通过构建包含多个处理层的计算模型(网络模型),深度学习可以创建多个级别的抽象层来表示数据。例如,卷积神经网络 CNN 可以使用大量图像进行训练,例如对猫狗分类去学习猫和狗图片的特征。这种类型的神经网络通常从所采集图像中,包含的像素进行学习 阅读全文
posted @ 2024-12-13 19:29 无尽玩AI 阅读(22) 评论(0) 推荐(0)
摘要: 什么是 AI 算法?什么是神经网络?神经网络有什么用?为什么神经网络需要训练?什么是模型?AI 框架有什么用?AI 框架能解决什么问题? 上面的几个问题其实还挺有挑战的,也是本文需要回答的一个问题。下面来对一些基础概念进程澄清:首先深度学习是机器学习研究领域中的一种范式,而深度学习的概念源于对人工神 阅读全文
posted @ 2024-12-13 19:18 无尽玩AI 阅读(39) 评论(0) 推荐(0)
摘要: 从前文的简单介绍中,我们提到了可以从内存布局上对推理引擎的 Kernel 进行优化,接下来,我们将先介绍 CPU 和 GPU 的基础内存知识,NCHWX 内存排布格式以及详细展开描述 MNN 这个针对移动应用量身定制的通用高效推理引擎中通过数据内存重新排布进行的内核优化。 内存 CPU 内存主要架构 阅读全文
posted @ 2024-12-13 18:15 无尽玩AI 阅读(63) 评论(0) 推荐(0)
摘要: QNNPACK(Quantized Neural Networks PACKage 是 Marat Dukhan (Meta) 开发的专门用于量化神经网络计算的加速库,其卓越的性能表现一经开源就击败了几乎全部已公开的加速算法。到目前为止,QNNPACK 仍然是已公开的,用于移动端(手机)的,性能最优 阅读全文
posted @ 2024-12-13 18:15 无尽玩AI 阅读(35) 评论(0) 推荐(0)
摘要: 在上一篇文章的介绍中,介绍了 Im2Col 技术,它通过将三维张量重新排列成矩阵形式,然后利用基于内存访问局部性的优化库如 GEMM(通用矩阵乘法库)加速计算。随后,还探讨了空间组合优化,这一种利用局部性原理来提升效率的技术。 在本文将重点介绍 Winograd 优化算法,它是矩阵乘优化方法中 Co 阅读全文
posted @ 2024-12-13 18:15 无尽玩AI 阅读(50) 评论(0) 推荐(0)
摘要: 作为早期的 AI 框架,Caffe 中卷积的实现采用的是基于 Im2Col 的方法,至今仍是卷积重要的优化方法之一。 从上一篇文章的介绍中可以看到,在 CNN 中卷积直接计算的定义中,卷积核在输入图片上滑动,对应位置的元素相乘后相加求和,滑窗的大小由卷积核决定。由于滑动操作时的窗口的数据横向是连续的 阅读全文
posted @ 2024-12-13 18:15 无尽玩AI 阅读(66) 评论(0) 推荐(0)
摘要: 卷积是神经网络里面的核心计算之一,它是一种特殊的线性运算。而卷积神经网络(CNN)是针对图像领域任务提出的神经网络,其受猫的视觉系统启发,堆叠使用卷积层和池化层提取特征。它在 CV 领域方面的突破性进展引领了深度学习的热潮。 回到卷积本身,其变种丰富、计算复杂,神经网络运行时大部分时间都耗费在计算卷 阅读全文
posted @ 2024-12-13 18:15 无尽玩AI 阅读(127) 评论(0) 推荐(0)
摘要: 推理引擎的 Kernel 层通常是推理引擎中用于执行底层数学运算的组件。在神经网络模型推理过程中,需要对大量数据进行高效的数学运算,如矩阵乘法、卷积、池化等。Kernel 层就是实现这些运算的核心部分,它直接影响着推理引擎的速度和效率,因此本文将会重点介绍 Kernel 层相关的内容。 Kernel 阅读全文
posted @ 2024-12-13 18:14 无尽玩AI 阅读(38) 评论(0) 推荐(0)
摘要: 除了前面提到的算子替换和算子前移等内容,本文内容将深入探讨计算图的优化策略,我们将细致分析图优化的其他重要内容,如改变数据节点的数据类型或存储格式来提升模型性能,以及优化数据的存储和访问方式以降低内存占用和数据访问时间。以上内容的理解和掌握,对于高效利用计算资源,提升算法性能具有至关重要的作用。 融 阅读全文
posted @ 2024-12-13 17:31 无尽玩AI 阅读(139) 评论(0) 推荐(0)
摘要: 上一篇文章主要回顾了计算图优化的各个组成部分,包括基础优化、扩展优化以及布局和内存优化。这些优化方式在预优化阶段、优化阶段和后优化阶段都有所应用,以提高计算效率。同时,还介绍了 AI 框架和推理引擎在图优化方面的不同应用和侧重点。接下来,我们从计算图优化的各个组成部分开始逐步进行讲解。 基础图优化方 阅读全文
posted @ 2024-12-13 17:30 无尽玩AI 阅读(75) 评论(0) 推荐(0)
摘要: 本文将会介绍推理引擎转换中的图优化模块,该模块负责实现计算图中的各种优化操作,包括算子融合、布局转换、算子替换和内存优化等,以提高模型的推理效果。计算图是一种表示和执行数学运算的数据结构,在机器学习和深度学习中,模型的训练和推理过程通常会被表示成一个复杂的计算图,其中节点代表运算操作,边代表数据(通 阅读全文
posted @ 2024-12-13 17:30 无尽玩AI 阅读(101) 评论(0) 推荐(0)
摘要: 用户在使用 AI 框架时,可能会遇到训练环境和部署环境不匹配的情况,比如用户用 Caffe 训练好了一个图像识别的模型,但是生产环境是使用 TensorFlow 做预测。 因此就需要将使用不同训练框架训练出来的模型相互联系起来,使用户可以进行快速的转换。模型转换主要有直接转换和规范式转换两种方式,本 阅读全文
posted @ 2024-12-13 17:30 无尽玩AI 阅读(61) 评论(0) 推荐(0)
摘要: 模型转换涉及对模型的结构和参数进行重新表示。在进行模型转换时,通常需要理解模型的计算图结构,并根据目标格式的要求对其进行调整和转换,可能包括添加、删除或修改节点、边等操作,以确保转换后的计算图能够正确地表示模型的计算流程。 本文主要介绍自定义计算图的方法以及模型转换的流程和细节。 计算图定义回顾 转 阅读全文
posted @ 2024-12-13 17:30 无尽玩AI 阅读(25) 评论(0) 推荐(0)
摘要: 在训练好一个模型后,需要将其保存下来,以便在需要时重新加载并进行推理或进一步的训练。为了实现这一目标,需要一种有效的方式来将模型的参数、结构等保存起来。 本文主要介绍在推理引擎中,针对神经网络模型的序列化与反序列化、不同的模型序列化方法,以及 Protobuf 和 FlatBuffers 两种在端侧 阅读全文
posted @ 2024-12-13 17:18 无尽玩AI 阅读(68) 评论(0) 推荐(0)
摘要: 模型转换的主要任务是实现模型在不同框架之间的流转。随着深度学习技术的发展,训练框架和推理框架的功能逐渐分化。训练框架通常侧重于易用性和研究人员的算法设计,提供了分布式训练、自动求导、混合精度等功能,旨在让研究人员能够更快地生成高性能模型。 而推理框架则更专注于针对特定硬件平台的极致优化和加速,以实现 阅读全文
posted @ 2024-12-13 17:12 无尽玩AI 阅读(95) 评论(0) 推荐(0)
摘要: 本文将介绍知识蒸馏(Knowledge Distillation, KD)的原理,这是一种通过从大型的教师模型向小型的学生模型转移知识来实现模型压缩和优化的技术。知识蒸馏的核心思想是利用教师模型在大量数据上积累的丰富知识,通过特定的蒸馏算法,使学生模型能够学习并吸收这些知识,从而达到与教师模型相似的 阅读全文
posted @ 2024-12-13 17:12 无尽玩AI 阅读(251) 评论(0) 推荐(0)
摘要: 本文将介绍模型剪枝的概念、方法和流程,这是一种通过移除神经网络中的冗余或不重要参数来减小模型规模和提高效率的模型压缩技术。 剪枝不仅可以减少模型的存储和计算需求,还能在保持模型性能的同时提高模型的泛化能力。我们将探讨剪枝的定义、分类、不同阶段的剪枝流程,以及多种剪枝算法,包括基于参数重要性的方法、结 阅读全文
posted @ 2024-12-13 17:11 无尽玩AI 阅读(255) 评论(0) 推荐(0)
摘要: 本文将会重点介绍训练后量化技术的两种方式:动态和静态方法,将模型权重和激活从浮点数转换为整数,以减少模型大小和加速推理。并以 KL 散度作为例子讲解校准方法和量化粒度控制来平衡模型精度和性能。 训练后量化的方式 训练后量化的方式主要分为动态和静态两种。 动态离线量化 动态离线量化(Post Trai 阅读全文
posted @ 2024-12-13 17:11 无尽玩AI 阅读(311) 评论(0) 推荐(0)
摘要: 本文将会介绍感知量化训练(QAT)流程,这是一种在训练期间模拟量化操作的方法,用于减少将神经网络模型从 FP32 精度量化到 INT8 时的精度损失。QAT 通过在模型中插入伪量化节点(FakeQuant)来模拟量化误差,并在训练过程中最小化这些误差,最终得到一个适应量化环境的模型。 文中还会讨论伪 阅读全文
posted @ 2024-12-13 17:11 无尽玩AI 阅读(166) 评论(0) 推荐(0)
摘要: 计算机里面数值有很多种表示方式,如浮点表示的 FP32、FP16,整数表示的 INT32、INT16、INT8,量化一般是将 FP32、FP16 降低为 INT8 甚至 INT4 等低比特表示。 模型量化则是一种将浮点值映射到低比特离散值的技术,可以有效的减少模型的参数大小、内存消耗和推理延迟,但往 阅读全文
posted @ 2024-12-13 16:33 无尽玩AI 阅读(158) 评论(0) 推荐(0)
摘要: 随着神经网络模型的复杂性和规模不断增加,模型对存储空间和计算资源的需求越来越多,使得部署和运行成本显著上升。模型压缩的目标是通过减少模型的存储空间、减少计算量或提高模型的计算效率,从而在保持模型性能的同时,降低模型部署的成本。模型压缩的目标可以概括为以下几点: 减少模型显存占用:通过压缩模型参数或使 阅读全文
posted @ 2024-12-13 16:25 无尽玩AI 阅读(56) 评论(0) 推荐(0)
摘要: 本文主要介绍一种轻量化的 Transformer 结构,在获得高性能的同时,能够保持一定的推理速度。以延迟为目标进行优化设计。通过延迟分析重新探讨 ViT 及其变体的设计原则。 EfficientFormer V1 模型 EfficientFormer V1:基于 ViT 的模型中使用的网络架构和具 阅读全文
posted @ 2024-12-13 16:25 无尽玩AI 阅读(60) 评论(0) 推荐(0)
摘要: 在本文中,将介绍一种新的网络-MobileFormer,它实现了 Transformer 全局特征与 CNN 局部特征的融合,在较低的成本内,创造一个高效的网络。通过本文,让大家去了解如何将 CNN 与 Transformer 更好的结合起来,同时实现模型的轻量化。 MobileFormer Mob 阅读全文
posted @ 2024-12-13 16:25 无尽玩AI 阅读(72) 评论(0) 推荐(0)
摘要: 自 Vision Transformer 出现之后,人们发现 Transformer 也可以应用在计算机视觉领域,并且效果还是非常不错的。但是基于 Transformer 的网络模型通常具有数十亿或数百亿个参数,这使得它们的模型文件非常大,不仅占用大量存储空间,而且在训练和部署过程中也需要更多的计算 阅读全文
posted @ 2024-12-13 16:25 无尽玩AI 阅读(230) 评论(0) 推荐(0)
摘要: 本文主要会介绍 GhostNet 系列网络,在本文中会给大家带来卷积结构的改进方面的轻量化,以及与注意力(self-attention)模块的进行结合,部署更高效,更适合移动计算的 GhostNetV2。让读者更清楚的区别 V2 与 V1 之间的区别。 GhostNet V1 模型 GhostNet 阅读全文
posted @ 2024-12-13 15:33 无尽玩AI 阅读(138) 评论(0) 推荐(0)
摘要: 本文主要介绍 EfficientNet 系列,在之前的文章中,一般都是单独增加图像分辨率或增加网络深度或单独增加网络的宽度,来提高网络的准确率。而在 EfficientNet 系列论文中,会介绍使用网络搜索技术(NAS)去同时探索网络的宽度(width),深度(depth),分辨率(resoluti 阅读全文
posted @ 2024-12-13 15:33 无尽玩AI 阅读(105) 评论(0) 推荐(0)
摘要: 本文主要介绍 FBNet 系列,在这一篇会给大家带来三种版本的 FBNet 网络,从基本 NAS 搜索方法开始,到 v3 版本的独特方法。在本文中读者会了解到如何用 NAS 搜索出最好的网络和训练参数。 FBNet V1 模型 FBNetV1:完全基于 NAS 搜索的轻量级网络系列,结合了 DNAS 阅读全文
posted @ 2024-12-13 15:22 无尽玩AI 阅读(63) 评论(0) 推荐(0)
摘要: 本文将会介绍 ESPNet 系列,该网络主要应用在高分辨率图像下的语义分割,在计算内存占用、功耗方面都非常高效,重点介绍一种高效的空间金字塔卷积模块(ESP Module);而在 ESPNet V2 上则是会更进一步给大家呈现如何利用分组卷积核,深度空洞分离卷积学习巨大有效感受野,进一步降低浮点计算 阅读全文
posted @ 2024-12-13 15:22 无尽玩AI 阅读(158) 评论(0) 推荐(0)
摘要: 在本文会介绍 MobileNet 系列,重点在于其模型结构的轻量化设计,主要介绍详细的轻量化设计原则,基于这原则,MobileNetV1 是如何设计成一个小型,低延迟,低功耗的参数化模型,可以满足各种用例的资源约束。可以更方便的实现分类,检测,嵌入和分割等功能。会结合目前较流行的深度学习技术,在 V 阅读全文
posted @ 2024-12-13 15:21 无尽玩AI 阅读(279) 评论(0) 推荐(0)
摘要: 本文会介绍 ShuffleNet 系列,重点在于其模型结构的轻量化设计,涉及如何降低深度网络计算量,在本文中会着重会讲解逐点分组卷积(Pointwise Group Convolution)和通道混洗(Channel Shuffle)两种新的运算,而 V2 版本则会从设备运算速度方面考虑将网络进行轻 阅读全文
posted @ 2024-12-13 15:21 无尽玩AI 阅读(384) 评论(0) 推荐(0)
摘要: 本文将介绍 SqueezeNet 系列网络,在轻量化模型这个范畴中,Squeezenet 是最早的研究。主要针对了一些组件进行轻量化。与以往的网络都只讲网络如何设计不同。SqueezeNext 则从硬件角度分析如何加速,从而更全面地了解网络结构的设计。 SqueezeNet 模型 SqueezeNe 阅读全文
posted @ 2024-12-13 15:21 无尽玩AI 阅读(146) 评论(0) 推荐(0)
摘要: 自 Vision Transformer 出现之后,人们发现 Transformer 也可以应用在计算机视觉领域,并且效果还是非常不错的。但是基于 Transformer 的网络模型通常具有数十亿或数百亿个参数,这使得它们的模型文件非常大,不仅占用大量存储空间,而且在训练和部署过程中也需要更多的计算 阅读全文
posted @ 2024-12-13 15:17 无尽玩AI 阅读(72) 评论(0) 推荐(0)
摘要: 在本文会接着介绍 CNN 模型的小型化,除了第二篇文章提到的三个模型外,在本文会继续介绍 ESPNet 系列,FBNet 系列,EfficientNet 系列和 GhostNet 系列。 ESPNet 系列 ESPNetV1 ESPNet V1:应用在高分辨图像下的语义分割,在计算、内存占用、功耗方 阅读全文
posted @ 2024-12-13 15:16 无尽玩AI 阅读(64) 评论(0) 推荐(0)
摘要: 神经网络模型被广泛的应用于工业领域,并取得了巨大成功。然而,由于存储空间以及算力的限制,大而复杂的神经网络模型是难以被应用的。首先由于模型过于庞大,计算参数多(如下图所示),面临内存不足的问题。其次某些场景要求低延迟,或者响应要快。所以,研究小而高效的 CNN 模型至关重要。 本文将介文绍一些常见的 阅读全文
posted @ 2024-12-13 15:08 无尽玩AI 阅读(131) 评论(0) 推荐(0)
摘要: 本文将介绍 AI 模型网络参数方面的一些基本概念,以及硬件相关的性能指标,为后面让大家更了解模型轻量化做初步准备。值得让人思考的是,随着深度学习的发展,神经网络被广泛应用于各种领域,模型性能的提高同时也引入了巨大的参数量和计算量(如下图右所示),一般来说模型参数量越大,精度越高,性能越好(如下图左所 阅读全文
posted @ 2024-12-13 15:07 无尽玩AI 阅读(85) 评论(0) 推荐(0)
摘要: AscendCL 作为华为 Ascend 系列 AI 处理器的软件开发框架,为用户提供了强大的编程支持。通过 AscendCL,开发者可以更加高效地进行 AI 应用的开发和优化,从而加速 AI 技术在各个领域的应用和落地。AscendCL 的易用性和高效性,使得它成为开发 AI 应用的重要工具之一。 阅读全文
posted @ 2024-12-13 15:07 无尽玩AI 阅读(49) 评论(0) 推荐(0)
摘要: 本文将介绍华为昇腾推理引擎 MindIE 的详细内容,包括其基本介绍、关键功能特性以及不同组件的详细描述。 本文内容将深入探讨 MindIE 的三个主要组件:MindIE-Service、MindIE-Torch 和 MindIE-RT,以及它们在服务化部署、大模型推理和推理运行时方面的功能特性和应 阅读全文
posted @ 2024-12-13 15:07 无尽玩AI 阅读(146) 评论(0) 推荐(0)
摘要: 在深入探讨推理引擎的架构之前,让我们先来概述一下推理引擎的基本概念。推理引擎作为 AI 系统中的关键组件,负责将训练好的模型部署到实际应用中,执行推理任务,从而实现智能决策和自动化处理。随着 AI 技术的快速发展,推理引擎的设计和实现面临着诸多挑战,同时也展现出独特的优势。 本文将详细阐述推理引擎的 阅读全文
posted @ 2024-12-13 15:07 无尽玩AI 阅读(82) 评论(0) 推荐(0)