图计算之 nebula-plato [图计算 on nLive:Nebula 的图计算实践] nebula-plato 的分享主要由图计算系统概述、Gemini 图计算系统介绍、Plato 图计算系统介绍以及 图计算系统 图的划分 [图计算 on nLive:Nebula 的图计算实践] 图计算系统概述部分,着重讲解下图的划分、分片、存储方式等内容。 [图计算 on nLive:Nebula 的图计算实践] (图:以顶点为中心的编程模型) [图计算 on nLive:Nebula 的图计算实践] (图:以边为中心的编程模型) 这两种模式以顶点为中心的编程模型比较常见 Gemini 图计算系统 Gemini 图计算系统是以计算为中心的分布式图计算系统,这里主要说下它的特点: CSR/CSC 稀疏图/稠密图 push/pull master/mirror 计算/通信 协同工作 Nebula 图计算 [图计算 on nLive:Nebula 的图计算实践] 目前 Nebula 图计算集成了两种不同图计算框架,共有 2 款产品:nebula-algorithm 和 nebula-plato
Pytorch底层最核心的概念是张量,动态计算图以及自动微分。 本节我们将介绍 Pytorch的动态计算图。 包括: 动态计算图简介 计算图中的Function 计算图和反向传播 叶子节点和非叶子节点 计算图在TensorBoard中的可视化 一,动态计算图简介 ? Pytorch的计算图由节点和边组成,节点表示张量或者Function,边表示张量和Function之间的依赖关系。 Pytorch中的计算图是动态图。这里的动态主要有两重含义。 第一层含义是:计算图的正向传播是立即执行的。无需等待完整的计算图创建完毕,每条语句都会在计算图中动态添加节点和边,并立即执行正向传播得到计算结果。 第二层含义是:计算图在反向传播后立即销毁。 下次调用需要重新构建计算图。
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
有的,那就是我们需要说的计算图 计算图 我们借用「图」的结构就能很好的表示整个前向和后向的过程。形式如下 ? 我们再来看一个更具体的例子 ? (这幅图摘自Paddle教程。 白色是卷积核每次移动覆盖的区域,而蓝色区块,则是与权重W1经过计算的位置 可以看到W1分别和1, 2, 5, 6这四个数字进行计算 我们最后标准化一下 这就是权重W1对应的梯度,以此类推,我们可以得到 因此池化层需要将梯度传递到前面一层,而自身是不需要计算梯度优化参数。 静态图 在tf1时代,其运行机制是静态图,也就是「符号式编程」,tensorflow也是按照上面计算图的思想,把整个运算逻辑抽象成一张「数据流图」 ? 在静态图里我们可以优化到同一层级,乘法和加法同时做到 总结 这篇文章讲解了计算图的提出,框架内部常见算子的反向传播方法,以及动静态图的主要区别。
文章目录 计算图 PyTorch的动态图机制 计算图 计算图是用来描述运算的有向无环图 计算图有两个主要元素: 结点 Node 边 Edge 结点表示数据:如向量,矩阵,张量 边表示运算:如加减乘除卷积等 用计算图表示:y = (x+ w) * (w+1) a = x + w b = w + 1 y = a * b 计算图与梯度求导 y = (x+ w) * (w+1) a = x + w 计算图与梯度求导 y = (x+ w) * (w+1) 叶子结点 :用户创建的结点称为叶子结点,如 X 与 W is_leaf: 指示张量是否为叶子结点 叶子节点的作用是标志存储叶子节点的梯度,而清除在反向传播过程中的变量的梯度 根据计算图搭建方式,可将计算图分为动态图和静态图 动态图 运算与搭建同时进行 灵活 易调节 例如动态图 PyTorch: 静态 先搭建图, 后运算 高效 不灵活。 静态图 TensorFlow
图计算可以作为对图查询的一个补充,图查询是直接获取关联的信息,而图计算的目标则是计算出基于关联结构蕴藏在点边中的信息,而且,图计算结果本身可以再存储到图数据库中作为图查询的查询目标。 对于希望借力图计算提升业务效果的同行来说,重点要关注两个方面,首先是图计算的结果怎么用,其次是如何高效算出图计算的结果。 对于图计算能起到多大作用问题,难以一概而论。 鉴于图计算任务大都是计算和资源均密集型的,明确图计算对业务助力的效果应该优于图计算在计算效率上的提升。图计算算法可达数十种,每种有各自适用的场景。 值得注意的是,目前图计算对异构图的支持有限,针对异构图的计算优化与实际图数据的构图形式有较大的关联,因此难以有通用的图计算系统或算法,但实际业务中的图计算往往更关注异构图。 、使用体验而非图技术本身 参考文献 [1] Sahu, Siddhartha, et al.
计算图 谈及计算,有人可能又要为烦人的计算公式头疼了,所以本文用了一种思考数学表达式的轻松方法——计算图。以非常简单的e=(a+b)×(b+1)为例,从计算角度看它一共有3步操作:两次求和和一次乘积。 为了让大家对计算图有更清晰的理解,这里我们把它分开计算,并绘制图像。 我们可以把这个等式分成3个函数: ? 在计算图中,我们把每个函数连同输入变量一起放进节点中。 为了计算图中的偏导数,我们先来复习这两个求和规则和乘积规则: ? 已知a=2,b=1,那么相应的计算图就是: ? 通过分解路径,这个式子能更高效地计算总和,虽然长得和求和等式有一定差异,但对于每条边它确实只计算了一次。 前向模式求导从计算图的输入开始,到最后结束。 虽然你以前可能没想过从计算图的角度来进行理解,但这样一看,其实前向模式求导和我们刚开始学微积分时接触的内容差不多。 另一方面,反向模式求导则是从计算图的最后开始,到输入结束。
计算图表现为有向无环图,定义了数据的流转方式,数据的计算方式,以及各种计算之间的相互依赖关系等。 2 计算图的基本组成 TensorFlow的计算图粒度比较细,由节点和有向边组成(后来也加入了层)。相比之下,腾讯的开源机器学习平台Angel,其计算图的粒度较粗,由层(Layer)组成。 3 计算图的运行 TensorFlow中可以定义多个计算图,不同计算图上的张量和运算相互独立,因此每一个计算图都是一个独立的计算逻辑。 3.1 图的启动 启动计算图的第一步是创建一个会话(Session)对象,如果没有任何的创建参数,会话构造器将启动默认图。 一个Session可以运行多个计算图,一个计算图也可以在多个Session中运行。
Tensorflow底层最核心的概念是张量,计算图以及自动微分。 本篇我们介绍计算图。 有三种计算图的构建方式:静态计算图,动态计算图,以及Autograph. 在TensorFlow1.0时代,采用的是静态计算图,需要先使用TensorFlow的各种算子创建计算图,然后再开启一个会话Session,显式执行计算图。 二,静态计算图 在TensorFlow1.0中,使用静态计算图分两步,第一步定义计算图,第二部在会话中执行计算图。 TensorFlow1.0静态计算图范例 ? 在TensorFlow1.0中,使用静态计算图分两步,第一步定义计算图,第二部在会话中执行计算图。 而动态计算图已经不区分计算图的定义和执行了,而是定义后立即执行。 在TensorFlow1.0中,使用计算图分两步,第一步定义计算图,第二步在会话中执行计算图。
所有这些情况都会将您的计算图变成一个随机的 - 先前的确定性节点现在变成随机的。 如何通过这些节点进行反向传播并不明显。 在这个系列中,我想概述可能的方法。 考虑大致的推理目标: [图片] 或强化学习目标: [图片] 在下面,我将使用以下符号为目标: [图片] 在这种情况下,(随机)计算图(SCG)可以用下面的形式表示[1]: [图片] 这里的 θ,双圈是一组可调参数 为了使用这样的图来估计F(θ),你只需要用你的θ,计算x的分布,从中得到尽可能多的样本,为每个样本计算f(x),然后对它们进行平均。 我们如何最大限度地提高呢? 基本上,这个想法是这样的:如果一些随机变量可以被分解成其他随机变量的组合,那么我们能够转换我们的随机计算图,使得我们不需要通过随机反向传播,并且将随机性注入到模型中作为独立 噪声? [p3.png] Gen Rep 1是一个广义的重新参数化,只有第一时刻变成白色, Gen Rep 2 - 只有第二个 仿真图清楚地表明,基于分数函数的梯度和第一次广义的重新参数化不能收敛,这与我们的方差分析是一致的
本节介绍TensorFlow与创建计算图的几个函数: g = tf.Graph() #创建新的计算图g g.as_default() #将计算图g设置为当前使用的计算图 g0 = tf.get_default_graph () # 获取默认的计算图 tf.reset_default_graph() #清空默认的计算图 示范1: import tensorflow as tf # 初始化一个计算图对象g 示范2: import tensorflow as tf #获取默认的计算图对象句柄g0 g0 = tf.get_default_graph() #在g0中添加节点定义计算图 with g0.as_default 示范3: import tensorflow as tf #清空默认的计算图 tf.reset_default_graph() # 直接用Operator定义的节点将添加到默认计算图中 a = tf.constant 推荐使用示范1的方式定义计算图,不用每次都 tf.reset_default_graph()。
怎样有效的计算它们? 解决问题 1 需要了解张量求导 (第一节),解决问题 2 需要了解计算图(第二节)。要理解张量请参考《张量 101》。 本节只用两层神经网络来说明一些核心问题,比如正向传播、反向传播、计算图等等。 计算图就是将计算形式化图形的方法,由输入结点、输出结点、函数 (从输入到输出的) 三部分组成。 每个一节点来表示一个变量,可以是标量、向量、矩阵或张量。 计算图的实例如下: ? 上图中 x, w[1], b[1], w[2], b[2], y 是输入节点,l 是输出节点,它们都是标量。 计算图核心 ? 注意我把“中间梯度×局部梯度”该成 dot(中间梯度, 局部梯度),这个函数实际上是 numpy 里面张量点乘的操作。
GraphLite github地址 https://github.com/schencoding/GraphLite 图很适合进行分布式并行计算,比如最短路径,PageRank等问题,比较著名的图计算框架有 BSP模型如下图: 也就是超步计算,apache giraph也属于此模式。 图着色在单机环境下的算法,最快一般是贪心算法,也就是每次去找不相邻的节点去着色,直到全部完成。 我们在分布式并行计算环境下也要用贪心算法,每次找到不相邻的所有节点同时着色,在4个超步内完成一次着色,第一步根据出度的大小选择哪些节点可能要被着色,第二步处理冲突,第三步删除被选中节点和邻居节点之间的边
机器之心报道 参与:蛋酱 11 月 14 日,腾讯正式宣布开源高性能图计算框架 Plato,据介绍,Plato 可满足十亿级节点的超大规模图计算需求,将算法计算时间从「天」级缩短到「分钟」级,性能全面领先于其它主流分布式图计算框架 最强性能的图计算框架 Plato Plato 是腾讯内部图计算 TGraph 团队整合内部资源自主研发的一款高性能图计算框架,取名 Plato 是为了致敬伟大的数学家柏拉图。 相对于目前全球范围内其它的图计算框架,Plato 可满足十亿级节点的超大规模图计算需求,将算法计算时间从天级缩短到分钟级,性能全面领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈 (10 台服务器左右)即可完成腾讯数据量级的超大规模图计算,打破了动辄需要上百台服务器的资源瓶颈,同时也极大地节约了计算成本; Plato 隶属腾讯图计算 TGraph,起源于超大规模社交网络图数据,但可以完美适配其他类型的图数据 除了计算性能不足,内存占用过大也是限制大规模图计算的主要因素。Plato 的另一个巨大优势则是它的内存开销远小于主流图计算框架。
错过了腾讯全球生态大会「高速智能计算专场」? 没关系 一图读懂腾讯云计算 ⬇️ ? ?
图计算的核心是如何将数据建模为图结构以及如何将问题的解法转化为图结构上的计算问题,当问题涉及到关联分析时,图计算往往能够使得问题的解法很自然地表示为一系列对图结构操作和计算的过程。 5.从计算机体系结构看图计算 图计算一般都是数据驱动的计算,计算结构无法在运行前准确地进行预测,形态上没有明显规律,难以高效优质地进行划分。 图计算的负载具有复杂性,没有单一最具代表性的图计算负载。连接顶点的边,只是无数可能连接中的一个小子集,存在高度不规则性。在图计算的过程中,读写的时空局部性难以掌握,带宽占用情况难以预测。 在多线程计算的情况下,若触发延迟较高的远程内存访问,也会抵消多线程的收益。 图计算需要怎样的处理器核心呢?一般地,会采用许多小计算核心加高线程数的架构,适合处理传统多核处理器所不擅长的大图计算。 6.从系统看图计算 依据大规模图计算系统的使用场景以及计算平台架构的不同,可以将其分为单机内存图计算系统、单机外存图计算系统、分布式内存图计算系统和分布式外存图计算系统。
参考文献 强烈推荐Tensorflow 实战 Google 深度学习框架[1]实验平台: Tensorflow1.4.0 python3.5.0 TensorFlow 不仅可以展示计算图的结构,还可以展示 TensorFlow 计算图上每个节点的基本信息以及运行时消耗的时间和空间。 使用 TensorBoard 可以非常直观地展现所有 TensorFlow 计算节点在某一次运行时所消耗的时间和内存。 可以选择显示计算图的结构以及计算图中节点计算所用的时间和内存 下图显示计算图中节点计算所用时间 ? 下图显示计算图中节点计算所用内存 ?
百度百科 Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。Flink 被设计为在所有常见的集群环境中运行,以内存中的速度和任何规模执行计算。 两者区别对比 数据时效性 流式计算实时、低延迟.。| 批处理非实时、高延迟 数据特征 流式计算的数据一般是动态的、没有边界的。| 批处理的数据一般则是静态数据。 应用场景 流式计算应用在实时场景,时效性要求比较高的场景,比如实时推荐、业务监控等. 批处理应用在实时性要求不高、离线计算的场景下,比如数据分析、离线报表等. 运行方式 流式计算的任务是持续进行的。 | 批处理是一个或一系列一次性的 job 处理效能 流式计算效能一般比较低。 一次性快速将大批量数据执行完毕,有着大量的类似压缩、SIMD 等的优化手段,效能可以轻易比流式计算高出多个数量级;按需执行,平常不运行时可以不消耗任何计算资源。
先导:什么是图计算 尽管现在图像识别很火,但图计算的「图」并不是指普通的图像和照片,而是用于表示对象之间关联关系的一种抽象数据结构。 图计算就是以图作为数据模型来表达问题并予以解决的过程。 Plato 图计算框架 Plato 是腾讯内部图计算 TGraph 团队整合内部资源自主研发的一款图计算框架,而 Plato 这一命名正是为了致敬数学家柏拉图。 在计算性能方面,Plato 它能够将算法计算时间从天级缩短到分钟级,不仅让当前的图计算性能提升数十倍,也将图计算带进了分钟级计算时代。 在内存消耗方面,Plato 也远小于主流的图计算框架。 架构设计方面,Plato 框架的核心是自适应图计算引擎,它能够根据不同类型的图算法,提供多种计算模式供开发者灵活选择,包括自适应计算模式、共享内存计算模式和流水线计算模式等。
对于全图数据的计算,无论是计算架构还是内存大小都不是特别适合的。所以,为了补充该部分(模式匹配)的功能,这里使用 Spark GraphX 来满足 OLAP 的计算需求。 GraphX 介绍 GraphX 是 Spark 生态的一个分布式图计算引擎,提供了许多的图计算接口,方便进行图的各项操作。 总结 利用 GraphX 的 Pregel API 进行广度优先遍历来实现模式匹配的好处: GraphX 有多种图算子可以灵活处理图数据; 基于 Pregel,使用路径当做消息可以灵活控制模式子图的结构 ,导致计算过程中 shuffle 的次数很多。 最后,虽然 GraphX 使用起来上手有一定难度,计算也高度依赖内存,但瑕不掩瑜它仍然是一款优秀的图计算框架,尤其是分布式的特性能够进行大量数据的计算,同时 Spark 又能较好地与大数据生态集成,又有官方提供的
以下内容节选自《图深度学习从理论到实践》。 广告反作弊中的传统图算法 网络广告作弊是由某些团伙和个人借由计算机和手机等智能设备在一定的网络环境下实施的。 下面对这三种图算法展开简单介绍: 1.1 Louvain算法 2008年,Vincent 等提出的Louvain算法,是基于模块度(Modularity)的社区发现算法,采用模块的度来计算社区的稠密程度 下图展示了客户与热门店铺和刷单店铺的交易网络中,初始各边及结点的可疑度计算,计算过程为: 1)确定目标与 相连的边数 ; 2)计算边的可疑度 ,结点B1有3条边连接,则其边可疑度为1/log(3+ B) = F(B1) + F(B2) + F(A1) + F(A2) + F(A3) = 4.92 5)全局可疑度: G(s) = F(s) / |s| = 4.92 / 5 = 0.98 ▲ 二部图初始边和结点可疑度计算示意图 ▲ GraphSAGE二阶信息传递过程 假设以计算节点为研究对象,采用两轮的邻域与信息聚合,用 表示聚合函数。第一轮时,计算一阶邻居节点 。以 节点为例子,采用特征更新方式 。同样地 ,。
云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。
扫码关注腾讯云开发者
领取腾讯云代金券