当前位置: 首页 > news >正文

Tensorflow、Pytorch和Ray(张量,计算图)

1.深度学习框架(Tensorflow、Pytorch)

1.1由来

      可以追溯到2016年,当年最著名的事件是alphago战胜人类围棋巅峰柯洁,在那之后,学界普遍认为人工智能已经可以在一些领域超过人类,未来也必将可以在更多领域超过人类,所以时隔多年,人工智能再次成为业界研究的热点,但因为深度学习需要的计算量很大,对硬件要求高,过高的门槛很不利于技术的研发和推广,所以出现了国外包括:Tensorflow(谷歌)、Pytorch(脸书),Mxbet(亚马逊);国内包括:MegEngine(旷视天元),paddlepaddle(百度),Mindspore(华为),TNN(腾讯),Jittor(清华)等开源深度学习框架,可以提高计算速度,减轻对硬件的依赖。

1.2作用

      首先我们要明确,深度学习是一个计算问题,我们所采取的一切策略都是为了提高计算的便利性和速率。在这个基础上有了深度学习框架,那么深度学习框架又是如何简化计算的呢,通常可以归为三类:

1.代替numpy(numpy能实现数值计算)使用GPU对Tensor进行操作,实现神经网络的操作

      补充1:NumPy 是 Python 语言的一个第三方库,其支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算,NumPy 就成了必不可少的工具之一。

      补充2:随着数据爆炸式增长,尤其是图像数据、音频数据等数据的快速增长,NumPy的计算能力遇到了瓶颈,迫切需要突破NumPy性能上的瓶颈,最终在硬件和软件上都有了突破,如硬件有GPU,软件有Theano(早期框架)、TensorFlow,算法有卷积神经网络、循环神经网络等。

      GPU和CPU:简单理解,CPU一般由4或6个核组成,以此模拟出8个或12个处理进程来运算。但普通的GPU就包含了几百个核,高端的有上万个核,如果把一个核视为一个并行计算路径,CPU仅可以提供几个或者几十个并行计算的能力,GPU可以提供几万个并行计算的能力。所以说GPU专门为人工智能开发并不为过。


2.提供自动求导/求微分/求梯度的机制,让神经网络实现变得容易


3.内置许多基本网络组件,比如全连接网络,CNN,RNN/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*x=a ② x+y=b

GPU2 :③y+2=c

结果:④b+c=d

      简单理解:计算图可以简单理解为下图的计算框架,我们仅用输入x=3,y=4就可以通过并行计算快速得到结果,而如果没有并行计算,通常会按照①②③④的顺序,进行串行计算,效率就会大大下降。在深度学习计算中,计算过程被分为无数个小模块进行并行计算,大大提高了计算速率。

      结论:计算图的引入,使得开发者可以从俯瞰神经网络的内部结构,类似于编译器可以从整个代码的角度决定如何分配寄存器,计算图也可以决定代码运行时的GPU内存分配,以及分布式环境中不同底层设备间的相互协作方式。除此之外,现在也有许多深度学习框架将计算图应用于模型调试,可以实时输出当前某一操作类型的文本描述。
 

张量+基于张量的各种操作+计算图=加速计算

4.自动微分(Automatic Differentiation)工具

      传统求解微分方式的缺点:针对一些非线性过程(如修正线性单元ReLU)或者大规模的问题,使用符号微分法成本高,甚至无法微分。

      自动微分:相对于传统符号微分法,更加简单、高效、适应面更广。

5.BLAS、cuBLAS、cuDNN等拓展包(运算库)

      问题:人工智能编程现在主要使用Python,虽然简单方便,但高级语言也会比底层语言(C++)消耗更多的CPU周期,更这在深度神经网络上尤为明显,因此运算缓慢就成了高级语言的缺陷。

      解决:为了提高运算速度,就有了拓展包。最初用Fortran实现的BLAS( basic linear algebra subroutine,基础线性代数子程序),是一个非常优秀的基本矩阵(张量)运算库,此外还有英特尔的MKL(Math Kernel Library)等,开发者可以根据个人喜好灵活选择。一般的BLAS库只是针对普通的CPU场景进行了优化,但目前大部分的深度学习模型都已经开始采用并行GPU的运算模式,因此利用诸如NVIDIA推出的针对GPU优化的cuBLAS和cuDNN等更据针对性的库可能是更好的选择。
 

      最后:要注意一些部署模型加速的工具GPU(英伟达的TensorRT),CPU(英特尔公司的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博客

 

相关文章:

Tensorflow、Pytorch和Ray(张量,计算图)

1.深度学习框架(Tensorflow、Pytorch) 1.1由来 可以追溯到2016年,当年最著名的事件是alphago战胜人类围棋巅峰柯洁,在那之后,学界普遍认为人工智能已经可以在一些领域超过人类,未来也必将可以在更多领域超过…...

TinyWebServer学习笔记-让程序跑起来

目标:通过这个HTTP项目熟悉网络编程 系统:Ubuntu20.04 首先,学习的第一步就是先让程序跑起来,使用git将项目下载到虚拟机内: git clone https://github.com/qinguoyi/TinyWebServer.git 提前把MySQL数据库安装好&am…...

_tkinter.TclError: no display name and no $DISPLAY environment variable 解决

启动kohya_ss时可能会发生错误: _tkinter.TclError: no display name and no $DISPLAY environment variable 解决办法: 1、apt-get install xvfb //安装xvfb // 启动虚拟显示器 2、Xvfb :99 -screen 0 1024x768x16 & export DISPLAY:99 ps aux…...

我出手了!

时光飞逝,程序员小灰这个微信公众号,已经运营整整7年时间了。 在这7年里,小灰输出过各种各样的文章和视频,有讲编程技术的,有讲职业规划的,有讲互联网行业新闻的,也有讲自己个人生活的。 不过&a…...

springboot的配置文件(properties和yml/yaml)

springboot的配置文件有两种格式分别是properties和yml/yaml 创建配置文件 在创建springboot项目时候,会默认生成application.properties这种格式 书写风格 端口 application.propertis server.port8080 application.yml server:port: 8080 连接数据库 applica…...

SLAM面试笔记(7) — Linux面试题

目录 问题1:Linux系统基本组件? 问题2:Linux和Unix有什么区别? 问题3:Linux下编译程序 问题4:gcc基本格式和常用指令 问题5:用什么命令查找内存和交换使用情况? 问题6&#xf…...

QUIC不是TCP的替代品

QUIC取代了TCP成为HTTP3的基础传输协议,不是因为QUIC能够取代TCP的所有应用场景,而是因为QUIC更适合HTTP的请求/响应业务模型。原文: QUIC Is Not a TCP Replacement TCP新规范(RFC 9293)的发布是网络界的一件大事,值得围绕这一主题发表第二篇…...

计算机竞赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 🔥 优质竞赛项目系列,今天要分享的是 行人车辆目标检测计数系统 …...

GPT系列模型解读:GPT-1

GPT系列 GPT(Generative Pre-trained Transformer)是一系列基于Transformer架构的预训练语言模型,由OpenAI开发。以下是GPT系列的主要模型: GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer…...

王杰国庆作业day3

父子进程对话 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <my_head.h> int main(int argc, const char *argv[]) {mkfifo("./fifo1",0664);mkfifo("./fifo2",0664);pid_t cpid fork();if(0 < cp…...

量子计算基础知识—Part1

1.什么是量子计算机&#xff1f; 量子计算机是基于量子力学原理构建的机器&#xff0c;采用了一种新的方法来处理信息&#xff0c;从而使其具有超强的功能。量子计算机使用Qubits处理信息。 2. 什么是量子系统&#xff1f; 一个量子系统指的是由量子力学规则描述和控制的物理…...

【PostgreSQL】【存储管理】表和元组的组织方式

外存管理负责处理数据库与外存介质(PostgreSQL8.4.1版本中只支持磁盘的管理操作)的交互过程。在PostgreSQL中&#xff0c;外存管理由SMGR(主要代码在smgr.c中)提供了对外存的统一接口。SMGR负责统管各种介质管理器&#xff0c;会根据上层的请求选择一个具体的介质管理器进行操作…...

VSCode安装图文详解教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 教程说明 本教程旨在详细介绍VSCode的安装过程及其注意事项。 下载VSCode 请在官方网站 https://code.visualstudio.com/ 下载https://code.visualstudio.com/至本地&…...

vscode 无法打开源文件

以下是c/c插件的intelligense设置情况&#xff1a; 解决办法&#xff1a; 重新安装vsode无用&#xff1b;重新下载mingw64&#xff0c;管用了&#xff01;&#xff08;我猜可能是之前换电脑移植文件的时候导致了部分文件丢失&#xff09;...

1.8.C++项目:仿muduo库实现并发服务器之eventloop模块的设计

项目完整在&#xff1a; 文章目录 一、eventloop模块&#xff1a;进行事件监控&#xff0c;以及事件处理的模块二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 四、框架五、代码 一、eventloop模…...

Linux基本指令(二)

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…...

量化交易全流程(五)

本节目录 策略回测 多因子模型 本节主要讨论回测相关的内容&#xff0c;包括两种不同的回测机制&#xff0c;即向量化回测和事件驱动回测&#xff1b;如何灵活使用开源工具来编写自己的回测程序&#xff1b;不同实现方式的优劣对比等。 在我们研究策略的时候&#xff0c;需要…...

聊聊MySQL的InnoDB引擎与MVCC

目录 一、InnoDB引擎 1.1逻辑存储结构 1). 表空间 2). 段 3). 区 4). 页 5). 行 1.2架构 1.2.1内存结构 1). Buffer Pool 2). Change Buffer 3). Adaptive Hash Index 4). Log Buffer 1.2.2磁盘结构 1). System Tablespace 2). File-Per-Table Tablespaces 3). …...

小病变检测:Gravity Network for end-to-end small lesion detection

论文作者&#xff1a;Ciro Russo,Alessandro Bria,Claudio Marrocco 作者单位&#xff1a;University of Cassino and L.M. 论文链接&#xff1a;http://arxiv.org/abs/2309.12876v1 内容简介&#xff1a; 1&#xff09;方向&#xff1a;医学影像中小病变检测 2&#xff0…...

Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器

星光下的赶路人star的个人主页 内心的平静始于不再让他人掌控你的感情 文章目录 0、前言1、窗口&#xff08;Window&#xff09;1.1 窗口的概念1.2 窗口的分类1.3 窗口API概览1.4 窗口分配器&#xff08;Window Assigner&#xff09;1.4.1 时间窗口1.4.2 计数窗口 1.5 窗口函数…...

vscode 注释插件koroFileHeader

https://blog.51cto.com/u_15785499/5664323 https://blog.csdn.net/weixin_67697081/article/details/129004675...

Centos7安装php-fpm

目录 第一步&#xff1a;查看系统IP地址和网卡名称 第二步&#xff1a;更改网络配置模式 第三步、重启network 查看iptablies ,将第十行&#xff0c;十一行删除 第四步&#xff1a;关闭config 第五步&#xff1a;创建nginx 文件夹 查看目录下的文件 进入nginx文件夹 第…...

计算机网络(五):运输层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 运输层概述 之前所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信&#xff…...

适合在校学生的云服务器有哪些?

随着云计算技术的发展&#xff0c;越来越多的学生开始使用云服务器来进行学习和实践。对于学生来说&#xff0c;选择一款便宜的云服务器不仅可以帮助他们降低成本&#xff0c;还可以提高学习和实践的效率。本文将介绍几款适合学生使用的便宜云服务器。 1、腾讯云学生服务器【点…...

计算机竞赛 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python

文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的驾…...

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包…...

SpringCloudAlibaba 相关组件的学习一

目录 前言 系统架构演变 1、单体架构 2、垂直架构 3、分布式架构 4、SOA架构 5、微服务架构 一、微服务架构的介绍 1、微服务架构的常见问题 2 微服务架构的常见概念 2.1 服务治理 2.2 服务调用 2.3 服务网关 2.4 服务容错 2.5 链路追踪 3、微服务架构的常用解决…...

【C语言 模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数】

C语言程序设计笔记---026 C语言之模拟实现strncpy函数、strncat函数、strncmp函数、strstr函数1、介绍strncpy函数1.1、模拟实现strncpy函数 2、介绍strncat函数2.1、模拟实现strncat函数 3、介绍strncmp函数3.1、模拟实现strncmp函数 4、介绍strstr函数4.1、模拟实现strstr函数…...

Mongodb7启动报错排除解决方案

一&#xff1a; 报错信息: [rootwww log]# journalctl -xe -- Unit mongodb.service has begun starting up. /usr/local/mongodb/mongdb7/bin/mongod --help for more information 10月 03 13:47:39 www.yhchange.com systemd[1]: mongodb.service: control process exited, …...

王杰国庆作业day5

...

怎么看一个网站是否做竞价/昆山优化外包

昨天看了微软2016Build大会&#xff0c;Xamarin免费了。恩&#xff0c;5亿美刀的家伙&#xff0c;哈哈&#xff0c;我也要体验一下..... 1. 首先在Xamarin官网下载安向导&#xff1a;https://www.xamarin.com/download 2. 点击运行后&#xff0c;按照自己的需要&#xff0c;选择…...

广州响应网站建设/在线网页制作系统搭建

首先说一下&#xff0c; href属性 和 onclick事件 的执行顺序&#xff0c;当鼠标点击a标签的时候会先执行 onclick事件&#xff0c; 然后才是 href 属性下的动作(页面跳转&#xff0c;或 javascript 伪链接)&#xff0c;如果不想执行href 属性下的动作执行&#xff0c;onclick …...

为网站制定一个推广计划/快速整站排名seo教程

什么是战略管理&#xff08;P-516&#xff09;–了解 组织战略的4项主要内容&#xff08;P-517&#xff09;–掌握 组织战略的4个类型&#xff08;P-519~P-521&#xff09;–掌握 组织战略的3个层次&#xff08;P-523&#xff09;–掌握 组织战略从范围角度的3个层次分类&#…...

外包建设网站服务/百度搜索引擎平台

;如果需要这个软件的代码逻辑,删除敏感信息只需要把上面3行代码删除即可.!1:: ;login经过测试必须用ie浏览器&#xff0c;在默认软件里面浏览器设置成ie即可&#xff0c;其他浏览器不让send密码 ;虽然通过程序把银行账号密码写入了,但是只知道账号密码还是只能查询账单,没有u盾…...

四海网络网站建设咨询/网盘资源免费观看

原标题&#xff1a;「Linux基础知识」grep文件内容筛选命令的使用grep命令用于从文档中抓取显示包含指定字符的行&#xff0c;grep命令的使用格式如下&#xff1a;grep [选项] 匹配模式 文件1 文件2 ......grep常见的选项有&#xff1a;-n 显示匹配文档行的行号-i 忽略大小写按…...

在腾讯云怎样建设网站/荆州seo推广

本文地址&#xff1a;http://www.cnblogs.com/archimedes/p/c-opensource-project.html&#xff0c;转载请注明源地址。 本篇文章主要总结一些C开源项目&#xff0c;有些是很著名的&#xff0c;有些则比较生僻 1.Webbench Webbench是一个在linux下使用的非常简单的网站压测工具…...