玉溪市住房和建设局公布网站,做儿童文学有哪些的网站,请大学生做网站,模板网站可以做备案吗1.深度学习框架#xff08;Tensorflow、Pytorch#xff09; 1.1由来 可以追溯到2016年#xff0c;当年最著名的事件是alphago战胜人类围棋巅峰柯洁#xff0c;在那之后#xff0c;学界普遍认为人工智能已经可以在一些领域超过人类#xff0c;未来也必将可以在更多领域超过…1.深度学习框架Tensorflow、Pytorch 1.1由来 可以追溯到2016年当年最著名的事件是alphago战胜人类围棋巅峰柯洁在那之后学界普遍认为人工智能已经可以在一些领域超过人类未来也必将可以在更多领域超过人类所以时隔多年人工智能再次成为业界研究的热点但因为深度学习需要的计算量很大对硬件要求高过高的门槛很不利于技术的研发和推广所以出现了国外包括Tensorflow谷歌、Pytorch脸书Mxbet亚马逊国内包括MegEngine旷视天元paddlepaddle百度Mindspore华为TNN腾讯Jittor清华等开源深度学习框架可以提高计算速度减轻对硬件的依赖。 1.2作用 首先我们要明确深度学习是一个计算问题我们所采取的一切策略都是为了提高计算的便利性和速率。在这个基础上有了深度学习框架那么深度学习框架又是如何简化计算的呢通常可以归为三类
1.代替numpynumpy能实现数值计算使用GPU对Tensor进行操作实现神经网络的操作 补充1NumPy 是 Python 语言的一个第三方库其支持大量高维度数组与矩阵运算。此外NumPy 也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算NumPy 就成了必不可少的工具之一。 补充2随着数据爆炸式增长尤其是图像数据、音频数据等数据的快速增长NumPy的计算能力遇到了瓶颈迫切需要突破NumPy性能上的瓶颈最终在硬件和软件上都有了突破如硬件有GPU软件有Theano早期框架、TensorFlow算法有卷积神经网络、循环神经网络等。 GPU和CPU简单理解CPU一般由4或6个核组成以此模拟出8个或12个处理进程来运算。但普通的GPU就包含了几百个核高端的有上万个核如果把一个核视为一个并行计算路径CPU仅可以提供几个或者几十个并行计算的能力GPU可以提供几万个并行计算的能力。所以说GPU专门为人工智能开发并不为过。
2.提供自动求导/求微分/求梯度的机制让神经网络实现变得容易
3.内置许多基本网络组件比如全连接网络CNNRNN/LSTM等简化代码工作让研究者可以专注于模型设计等其他步骤减少编程。
1.3框架分析 一般来讲深度学习框架都包含以下五个核心组件 1.张量Tensor 补充可以简单理解为标量是0维张量向量是1维张量矩阵是二维张量将多个矩阵组合成一个新的数组可以得到一个 3维张量将多个 3维 张量组合成一个数组可以创建一个 4维 张量以此类推。深度学习处理的一般是 0维到 4维的张量但处理视频数据时可能会遇到5维张量。 延深 时间序列数据或序列数据3D 张量形状为 (samples, timesteps, features) 。 图像4D张量形状为 (samples, height, width, channels) 或 (samples, channels, height, width) 。 视频5D张量形状为 (samples, frames, height, width, channels) 或 (samples,frames, channels, height, width) 。
2.基于张量的各种操作 补充由于张量和张量的操作很多难以理清关系的话可能会引发许多问题比如多个操作之间应该并行还是顺次执行如何协同各种不同的底层设备以及如何避免各种类型的冗余操作等等。这些问题有可能拉低整个深度学习网络的运行效率或者引入不必要的Bug所以有了计算图的诞生。 3.计算图Computation Graph 补充计算图支持并行计算如下图所示为一个简单的计算图我们希望可以有固定的计算框架仅输入相应值便可以得到计算结果下图所包含的公式包括
GPU1① x*xa ② xyb
GPU2 ③y2c
结果④bcd 简单理解计算图可以简单理解为下图的计算框架我们仅用输入x3y4就可以通过并行计算快速得到结果而如果没有并行计算通常会按照①②③④的顺序进行串行计算效率就会大大下降。在深度学习计算中计算过程被分为无数个小模块进行并行计算大大提高了计算速率。 结论计算图的引入使得开发者可以从俯瞰神经网络的内部结构类似于编译器可以从整个代码的角度决定如何分配寄存器计算图也可以决定代码运行时的GPU内存分配以及分布式环境中不同底层设备间的相互协作方式。除此之外现在也有许多深度学习框架将计算图应用于模型调试可以实时输出当前某一操作类型的文本描述。
张量基于张量的各种操作计算图加速计算 4.自动微分Automatic Differentiation工具 传统求解微分方式的缺点针对一些非线性过程如修正线性单元ReLU或者大规模的问题使用符号微分法成本高甚至无法微分。 自动微分相对于传统符号微分法更加简单、高效、适应面更广。 5.BLAS、cuBLAS、cuDNN等拓展包运算库 问题人工智能编程现在主要使用Python虽然简单方便但高级语言也会比底层语言C消耗更多的CPU周期更这在深度神经网络上尤为明显因此运算缓慢就成了高级语言的缺陷。 解决为了提高运算速度就有了拓展包。最初用Fortran实现的BLAS basic linear algebra subroutine,基础线性代数子程序是一个非常优秀的基本矩阵张量运算库此外还有英特尔的MKLMath Kernel Library等开发者可以根据个人喜好灵活选择。一般的BLAS库只是针对普通的CPU场景进行了优化但目前大部分的深度学习模型都已经开始采用并行GPU的运算模式因此利用诸如NVIDIA推出的针对GPU优化的cuBLAS和cuDNN等更据针对性的库可能是更好的选择。 最后要注意一些部署模型加速的工具GPU英伟达的TensorRTCPU英特尔公司的OpenVINO 2.Ray 简介下一代人工智能应用程序将不断与环境交互并从这些交互中学习。这些应用程序在性能和灵活性方面都对系统提出了新的和苛刻的要求。在本文中我们考虑了这些需求并提出了一个分布式系统来解决这些需求。ray实现了一个统一的接口该接口可以表示任务并行计算和基于actor的计算并由单个动态执行引擎支持。为了满足性能要求Ray采用分布式调度程序和分布式容错存储来管理系统的控制状态。在我们的实验中我们展示了超越每秒180万个任务的扩展能力并且在一些具有挑战性的强化学习应用程序中比现有的专业系统具有更好的性能。 问题在强化学习中的进化策略论文《Evolution Strategies as a Scalable Alternative to Reinforcement Learning》中算法包含数十行伪代码其中的 Python 实现也并不多。然而在较大的机器或集群上运行它需要更多的软件工程工作。作者的实现包含了上千行代码以及必须定义的通信协议、信息序列化、反序列化策略以及各种数据处理策略。 解决Ray 可以实现让一个运行在笔记本电脑上的原型算法仅需添加数行代码就能轻松转为适合于计算机集群运行的或单个多核心计算机的高性能分布式应用。这样的框架需要包含手动优化系统的性能优势同时又不需要用户关心那些调度、数据传输和硬件错误等问题。 与深度学习框架Ray 与 TensorFlow、PyTorch 和 MXNet 等深度学习框架互相兼容可以在很多应用上在 Ray 中使用一个或多个深度学习框架都是非常自然的例如UC Berkeley 的强化学习库就用到了很多 TensorFlow 与 PyTorch。 参考文献
1.深度学习框架有什么作用_深度学习框架有什么用-CSDN博客
2.python学习笔记之numpy库的使用——超详细_手机插上u盘怎么传文件-CSDN博客
3. 什么是GPU跟CPU有什么区别终于有人讲明白了-CSDN博客
4.如何理解TensorFlow计算图 - 知乎
5.为什么Tensorflow需要使用图计算来表示计算过程-CSDN博客
6.什么是张量Tensor_醉Dowry的博客-CSDN博客
7.[深度学习]TensorRT为什么能让模型跑快快 - 知乎
8.PyTorch 分布式框架 Ray 保姆级入门教程_分布式自然进化策略使用pytorch和ray构建_HyperAI超神经的博客-CSDN博客9.伯克利AI分布式框架Ray兼容TensorFlow、PyTorch与MXNet-CSDN博客