• 《昇思25天学习打卡营第5天|10使用静态图加速》


    写在前面

    跳过了模型训练和保存两节,模型训练的例子已经学习过,都是重复的内容,不进行详细的学习了,除非要使用类似的函数。
    因此接下来开始学习初学教程的最后一节:使用静态图加速,希望能学习到一些内容。

    动态图

    看了mindspore介绍,应该整体思路是和tensorflow2.0更接近的,或者说是融合了pytorch+tensorflow+numpy,也不能说不好,但是暂时还没看出来有哪些特别的优势。
    下面是类似pytorch eager模式的使用例子:

    import numpy as np
    import mindspore as ms
    from mindspore import nn, Tensor
    ms.set_context(mode=ms.PYNATIVE_MODE)  # 使用set_context进行动态图模式的配置
    
    class Network(nn.Cell):
        def __init__(self):
            super().__init__()
            self.flatten = nn.Flatten()
            self.dense_relu_sequential = nn.SequentialCell(
                nn.Dense(28*28, 512),
                nn.ReLU(),
                nn.Dense(512, 512),
                nn.ReLU(),
                nn.Dense(512, 10)
            )
    
        def construct(self, x):
            x = self.flatten(x)
            logits = self.dense_relu_sequential(x)
            return logits
    
    model = Network()
    input = Tensor(np.ones([64, 1, 28, 28]).astype(np.float32))
    output = model(input)
    print(output)
    

    好奇为什么可以直接进行推理,dense中的w和b都还没有定义呢,查看一下:

    import mindspore as ms
    from mindspore import nn
    
    # 创建一个Dense层
    dense_layer = nn.Dense(28*28, 512)
    
    # 打印初始化的权重和偏置
    print("Weights:", dense_layer.weight.asnumpy())
    print("Bias:", dense_layer.bias.asnumpy())
    

    结果如下:
    在这里插入图片描述
    看起来是一些随机值。

    静态图

    装饰器

    使用较简单的装饰器方式,对静态图进行加速。
    在这里插入图片描述
    也可以直接调用装饰器函数
    在这里插入图片描述
    局部加速方法:
    在这里插入图片描述

    context维度开启加速

    在这里插入图片描述
    直接通过设置变量,进行全局的加速。

    看了上面两个加速方式,这里做的还是比较好的。
    由于我接触过torch_npu,知道他们是能完全向pytorch进行兼容的,看来底层的ascend算子抽离的还是不错的,除此之外也一定是能兼容tensorflow的。然后还独自揉了一个mindspore,是花了不少人力物力的,如果没有真正的商业化起来,可能亏损比较大了。还是希望能做好的。

    打卡

    在这里插入图片描述
    完成本节,几乎就完成了新手村的一些例子。接下来希望可以学习一些大语言模型或者并行训练的任务。

  • 相关阅读:
    SpringBoot SpringBoot 运维实用篇 2 配置高级 2.3 配置文件4级分类
    快速排序算法(思路分析) [数据结构][Java]
    XUnit数据共享与并行测试
    pygame4 练习课
    【java养成】:案例:学生管理系统、斗地主洗牌
    CTF-sql注入(X-Forwarded-For)【简单易懂】
    单向环形链表介绍以及约瑟夫问题分析
    【程序员最后的余温】
    docker安装RabbitMQ教程
    SRS之StateThreads学习
  • 原文地址:https://blog.csdn.net/hellozmz/article/details/140450464