目录
1. 环境准备
进入自动化向量Vmap官网链接
https://www.mindspore.cn/tutorials/experts/zh-CN/r2.0.0-alpha/vmap/vmap.html
点击”在ModelArts平台运行“
选择python3.7.10 CPU
2. 向量化思维
使用向量化思维可以大大简化数据处理和模型设计的复杂度,实现更高效,更准确的计算和模型训练。
3. 手动向量化
手动向量化将代码从一次处理一个数值变成一次处理一组数据。通过调用for循环来对数据进行批处理, 提高了计算效率,并且减少内存访问次数,但是可读性降低,对于不熟悉向量计算的人来讲,会比较难以理解,编程难度也随之增加。
开始体验
构造一个简单的卷积函数
mindspore代码未安装
先安装一下
输入 pip install mindspore==2.0.0-alpha
安装成功
再次复制代码到里面
用for循环进行批量处理
重写函数实现更高效率的向量化计算逻辑 , 不过随着维度的增加,代码可读性降低
4. 自动向量化
自动向量化是将代码翻译成向量指令的过程,以便计算机可以同时执行多个操作,可以提高计算效率,且代码简洁
mindspore的vmap自动化向量可以减少开发人员的工作量,且支持CPU和GPU等平台
仅需调用一个接口即可函数转换为向量化形式
mindspore.vmap 是用于沿参数轴映射函数 fn 的高阶函数
其入参有三个fn in_axes out_axes
上面那个简单的示例并没有给定in_axes out_axes
下面的示例输入了in_axes和out_axes in_axes=(0, 1), out_axes=1
也可以不沿任何轴进行处理,输入的位置配置为None即可
4.1 高阶函数的嵌套
vmap
与vmap
嵌套使用,应用于两层以上的批处理逻辑
grad+vmap嵌套
4.2. Cell的自动向量化
就是把函数换成类(Cell示例),输入vmap即可,从vmap的定义看到,vmap的第一个参数允许输入类型有Cell, Function, CellList
4.3 模型集成场景
多个模型实例以CellList
的形式传入给vmap
nets = nn.CellList([net1, net2, net3, net4])
然后再把nets传给vmap
体验结束~~~