• 等级
  • 588673 访问
  • 102 原创
  • 3 转发
  • 6040 排名
  • 78 评论
  • 76 获赞

Tensorflow 源码分析-  从GPU OOM开始说Tensorflow的BFC内存管理

前言在平台上跑GPU训练,结果CUDA OOM了,错误提示E Internal: failed initializing StreamExecutor for CUDA device ordinal 0: Internal: failed call to cuDevicePrimary CtxRetain: CUDA_ERROR_OUT_OF_MEMORY; total memory repor...

2018-05-04 11:46:13

Tensorflow 源码分析-会话与线程池之间的关系

1. Tensorflow 的sessionFactory创建新的会话,tensorflow使用了多工厂模式,在不同的场景下使用不同的工厂, 使用什么工厂模式由传递进来的SessionOptions来决定。1.1 注册工厂Tensorflow 提供了可以注册多会话工厂的模式,允许不同的模块注册自己的会话工厂void SessionFactory::Register(const string&amp...

2018-04-02 17:11:16

tf.transpose 函数说明和用法

tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n])说明:函数用于交换输入张量维度参数:input 输入张量dimension_n 张量的纬度,输入整数如果输入张量是二维用[0,1]表示,[1,0]就相当于转置矩阵。如果张量是三维用[0,1,2]表示,每个数对应相应的维度。如果是[2,1,0],就把输入张量的第三维度和第一维度...

2018-01-23 14:58:12

Tensorflow 源码分析-GPU调用是如何实现的

1. Tensorflow GPU支持Tensorflow 支持GPU进行运算,目前官方版本只支持NVIDIA的GPU,可以在tensorflow的官方上看到。Tensorflow 对GPU的运算的支持最小力度就是OP,也就是我们常说的算子,下图提供了Tensorflow的一些常见算子,而每个算子在Tensorflow上都会提供GPU的算法:关于OP的具体实现,在本篇博客中就不叙述了。2. Ten...

2017-12-21 10:22:30

案例分享:如何通过JVM crash 的日志和core dump定位和分析Instrument引起的JVM crash

1. JVM crash了产品发来一份crash report, 什么是crash report请参考我的前期博客(http://blog.csdn.net/raintungli/article/details/7642575),下面是截取了crash report的部分,用于分析:# Problematic frame: # V [libjvm.so+0x5bbf05] instanceKl

2017-09-02 11:04:12

深度学习:神经网络中的前向传播和反向传播算法推导

1. 神经网络这是一个常见的神经网络的图:这是一个常见的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层

2017-08-08 16:53:27

Spark 2.1.0 大数据平台源码分析:章节序列

Spark 2.1.0 大数据平台源码分析:章节序列

2017-07-27 07:13:57

大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现

1. 什么是梯度下降?梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。先来看两个函数:1.  拟合函数:θ" role="presentation" style="display: inline; line-he

2017-07-10 15:24:34

大数据:Spark 算子(一)排序算子sortByKey来看大数据平台下如何做排序

1 前言在前面一系列博客中,特别在Shuffle博客系列中,曾今描述过在生成ShuffleWrite的文件的时候,对每个partition会先进行排序并spill到文件中,最后合并成ShuffleWrite的文件,也就是每个Partition里的内容已经进行了排序,在最后的action操作的时候需要对每个executor生成的shuffle文件相同的Partition进行合并,完成Action的操

2017-06-26 16:42:13

大数据:Spark mlib(二) Naive bayes朴素贝叶斯分类之多元朴素贝叶斯源码分析

1. 什么是朴素贝叶斯朴素贝叶斯是一种构建分类器,该分类器基于一个理论:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关2. 朴素贝叶斯概率模型概率模型分类器是一个条件概率模型:(独立的类别特征C有若干类别,条件依赖于若干特征变量F1,F2,...,Fn)      贝叶斯定理:  我们可以看到分母并不依赖于C,而且特征Fn的概率是给定的,分母可以认为是一个常数。这样分子就等价于联合分布模

2017-06-23 14:36:26

大数据:Spark mlib(一) KMeans聚类算法源码分析

1. 聚类1.1 什么是聚类?所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用算法将集合D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高,其中每个子集叫做一个簇。1.2 KMeans 聚类算法K-Means聚类算法主要分为如下几个步骤:从D中随机取k个元素,作为k个簇的各自的中心分别计算剩下的元素到k个簇中心的相异度,将这些元素分

2017-06-09 12:22:17

大数据:Spark Shuffle(三)Executor是如何fetch shuffle的数据文件

1. 前言在前面的博客中讨论了Executor, Driver之间如何汇报Executor生成的Shuffle的数据文件,以及Executor获取到Shuffle的数据文件的分布,那么Executor是如何获取到Shuffle的数据文件进行Action的算子的计算呢?在ResultTask中,Executor通过MapOutPutTracker向Driver获取了ShuffID的Shuffle数据

2017-05-09 17:13:48

大数据:Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪

1. 前言在博客里介绍了ShuffleWrite关于shuffleMapTask如何运行,输出Shuffle结果到文件Shuffle_shuffleId_mapId_reduceId.data文件中,每个executor需要向Driver汇报当前节点的Shuffle结果状态,Driver保存结果信息进行下个Task的调度。2. StatusUpdate消息当Executor运行完Task的时候需要

2017-05-03 15:07:08

大数据:Spark Shuffle(一)ShuffleWrite:Executor如何将Shuffle的结果进行归并写到数据文件中去

1. 前序关于Executor如何运行算子,请参考前面博文:大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子,当Executor进行reduce运算的时候,生成运算结果的临时Shuffle,并保存在磁盘中,被最后的Action算子调用,而这个阶段就是在ShuffleMapTask里执行的。

2017-04-27 11:44:32

大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子

1. 究竟是怎么运行的?很多的博客里大量的讲了什么是RDD, Dependency, Shuffle... 但是究竟那些Executor是怎么运行你提交的代码段的?下面是一个日志分析的例子,来自Spark的example def main(args: Array[String]) { val sparkConf = new SparkConf().setAppName("Log Quer

2017-04-22 23:15:19

大数据:Spark Core(三)Executor上是如何launch task

1. 启动任务在前面一篇博客中(http://blog.csdn.net/raintungli/article/details/70168241#t9)介绍了Driver是如何调动、启动任务的,Driver向Executor发送了LaunchTask的消息,Executor接收到了LaunchTask的消息后,进行了任务的启动,在CoarseGrainedExecutorBackend.scala

2017-04-19 17:48:23

大数据:Spark Core(二)Driver上的Task的生成、分配、调度

1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系可以这样理解: Application: Application是Driver在构建SparkContent的上下文的时候创建的,就像申报员,现在要构建一个能完成任务的集群,需要申报的是这次需要多少个Executor(可以简单理解

2017-04-14 09:21:46

大数据:Spark Core (一) 什么是RDD的Transformation和Actions以及Dependency?

Spark的RDDRDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象。RDD所具备5个主要特性:一组分区计算每一个数据分片的函数RDD上的一组依赖对于Key Value 对的RDD,会有一个Partitioner, 这是数据的分割器一组Preferred Location信息上图是一个简单的CoGroupedRDD满足了RDD 5个

2017-04-07 17:21:36

大数据:Spark Standalone 集群调度(三)多Master节点的可用性

1. Master 单节点可用性 Master节点在Spark中所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。 在Spark中,Master本身也提供了基于硬盘的单节点的可用性,也就是可以直接通过重启Master,Master通过读取硬盘里保存的状态,进行单节点的恢复。

2017-04-01 09:37:53

大数据:Spark Standalone 集群调度(二)如何创建、分配Executors的资源

Standalone 的整体架构 在Spark集群中的3个角色Client, Master, Worker, 下面的图是Client Submit 一个任务的流程图: 完整的流程:Driver 提交任务给Master, 由Master节点根据任务的参数对进行Worker的Executor的分配,Worker节点获取到具体的分配信息启动executor 的子进程 Master分

2017-03-29 17:37:33

博客专家

raintungli

关注
  • 服务器端工程师
  • 浙江省 杭州市
奖章
  • 博客专家
  • 专栏达人
  • 持之以恒