昇思MindSpore“自动向量化Vmap”介绍与示例

简介: 昇思MindSpore“自动向量化Vmap”介绍与示例

🍁一、什么是“自动向量化Vmap”

自动向量化Vmap官方地址 👉  MindSpore

这应该是非常常见的问题了:自动向量化Vmap是MindSpore深度学习框架中的一个重要特性,用于自动地将数据并行化执行,以提高深度神经网络的计算性能。



概念上,Vmap可以将一个函数应用于一个具有特定形状的N维数组,并自动地将该函数复制到每个数组中的元素,从而实现批量计算的目的。也就是说,通过Vmap技术,可以将运算符应用于整个张量,而不是一次操作其中的每个元素,从而快速地对张量进行操作和转换,将输入和输出都分割成多个分块并分配到多个设备上进行并行处理,可以加快模型的训练和推理速度。

🍁二、 “自动向量化Vmap”有哪些优势

由于在实现过程上,MindSpore的Vmap特性涉及了多个类和函数,包括@vmapipe修饰器、map函数和unroll函数等。其中,@vmapipe修饰器可以将函数转换为自动并行计算函数,Map函数可用于将函数应用于数据集的批处理样本,Unroll函数可将计算循环展开为具有指定维度的代码。通过这些函数的组合使用,可以在MindSpore框架中实现自动向量化的Vmap特性,以提高神经网络的计算性能和效率


总之、MindSpore的自动向量化Vmap特性是一项非常有价值的功能,它可以大幅度提高深度学习算法的运算速度,减少需要的计算资源,同时还可以有效地加速模型的训练和推断过程,进一步推进深度学习技术的应用和发展。


如果还想了解更多“自动向量化Vmap”的优势和特点可以访问官方文档,非常的详细

effafb6b64c740b28c7591f98aa1b8fc.png

🍁三、 “自动向量化Vmap”在实际例子的简单使用

下面以一个简单的例子【Python版】来说明自动向量化Vmap的具体实现过程

假设我们需要对一个形状为(4, 5)的二维张量进行操作,具体步骤如下:

首先肯定是要导入MindSpore相关模块和库:

import mindspore.numpy as np
import mindspore.ops.operations as P
from mindspore import Tensor
from mindspore import context
from mindspore.parallel._auto_parallel_context import auto_parallel_context

其他的部分代码如下:

# 设置运行上下文和设备,开启自动并行计算。
context.set_context(mode=context.GRAPH_MODE, device_target="GPU")
auto_parallel_context().set_straegy("auto_parallel")
# 定义需要进行的操作函数。
def matmul_add(x, y):
    z = P.MatMul()(x, y)
    z = P.Add()(z, 1)
    return z
# 创建数据集,并将数据集分成多个分块以便并行处理。
x_data = np.ones((4, 5))
y_data = np.ones((5, 4))
data1 = Tensor(x_data[:2], dtype=np.float32)
data2 = Tensor(y_data, dtype=np.float32)
data3 = Tensor(x_data[2:], dtype=np.float32)
data_list = [(data1, data2), (data2, data3)]
# 使用@vmapipe修饰器和Map函数将操作函数应用于数据集,并获得结果数据。
@np.vmapipe(model_parallel=2)
def forward(x, y):
    return np.array(matmul_add(x, y))
result_list = np.array(list(map(forward, *data_list))))
# 使用unroll函数对计算循环进行展开。
result = np.unroll(result_list, -1)

最后,我们就可以使用自动向量化Vmap特性对二维张量进行自动并行计算,获得更高的计算效率和速度。其中,@vmapipe修饰器指定了model_parallel参数为2,表示使用2个设备进行并行计算,Map函数将操作函数应用于数据集,并返回结果数据,unroll函数可将计算循环展开为具有指定维度的代码。  

相关文章
|
4月前
|
数据采集 自然语言处理 前端开发
社区供稿 | 猎户星空百亿参数大模型 Orion-14B系列开源,一张3060就能跑(附魔搭社区推理微调最佳实践)
1月21日,傅盛在猎户星空大模型发布会上宣布,“为企业应用而生” 的开源百亿参数猎户星空大模型正式发布。猎户星空大模型(Orion-14B)是由猎户星空研发的预训练多语言大语言模型,以其140亿参数规模展现出了卓越的性能。
|
1月前
|
存储 人工智能 JSON
|
1月前
|
数据采集 人工智能 监控
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
Label-LLM 是一款专为大模型训练设计的多模态文本对话标注工具,支持团队协作,让标注工作变得简单高效。它不仅涵盖丰富的任务类型,如回答采集、偏好收集和内容评估等,还支持多模态数据标注,包括图像、视频和音频。Label-LLM具备预标注载入功能,能大幅提升工作效率,并提供全方位的任务管理与可视化分析,确保标注质量。快来体验这款强大的标注平台吧![部署文档](https://github.com/opendatalab/LabelLLM)
176 0
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
57 1
|
2月前
|
机器学习/深度学习 并行计算 PyTorch
PyTorch | 加速模型训练的妙招
PyTorch | 加速模型训练的妙招
20 0
|
4月前
|
人工智能 Serverless 文件存储
“黏土风格”轻松拿捏,基于函数计算部署 ComfyUI实现AI生图
使用阿里云函数计算FC,快速部署AI绘画工具ComfyUI,体验高质量图像生成。新用户可享180元试用额度,包括GPU、vCPU、内存和调用次数。开通FC和文件存储NAS,通过应用中心选择ComfyUI模板创建应用。
47361 8
“黏土风格”轻松拿捏,基于函数计算部署 ComfyUI实现AI生图
|
4月前
|
数据采集 人工智能 PyTorch
极智AI | 昇腾CANN ATC模型转换
大家好,我是极智视界,本文介绍一下 昇腾 CANN ATC 模型转换。
309 0
|
4月前
|
人工智能 自然语言处理 测试技术
多模态大模型有了统一分割框架,华科PSALM多任务登顶,模型代码全开源
【4月更文挑战第24天】华中科技大学团队推出PSALM模型,革新多模态图像分割,实现语义、实例及交互式分割任务统一处理,提升效率。模型在多项基准测试中表现优异,支持零样本学习,适用于开放词汇分割等任务。代码开源促进研究,但面临复杂场景处理和计算资源优化的挑战。[链接](https://arxiv.org/abs/2403.14598)
179 2
|
4月前
|
存储 自然语言处理 负载均衡
元象开源首个MoE大模型:4.2B激活参数,效果堪比13B模型,魔搭社区最佳实践来了
近日,元象发布其首个Moe大模型 XVERSE-MoE-A4.2B, 采用混合专家模型架构 (Mixture of Experts),激活参数4.2B,效果即可媲美13B模型。该模型全开源,无条件免费商用,支持中小企业、研究者和开发者可在元象高性能“全家桶”中按需选用,推动低成本部署。
|
4月前
|
人工智能 并行计算 PyTorch
极智AI | 教你tensorrt实现mish算子
本文介绍了使用 tensorrt 实现 mish 算子的方法。
103 1