摘要:
本文将会介绍昇思MindSpore的并行训练技术,以及如何通过张量重排布和自动微分简化并行策略搜索,实现高效大模型训练。 大模型的带来 随着深度学习的发展,为了实现更高的准确率和更丰富的应用场景,训练数据集和神经网络模型的规模日益增大。特别是自然语言处理(Natural Language Proce 阅读全文
posted @ 2024-12-14 10:47
日照金城
阅读(23)
评论(0)
推荐(0)
摘要:
混合并行(HybridParallel)是一种用于分布式计算的高级策略,它结合了数据并行和模型并行的优势,以更高效地利用计算资源,解决深度学习中的大模型训练问题。混合并行不仅能提高计算效率,还能在有限的硬件资源下处理更大的模型和数据集。在深度学习中,数据并行和模型并行各自有其适用的场景和局限性。数据 阅读全文
posted @ 2024-12-14 10:47
日照金城
阅读(42)
评论(0)
推荐(0)
摘要:
在大模型的训练中,单个设备往往无法满足计算和存储需求,因此需要借助分布式训练技术。其中,模型并行(Model Parallelism, MP)是一种重要的方法。模型并行的基本思想是将模型的计算任务拆分到不同的设备上执行,以提高训练效率和处理更大规模的模型。模型并行主要分为朴素的模型并行、张量并行和流 阅读全文
posted @ 2024-12-14 10:47
日照金城
阅读(51)
评论(0)
推荐(0)
摘要:
在大模型的训练中,单个设备往往无法满足计算和存储需求,因此需要借助分布式训练技术。其中,模型并行(Model Parallelism, MP)是一种重要的方法。模型并行的基本思想是将模型的计算任务拆分到不同的设备上执行,以提高训练效率和处理更大规模的模型。下面将重点介绍模型并行中的张量并行。 朴素张 阅读全文
posted @ 2024-12-14 10:46
日照金城
阅读(59)
评论(0)
推荐(0)
摘要:
上一篇文章内容介绍了通用的数据并行和分布式数据并行,主要是对神经网络模型的输入数据 mini-batch 进行分布式处理。并且讨论了同步数据并行和异步数据并行的差异点,深入到 PyTorch AI 框架的弹性数据并行是如何实现与处理的。在本文内容中,将会重点关注 AI 框架中如何实现针对权重数据、优 阅读全文
posted @ 2024-12-14 10:46
日照金城
阅读(113)
评论(0)
推荐(0)
摘要:
数据并行是一种广泛应用于分布式 AI 系统中的技术,旨在通过将数据集划分为多个子集并在不同计算节点上并行处理这些子集,以提高计算效率和速度。在大规模机器学习和深度学习训练过程中,数据并行可以显著加快模型训练速度,减少训练时间,提升模型性能。大部分的数据并行模型中,每个计算节点都会接收到完整的模型副本 阅读全文
posted @ 2024-12-14 10:45
日照金城
阅读(54)
评论(0)
推荐(0)
摘要:
分布式训练是一种模型训练模式,它将训练工作量分散到多个工作节点上,从而大大提高了训练速度和模型准确性。虽然分布式训练可用于任何类型的 AI 模型训练,但将其用于大模型和计算要求较高的任务最为有利。 本篇幅将围绕在 PyTorch2.0 中提供的多种分布式训练方式展开,包括并行训练,如:数据并行(Da 阅读全文
posted @ 2024-12-14 10:45
日照金城
阅读(21)
评论(0)
推荐(0)
摘要:
目前主流的 AI 框架都选择使用计算图来抽象神经网络计算表达,通过通用的数据结构(张量)来理解、表达和执行神经网络模型,通过计算图可以把 AI 系统化的问题形象地表示出来。 计算图与框架关系 计算图回顾 在 AI 框架中,其计算图的基本组成有两个主要的元素:1)基本数据结构张量和 2)基本计算单元算 阅读全文
posted @ 2024-12-14 10:45
日照金城
阅读(39)
评论(0)
推荐(0)
摘要:
从 TensorFlow、PyTorch,到 PaddlePaddle、MindSpore、MegEngine,主流的 AI 框架动静态图转换,经历了动静分离、动静结合到动静统一的发展过程。兼顾动态图易用性和静态图执行性能高效两方面优势,均具备动态图转静态图的功能,支持使用动态图编写代码,框架自动转 阅读全文
posted @ 2024-12-14 10:44
日照金城
阅读(57)
评论(0)
推荐(0)
摘要:
计算图在数学上作为一个有向无环图(DAG,Directed Acyclic Graph),能够把神经网络模型的概念抽象出来作为同一描述,不过在计算机的编程中,会遇到很多 if、else、while、for 等控制流语句,有向无环图改如何表示控制流变成了计算图中一个很重要的问题。好处在于,引入控制流之 阅读全文
posted @ 2024-12-14 10:44
日照金城
阅读(32)
评论(0)
推荐(0)
摘要:
在前面的内容介绍过,深度学习的训练过程主要分为以下三个部分:1)前向计算、2)计算损失、3)更新权重参数。在训练神经网络时,前向传播和反向传播相互依赖。对于前向传播,沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播,其中计算顺序与计算图的相反。 基于计算图的 AI 框架中,训 阅读全文
posted @ 2024-12-14 10:43
日照金城
阅读(41)
评论(0)
推荐(0)
摘要:
在前面的文章曾经提到过,目前主流的 AI 框架都选择使用计算图来抽象神经网络计算表达,通过通用的数据结构(张量)来理解、表达和执行神经网络模型,通过计算图可以把 AI 系统化的问题形象地表示出来。 本文将会以 AI 概念落地的时候,遇到的一些问题与挑战,因此引出了计算图的概念来对神经网络模型进行统一 阅读全文
posted @ 2024-12-14 10:43
日照金城
阅读(30)
评论(0)
推荐(0)
摘要:
在前面的文章曾经提到过,目前主流的 AI 框架都选择使用计算图来抽象神经网络计算表达,通过通用的数据结构(张量)来理解、表达和执行神经网络模型,通过计算图可以把 AI 系统化的问题形象地表示出来。 本文将会以 AI 概念落地的时候,遇到的一些问题与挑战,因此引出了计算图的概念来对神经网络模型进行统一 阅读全文
posted @ 2024-12-14 10:39
日照金城
阅读(37)
评论(0)
推荐(0)
摘要:
在 AI 框架发展的最近一个阶段,技术上主要以计算图来描述神经网络。前期实践最终催生出了工业级 AI:TensorFlow 和 PyTorch,这一时期同时伴随着如 Chainer、DyNet、CNTK、PaddlePaddle、JAX 等激发了框架设计灵感的诸多实验课程。 TensorFlow 和 阅读全文
posted @ 2024-12-14 00:18
日照金城
阅读(41)
评论(0)
推荐(0)
摘要:
在前面的文章里面,分别介绍了什么是自动微分、如何实现自动微分,以及更加深入的自动微分的基本数学原理,并贯以具体的代码实现例子来说明业界主流的 AI 框架在自动微分实现方法,希望让你更加好地掌握自动微分端到端能力。 虽然计算机实现自动微分已经发展了几十年,不过在自动微分的演进过程和未来发展,仍然遇到诸 阅读全文
posted @ 2024-12-14 00:18
日照金城
阅读(37)
评论(0)
推荐(0)
摘要:
这里记录一下使用操作符重载(OO)编程方式的自动微分,其中数学实现模式则是使用反向模式(Reverse Mode),综合起来就叫做反向 OO 实现 AD 啦。 基础知识 下面一起来回顾一下操作符重载和反向模式的一些基本概念,然后一起去尝试着用 Python 去实现 PyTorch 这个 AI 框架中 阅读全文
posted @ 2024-12-14 00:17
日照金城
阅读(22)
评论(0)
推荐(0)
摘要:
在这章内容,会介绍是怎么实现自动微分的,因为代码量非常小,也许你也可以写一个玩玩。前面的文章当中,已经把自动微分的原理深入浅出的讲了一下,也引用了非常多的论文。有兴趣的可以顺着综述 A survey 这篇深扒一下。 前向自动微分原理 了解自动微分的不同实现方式非常有用。在这里呢,我们将介绍主要的前向 阅读全文
posted @ 2024-12-14 00:17
日照金城
阅读(21)
评论(0)
推荐(0)
摘要:
上一篇文章简单了解计算机中常用几种微分方式。本文将深入介绍 AI 框架离不开的核心功能:自动微分。 而自动微分则是分为前向微分和后向微分两种实现模式,不同的实现模式有不同的机制和计算逻辑,而无论哪种模式都离不开雅克比矩阵,所以我们也会深入了解一下雅克比矩阵的原理。 雅克比矩阵 在向量微积分中,Jac 阅读全文
posted @ 2024-12-14 00:16
日照金城
阅读(22)
评论(0)
推荐(0)
摘要:
上一篇文章简单了解计算机中常用几种微分方式。本文将深入介绍 AI 框架离不开的核心功能:自动微分。 而自动微分则是分为前向微分和后向微分两种实现模式,不同的实现模式有不同的机制和计算逻辑,而无论哪种模式都离不开雅克比矩阵,所以我们也会深入了解一下雅克比矩阵的原理。 雅克比矩阵 在向量微积分中,Jac 阅读全文
posted @ 2024-12-14 00:15
日照金城
阅读(28)
评论(0)
推荐(0)
摘要:
自动微分(Automatic Differentiation,AD)是一种对计算机程序进行高效准确求导的技术,一直被广泛应用于计算流体力学、大气科学、工业设计仿真优化等领域。 近年来,机器学习技术的兴起也驱动着对自动微分技术的研究进入一个新的阶段。随着自动微分和其他微分技术研究的深入,其与编程语言、 阅读全文
posted @ 2024-12-14 00:15
日照金城
阅读(76)
评论(0)
推荐(0)
摘要:
内容介绍 这一篇幅里面主要是围绕 AI 框架、或者训练平台的自动微分功能。AI 框架中关于自动微分的一个重要性不言而喻,实际上自动微分是贯穿整个 AI 框架的全流程。没有了自动微分,也就没有了 AI 框架最核心的功能。为什么这么说呢?可以想象一下,假设在实现一个神经网络模型的时候,一般开发者只会使用 阅读全文
posted @ 2024-12-14 00:14
日照金城
阅读(32)
评论(0)
推荐(0)
摘要:
本文将会介绍华为自研AI框架昇思MindSpore,这是一个面向全场景设计的AI计算框架,旨在为AI算法研究和生产部署提供一个统一、高效、安全的平台。接下来,将详细阐述MindSpore的定位、架构、特性、以及其在端边云全场景下的应用和优势。 MindSpore 基本介绍 MindSpore定位 昇 阅读全文
posted @ 2024-12-14 00:12
日照金城
阅读(50)
评论(0)
推荐(0)
摘要:
编程范式、编程范型、或程式设计法(Programming paradigm),是指软件工程中的一类典型的编程风格。常见的编程范型有:函数式编程、命令式编程、声明式编程、面向对象编程等等,编程范式提供并决定了开发者对程序执行的看法。在开发者使用 AI 框架进行编程的过程中,主要使用到的编程范式主要有 阅读全文
posted @ 2024-12-14 00:11
日照金城
阅读(21)
评论(0)
推荐(0)
摘要:
在前面的内容主要是讲述了 AI 框架在数学上对自动微分进行表达和处理,最后表示称为开发者和应用程序都能很好地去编写深度学习中神经网络的工具和库,整体流程如下所示: 除了要回答最核心的数学表示原理以外,实际上 AI 框架还要思考和解决许多问题,如 AI 框架如何对实际的神经网络实现多线程算子加速?如何 阅读全文
posted @ 2024-12-14 00:10
日照金城
阅读(41)
评论(0)
推荐(0)
摘要:
深度学习范式主要是通过发现经验数据中,错综复杂的结构进行学习。通过构建包含多个处理层的计算模型(网络模型),深度学习可以创建多个级别的抽象层来表示数据。例如,卷积神经网络 CNN 可以使用大量图像进行训练,例如对猫狗分类去学习猫和狗图片的特征。这种类型的神经网络通常从所采集图像中,包含的像素进行学习 阅读全文
posted @ 2024-12-14 00:10
日照金城
阅读(26)
评论(0)
推荐(0)
摘要:
什么是 AI 算法?什么是神经网络?神经网络有什么用?为什么神经网络需要训练?什么是模型?AI 框架有什么用?AI 框架能解决什么问题? 上面的几个问题其实还挺有挑战的,也是本文需要回答的一个问题。下面来对一些基础概念进程澄清:首先深度学习是机器学习研究领域中的一种范式,而深度学习的概念源于对人工神 阅读全文
posted @ 2024-12-14 00:09
日照金城
阅读(28)
评论(0)
推荐(0)
摘要:
从前文的简单介绍中,我们提到了可以从内存布局上对推理引擎的 Kernel 进行优化,接下来,我们将先介绍 CPU 和 GPU 的基础内存知识,NCHWX 内存排布格式以及详细展开描述 MNN 这个针对移动应用量身定制的通用高效推理引擎中通过数据内存重新排布进行的内核优化。 内存 CPU 内存主要架构 阅读全文
posted @ 2024-12-14 00:09
日照金城
阅读(55)
评论(0)
推荐(0)
摘要:
QNNPACK(Quantized Neural Networks PACKage 是 Marat Dukhan (Meta) 开发的专门用于量化神经网络计算的加速库,其卓越的性能表现一经开源就击败了几乎全部已公开的加速算法。到目前为止,QNNPACK 仍然是已公开的,用于移动端(手机)的,性能最优 阅读全文
posted @ 2024-12-14 00:08
日照金城
阅读(38)
评论(0)
推荐(0)
摘要:
在上一篇文章的介绍中,介绍了 Im2Col 技术,它通过将三维张量重新排列成矩阵形式,然后利用基于内存访问局部性的优化库如 GEMM(通用矩阵乘法库)加速计算。随后,还探讨了空间组合优化,这一种利用局部性原理来提升效率的技术。 在本文将重点介绍 Winograd 优化算法,它是矩阵乘优化方法中 Co 阅读全文
posted @ 2024-12-14 00:08
日照金城
阅读(63)
评论(0)
推荐(0)
摘要:
作为早期的 AI 框架,Caffe 中卷积的实现采用的是基于 Im2Col 的方法,至今仍是卷积重要的优化方法之一。 从上一篇文章的介绍中可以看到,在 CNN 中卷积直接计算的定义中,卷积核在输入图片上滑动,对应位置的元素相乘后相加求和,滑窗的大小由卷积核决定。由于滑动操作时的窗口的数据横向是连续的 阅读全文
posted @ 2024-12-14 00:07
日照金城
阅读(64)
评论(0)
推荐(0)
摘要:
卷积是神经网络里面的核心计算之一,它是一种特殊的线性运算。而卷积神经网络(CNN)是针对图像领域任务提出的神经网络,其受猫的视觉系统启发,堆叠使用卷积层和池化层提取特征。它在 CV 领域方面的突破性进展引领了深度学习的热潮。 回到卷积本身,其变种丰富、计算复杂,神经网络运行时大部分时间都耗费在计算卷 阅读全文
posted @ 2024-12-14 00:07
日照金城
阅读(99)
评论(0)
推荐(0)
摘要:
推理引擎的 Kernel 层通常是推理引擎中用于执行底层数学运算的组件。在神经网络模型推理过程中,需要对大量数据进行高效的数学运算,如矩阵乘法、卷积、池化等。Kernel 层就是实现这些运算的核心部分,它直接影响着推理引擎的速度和效率,因此本文将会重点介绍 Kernel 层相关的内容。 Kernel 阅读全文
posted @ 2024-12-14 00:06
日照金城
阅读(106)
评论(0)
推荐(0)
摘要:
除了前面提到的算子替换和算子前移等内容,本文内容将深入探讨计算图的优化策略,我们将细致分析图优化的其他重要内容,如改变数据节点的数据类型或存储格式来提升模型性能,以及优化数据的存储和访问方式以降低内存占用和数据访问时间。以上内容的理解和掌握,对于高效利用计算资源,提升算法性能具有至关重要的作用。 融 阅读全文
posted @ 2024-12-14 00:05
日照金城
阅读(44)
评论(0)
推荐(0)
摘要:
上一篇文章主要回顾了计算图优化的各个组成部分,包括基础优化、扩展优化以及布局和内存优化。这些优化方式在预优化阶段、优化阶段和后优化阶段都有所应用,以提高计算效率。同时,还介绍了 AI 框架和推理引擎在图优化方面的不同应用和侧重点。接下来,我们从计算图优化的各个组成部分开始逐步进行讲解。 基础图优化方 阅读全文
posted @ 2024-12-14 00:05
日照金城
阅读(28)
评论(0)
推荐(0)
摘要:
本文将会介绍推理引擎转换中的图优化模块,该模块负责实现计算图中的各种优化操作,包括算子融合、布局转换、算子替换和内存优化等,以提高模型的推理效果。计算图是一种表示和执行数学运算的数据结构,在机器学习和深度学习中,模型的训练和推理过程通常会被表示成一个复杂的计算图,其中节点代表运算操作,边代表数据(通 阅读全文
posted @ 2024-12-14 00:04
日照金城
阅读(74)
评论(0)
推荐(0)
摘要:
用户在使用 AI 框架时,可能会遇到训练环境和部署环境不匹配的情况,比如用户用 Caffe 训练好了一个图像识别的模型,但是生产环境是使用 TensorFlow 做预测。 因此就需要将使用不同训练框架训练出来的模型相互联系起来,使用户可以进行快速的转换。模型转换主要有直接转换和规范式转换两种方式,本 阅读全文
posted @ 2024-12-14 00:04
日照金城
阅读(84)
评论(0)
推荐(0)
摘要:
模型转换涉及对模型的结构和参数进行重新表示。在进行模型转换时,通常需要理解模型的计算图结构,并根据目标格式的要求对其进行调整和转换,可能包括添加、删除或修改节点、边等操作,以确保转换后的计算图能够正确地表示模型的计算流程。 本文主要介绍自定义计算图的方法以及模型转换的流程和细节。 计算图定义回顾 转 阅读全文
posted @ 2024-12-14 00:04
日照金城
阅读(33)
评论(0)
推荐(0)
摘要:
在训练好一个模型后,需要将其保存下来,以便在需要时重新加载并进行推理或进一步的训练。为了实现这一目标,需要一种有效的方式来将模型的参数、结构等保存起来。 本文主要介绍在推理引擎中,针对神经网络模型的序列化与反序列化、不同的模型序列化方法,以及 Protobuf 和 FlatBuffers 两种在端侧 阅读全文
posted @ 2024-12-14 00:03
日照金城
阅读(62)
评论(0)
推荐(0)
摘要:
模型转换的主要任务是实现模型在不同框架之间的流转。随着深度学习技术的发展,训练框架和推理框架的功能逐渐分化。训练框架通常侧重于易用性和研究人员的算法设计,提供了分布式训练、自动求导、混合精度等功能,旨在让研究人员能够更快地生成高性能模型。 而推理框架则更专注于针对特定硬件平台的极致优化和加速,以实现 阅读全文
posted @ 2024-12-14 00:03
日照金城
阅读(52)
评论(0)
推荐(0)
摘要:
本文将介绍知识蒸馏(Knowledge Distillation, KD)的原理,这是一种通过从大型的教师模型向小型的学生模型转移知识来实现模型压缩和优化的技术。知识蒸馏的核心思想是利用教师模型在大量数据上积累的丰富知识,通过特定的蒸馏算法,使学生模型能够学习并吸收这些知识,从而达到与教师模型相似的 阅读全文
posted @ 2024-12-14 00:02
日照金城
阅读(194)
评论(0)
推荐(0)
摘要:
本文将介绍模型剪枝的概念、方法和流程,这是一种通过移除神经网络中的冗余或不重要参数来减小模型规模和提高效率的模型压缩技术。 剪枝不仅可以减少模型的存储和计算需求,还能在保持模型性能的同时提高模型的泛化能力。我们将探讨剪枝的定义、分类、不同阶段的剪枝流程,以及多种剪枝算法,包括基于参数重要性的方法、结 阅读全文
posted @ 2024-12-14 00:02
日照金城
阅读(94)
评论(0)
推荐(0)
摘要:
本文将会重点介绍训练后量化技术的两种方式:动态和静态方法,将模型权重和激活从浮点数转换为整数,以减少模型大小和加速推理。并以 KL 散度作为例子讲解校准方法和量化粒度控制来平衡模型精度和性能。 训练后量化的方式 训练后量化的方式主要分为动态和静态两种。 动态离线量化 动态离线量化(Post Trai 阅读全文
posted @ 2024-12-14 00:01
日照金城
阅读(80)
评论(0)
推荐(0)
摘要:
本文将会介绍感知量化训练(QAT)流程,这是一种在训练期间模拟量化操作的方法,用于减少将神经网络模型从 FP32 精度量化到 INT8 时的精度损失。QAT 通过在模型中插入伪量化节点(FakeQuant)来模拟量化误差,并在训练过程中最小化这些误差,最终得到一个适应量化环境的模型。 文中还会讨论伪 阅读全文
posted @ 2024-12-14 00:00
日照金城
阅读(119)
评论(0)
推荐(0)
摘要:
计算机里面数值有很多种表示方式,如浮点表示的 FP32、FP16,整数表示的 INT32、INT16、INT8,量化一般是将 FP32、FP16 降低为 INT8 甚至 INT4 等低比特表示。 模型量化则是一种将浮点值映射到低比特离散值的技术,可以有效的减少模型的参数大小、内存消耗和推理延迟,但往 阅读全文
posted @ 2024-12-14 00:00
日照金城
阅读(35)
评论(0)
推荐(0)

浙公网安备 33010602011771号