首页 > 其他分享 >深度学习:计算性能

深度学习:计算性能

时间:2022-09-18 09:13:11浏览次数:76  
标签:Python 性能 编程 add 学习 PyTorch 命令式 深度 GPU

1、命令式和符号式混合编程

命令式编程,它使用编程语句改变程序状态:

def add(a, b):
    return a + b

def fancy_func(a, b, c, d):
    e = add(a, b)
    f = add(c, d)
    g = add(e, f)
    return g

fancy_func(1, 2, 3, 4)

在运行语句e = add(a, b)时,Python会做加法运算并将结果存储在变量e中,从而令程序的状态发生改变。类似地,后面的2条语句f = add(c, d)和g = add(e, f)会依次做加法运算并存储变量。

与命令式编程不同,符号式编程通常在计算流程完全定义好后才被执行符号式编程的程序需要下面3个步骤:

  • 定义计算流程;
  • 把计算流程编译成可执行的程序;
  • 给定输入,调用编译好的程序执行。

对比这两种编程方式:

  • 命令式编程更方便。当我们在Python里使用命令式编程时,大部分代码编写起来都很直观。同时,命令式编程更容易调试。这是因为我们可以很方便地获取并打印所有的中间变量值,或者使用Python的调试工具。
  • 符号式编程更高效并更容易移植。一方面,在编译的时候系统容易做更多优化;另一方面,符号式编程可以将程序变成一个与Python无关的格式,从而可以使程序在非Python环境下运行,以避开Python解释器的性能问题。

大部分深度学习框架在命令式编程和符号式编程之间二选一。

  • TensorFlow使用了符号式编程
  • PyTorch使用了命令式编程
  • Gluon提供混合式编程
    • 在混合式编程中,我们可以通过使用HybridBlock类或者HybridSequential类构建模型。
    • 默认情况下,它们和Block类或者Sequential类一样依据命令式编程的方式执行。
    • 当我们调用hybridize函数后,Gluon会转换成依据符号式编程的方式执行。

2、 异步计算

异步计算:当你调用一个使用GPU的函数时,操作会排队到特定的设备上,但不一定要等到以后才执行。

在诸多的深度学习框架中,

  • MXNet和TensorFlow之类则采用了一种异步编程(asynchronous programming)模型来提高性能,
  • 而PyTorch则使用了Python自己的调度器来实现不同的性能权衡。对于PyTorch来说GPU操作在默认情况下是异步的。

通过后端异步处理

标签:Python,性能,编程,add,学习,PyTorch,命令式,深度,GPU
From: https://www.cnblogs.com/caolanying/p/16704187.html

相关文章

  • ML第24周学习小结
    本周收获总结一下本周学习内容:1、《深度学习》第七章:优化算法7.1优化与深度学习~7.8Adam算法......
  • ML-高级集成学习:混合
    ML-高级集成学习:混合混合混合与堆叠非常相似。它还使用基础模型将基础预测作为新特征提供,并在新特征上训练新元模型以提供最终预测。唯一的区别是元模型的训练是在一个......
  • SpringCloud学习笔记(二)——Eureka(注册中心)
    一、Eureka简介 二、Eureka快速入门2.1搭建Eureka-Server首先新建一个maven项目:   这里src删除掉就可以了。   在项目下新建一个module(maven类型的):......
  • Day3 java数组和方法的学习
    Day3Java方法什么是方法理解上,方法和C++的函数差不多,即实现某个功能语句块的集合,尽量保证一个方法只完成一个功能。命名规则,首字母小写后面新单词大写类似studentLe......
  • 深度学习库 SynapseML for .NET 发布0.1 版本
    2021年11月微软开源一款简单的、多语言的、大规模并行的机器学习库SynapseML(以前称为MMLSpark),以帮助开发人员简化机器学习管道的创建。具体参见[1]微软深度学习库Synap......
  • 【AGC】集成性能管理1.6.1.301版本SDK报错问题
    ​【问题描述】近期有些开发者更新了性能管理最新的1.6.1.301版本SDK,但是编译时出现了以下错误:​ 【分析复现】该问题看报错信息是未找到“com.huawei.hms:hianalyti......
  • 钱包助记词学习备录
    区块链课程:https://github.com/biquanlibai/blockchain-course原理:https://jinzhijun.cn/develop/1208https://jinzhijun.cn/develop/1198 钱包助记词之所以在不同的......
  • MarkDown学习
    Markdown学习#+空格=一级标题二级标题##+空格=二级标题三级标题###+空格=三级标题同理,往后每增加一级添加一个井号,最多支持六级字体Hello,World!前后两个*......
  • 学习笔记-涛讲F#(基础 II)
    目录处理一堆数组织代码(命名空间、模块)使用联合重命名类型类必须显式转换成接口对象表达式递归函数CPS解决堆栈溢出扩展一个类型静态解析的类型参数ref变量的实现原理及应......
  • 【django学习-11】模板3:自定义标签与过滤器
    前言:Django虽然内置了二十多种标签和六十多种过滤器,但是为了给Web开发者提供更好使用体验,Django也提供了自定义标签与过滤器的功能。当内置标签与过滤器满足不了实际......