昇思MindSpore学习入门-静态图像加速

使用静态图加速

背景介绍

AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。两种运行模式的详细介绍如下:

动态图模式

动态图的特点是计算图的构建和计算同时发生(Define by run),其符合Python的解释执行方式,在计算图中定义一个Tensor时,其值就已经被计算且确定,因此在调试模型时较为方便,能够实时得到中间结果的值,但由于所有节点都需要被保存,导致难以对整个计算图进行优化。

在MindSpore中,动态图模式又被称为PyNative模式。由于动态图的解释执行特性,在脚本开发和网络流程调试过程中,推荐使用动态图模式进行调试。 如需要手动控制框架采用PyNative模式,可以通过以下代码进行网络构建:

静态图模式

相较于动态图而言,静态图的特点是将计算图的构建和实际计算分开(Define and run)。有关静态图模式的运行原理,可以参考静态图语法支持。

在MindSpore中,静态图模式又被称为Graph模式,在Graph模式下,基于图优化、计算图整图下沉等技术,编译器可以针对图进行全局的优化,获得较好的性能,因此比较适合网络固定且需要高性能的场景。

如需要手动控制框架采用静态图模式,可以通过以下代码进行网络构建:

静态图模式的使用场景

MindSpore编译器重点面向Tensor数据的计算以及其微分处理。因此使用MindSpore API以及基于Tensor对象的操作更适合使用静态图编译优化。其他操作虽然可以部分入图编译,但实际优化作用有限。另外,静态图模式先编译后执行的模式导致其存在编译耗时。因此,如果函数无需反复执行,那么使用静态图加速也可能没有价值。

有关使用静态图来进行网络编译的示例,请参考网络构建。

静态图模式开启方式

通常情况下,由于动态图的灵活性,我们会选择使用PyNative模式来进行自由的神经网络构建,以实现模型的创新和优化。但是当需要进行性能加速时,我们需要对神经网络部分或整体进行加速。MindSpore提供了两种切换为图模式的方式,分别是基于装饰器的开启方式以及基于全局context的开启方式。

基于装饰器的开启方式

MindSpore提供了jit装饰器,可以通过修饰Python函数或者Python类的成员函数使其被编译成计算图,通过图优化等技术提高运行速度。此时我们可以简单的对想要进行性能优化的模块进行图编译加速,而模型其他部分,仍旧使用解释执行方式,不丢失动态图的灵活性。无论全局context是设置成静态图模式还是动态图模式,被jit修饰的部分始终会以静态图模式进行运行。

在需要对Tensor的某些运算进行编译加速时,可以在其定义的函数上使用jit修饰器,在调用该函数时,该模块自动被编译为静态图。需要注意的是,jit装饰器只能用来修饰函数,无法对类进行修饰。jit的使用示例如下:

除使用修饰器外,也可使用函数变换方式调用jit方法,示例如下:

当我们需要对神经网络的某部分进行加速时,可以直接在construct方法上使用jit修饰器,在调用实例化对象时,该模块自动被编译为静态图。示例如下:

基于context的开启方式

context模式是一种全局的设置模式。代码示例如下:

静态图的语法约束

在Graph模式下,Python代码并不是由Python解释器去执行,而是将代码编译成静态计算图,然后执行静态计算图。因此,编译器无法支持全量的Python语法。MindSpore的静态图编译器维护了Python常用语法子集,以支持神经网络的构建及训练。详情可参考静态图语法支持。

JitConfig配置选项

在图模式下,可以通过使用JitConfig配置选项来一定程度的自定义编译流程,目前JitConfig支持的配置参数如下:

  • jit_level: 用于控制优化等级。
  • exec_mode: 用于控制模型执行方式。
  • jit_syntax_level: 设置静态图语法支持级别,详细介绍请见静态图语法支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

catia数控加工仿真铣平面粗加工

1,零件建模,毛坯建模 2 在毛坯上建立坐标系 3 添加资料刀具 4,双击对相关加工信息做设置 5 Roughing 加工设置 高亮红色区域是必选的,其他可以默认 6 完成加工仿真 7 加工余量

基于自然语言处理的智能客服系统构建:中文AI的实践智慧

基于自然语言处理的智能客服系统构建:中文AI的实践智慧 随着人工智能技术的飞速发展,智能客服系统已成为众多企业提升服务质量和效率的关键工具。在中文环境下构建这样一个系统,不仅要求技术方案能够精准理解中文的复杂性,还要能…

Upload-Labs靶场闯关

文章目录 Pass-01Pass-02Pass-03Pass-04Pass-05Pass-06Pass-07Pass-08Pass-09Pass-10Pass-11Pass-12Pass-13Pass-14Pass-15Pass-16Pass-17Pass-18Pass-19Pass-20 以下是文件上传绕过的各种思路,不过是鄙人做题记下来的一些思路笔记罢了。 GitHub靶场环境下载&#x…

mindspore打卡之量子概念和测量

mindspore打卡之量子概念和测量 mindspore打卡之量子测量 我们可以看到,采样1000中,00出现了503次,11出现了497次(由于测量具有随机性,每次运行结果会略有不同),采样结果符合概率分布&#xff0…

如果只能选一款老挝语翻译工具,那么只保留《老挝语翻译通》App!一款支持老挝文OCR识别提取文字的翻译神器!

准备去探索老挝这个国家,语言不同怎么办?推荐使用《老挝语翻译通》App,一款专为老挝语学习者和旅行者设计的翻译和学习工具,让你轻松掌握老挝语,无需打字对着说话就能翻译的老挝语翻译通,一定能得到你的认可…

基于C#在WPF中使用斑马打印机进行打印

最近在项目中接手了一个比较有挑战性的模块——用斑马打印机将需要打印的内容打印出来。苦苦折腾了两天,总算有所收获,就发到网上来骗骗分数-_-|| 项目中使用的打印机型号为GX430t的打印机,接手的时候,自己对于打印机这块儿是眼前…

C实现RPC远程调用(代码待验证)

C语言实现RPC远程调用 在不借助如ONC RPC、gRPC等专门RPC库的情况下,实现C语言的RPC远程调用将是一个相当复杂的任务,因为RPC通常涉及到网络通信、数据序列化/反序列化、远程过程调用机制等多个方面。然而,为了提供一个概念性的示例&#xf…

STM32第八课:Su-03t语音识别模块

文章目录 需求一、SU03T语音识别模块二、模块配置流程1.固件烧录2.配置串口和传输引脚3.中断函数4.double类型转换5 数据发送6.接收处理 三、该模块完整代码总结 需求 基于上次完成空气质量传感器,利用SU03T语音识别模块,实现空气质量的语音问答播报。 …

云端守护:在iCloud中管理设备安全更新的全面指南

🛡️ 云端守护:在iCloud中管理设备安全更新的全面指南 iCloud不仅是一个数据同步和备份的云服务,它还是确保你的Apple设备安全的重要工具。通过iCloud,你可以轻松管理设备的安全更新,确保它们始终运行最新、最安全的软…

(3)深入探索Python:条件语句、循环结构与函数定义的全面解析

目录 1. 前言2. 条件语句2.1 if 语句2.2 if else 语句2.3 if elif else 语句 3. 循环结构3.1for循环3.2 while循环 4. 函数定义5. 总结 1. 前言 在Python编程中,条件语句、循环结构和函数定义是构建程序逻辑的核心要素。它们不仅决定了程序的执行流程,还…

从零开始:如何设计一个现代化聊天系统

写在前面: 此博客内容已经同步到我的博客网站,如需要获得更优的阅读体验请前往https://mainjaylai.github.io/Blog/blog/system/chat-system 在当今数字化时代,聊天系统已成为我们日常生活和工作中不可或缺的一部分。从个人交流到团队协作,从客户服务到社交网络,聊天应用…

HY Lisp 读取宏(reader macro)学习

在学习HY lisp语言的时候HY编程快速入门实践课第三章 HY宏入门-CSDN博客,学习到了读取宏(reader macro),尝试将其概念弄明白。 首先,读取宏是Lisp语言中都有的一种概念,所以可以通过任意一种Lisp语言的文档…

免费可视化工具如何提升智慧物流管理效率

在现代智慧物流中,免费可视化工具正扮演着越来越重要的角色。这些工具通过数据的可视化展示,使物流管理更加高效、透明和智能化。免费可视化工具可以将复杂的物流数据转换为直观的图表和图形,帮助管理者实时监控和分析物流运作情况&#xff0…

Fork函数在操作系统中的作用与实现机制

Fork函数在操作系统中的作用与实现机制 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. Fork函数概述 在Unix/Linux操作系统中,fork函数是一个…

白骑士的Python教学进阶篇 2.2 异常处理

系列目录 上一篇:白骑士的Python教学进阶篇 2.1 面向对象编程(OOP) 在编写程序时,我们不可避免地会遇到各种各样的错误,这些错误可能来自于代码的逻辑错误、用户输入错误、外部资源问题等。异常处理是编程中处理这些错…

九浅一深Jemalloc5.3.0 -- ⑥浅*boot

目前市面上有不少分析Jemalloc老版本的博文,但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外,单讲实现代码是…

ansible基础用法

一、环境介绍 操作系统主机IP角色主机名centos7.5192.168.1.18ansible-servernode2centos7.5192.168.1.19ansible-clientnode3 二、安装epel yum源 1.下载epel yum源 yum -y install epel-release[rootnode2 ~]# yum list |grep ^ansible ansible.noarch …

第二证券:可转债基础知识?想玩可转债一定要搞懂的交易规则!

可转债,全称是“可转化公司债券”,是上市公司为了融资,向社会公众所发行的一种债券,具有股票和债券的双重特点,投资者可以选择按照发行时约定的价格将债券转化成公司一般股票,也可作为债券持有到期后收取本…

Load Tensor to local Nvidia GPU

0. 安装Nvidia驱动 ubuntu24.04的安装非常简单,在安装界面,选择为"图形化和其他硬件安装驱动",重启后即有原版Nvidia驱动(如图Nvidia X xxx) 1.确定电脑上是否有NvidiaGPU且安装好Nvidia驱动 import torch print(torch.version…

机器学习 C++ 的opencv实现SVM图像二分类的训练 (二)【附源码】

本节讲机器学习 C 的opencv实现SVM图像二分类的训练&#xff0c;下节讲测试&#xff1a; 数据集合data内容如下&#xff1a; 下载地址为&#xff1a;https://download.csdn.net/download/hgaohr1021/89506900 #include <stdio.h> #include <time.h> #include…