当前位置:   article > 正文

华为学习记录3 Mindspore的基础使用操作_mindspore使用

mindspore使用

常用的AI框架:

TensorFlow、pytorch、Keras、Mindspore、paddlepaddle

其中TensorFlow 0.x,1.x版本采用的是静态图,不容易debug;pytorch是动态图。

Mindspore有个mode选择,选择使用静态图还是动态图进行训练。

这里解释一下动态图和静态图的概念:

MindSpore静态图: Graph模式,可以通过set_context(mode=GRAPH_MODE),默认模式。

        在Graph模式下,Mindspore通过源码转换的方式,将python的源码转换成IR(MindIR)再在此基础上进行相关的图优化,最终再硬件设备上执行优化后的图。

        使用Graph模式时,需要使用nn.cell类并且在construcrt函数中编写执行代码,或者调用@ms_function装饰器。

        Graph模式是基于MindIR进行编译优化的。

代码实现:

  1. import numpy as np
  2. import mindspore.nn as nn
  3. import mindspore.ops as ops
  4. import mindspore as ms
  5. ms.set_context(mode=ms.GRAPH_MODE,device_target="CPU")
  6. class Net(nn.Cell):
  7. def __init__(self):
  8. super(Net,self).__init__()
  9. self.mul = ops.Mul()
  10. def construct(self,x,y):
  11. return self.mul(x,y)
  12. x = ms.Tensor(np.array([1,2,3]).astype(np.float32))
  13. y = ms.Tensor(np.array([4,5,6]).astype(np.float32))
  14. net = Net()
  15. print(net(x,y))

 我们加一下记录时间看看。

  1. t1 = time.time()
  2. ms.set_context(mode=ms.PYNATIVE_MODE,device_target="CPU") # 动态图
  3. x = ms.Tensor(np.ones([1,3,3,4]))
  4. y = ms.Tensor(np.ones([1,3,3,4]))
  5. z = ops.add(x,y)
  6. print(z.shape)
  7. print(f'{time.time()-t1}s')

 

 动态图是直接计算出结果的,在底层是没有做优化的,所以效率是不如静态图的.

 

 

         

神经网络中的运算大部分是矩阵运算,还有一些其他运算, 所以会将不同的算子进行切分,将内存消耗大的切分到CPU,内存消耗小的密集型算子切分到硬件加速子图,框架协同不同子图进行网络训练,使得处于不同硬件且无依赖关系的子图能够并行进行执行的过程.

Mindspore中的开发组件:

        1.推理部署流程

在线推理和离线推理.

Serving:

使用方式:gRPC接口\RESTful接口\Servable

可视化: 

 

MindSpore Reinforcement: 开源的强化学习框架,支持使用强化学习算法对agent 进行分布式训练.

MindSpore Federated:联邦学习是一种加密的分布式机器学习技术,它可以支持机器学习的各参与方在不直接共享本地数据的前提下,共建AI模型.支持千万级五张太终端设备的商用化部署.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/843500
推荐阅读
  

闽ICP备14008679号