crafet's blog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

spark的partition概念

发表于 2018-05-25 | 分类于 tech |

经常使用spark提交任务,但是很少关注partition的概念,虽然经常设置executor的个数,executor_memory,executor-core等值,但是没有关注partition的概念,使用textFile处理文本log也是采用的默认partition设置,今天对partiton的概念稍微理一理。

阅读全文 »

tensorflow tutorial -分布式tf

发表于 2018-05-18 | 分类于 tech |

分布式tf

准备tf.train.ClusterSpec 用来映射task到机器。

当通过tf.train.Server.create_local_server()时候,会返回如图log信息供参考

1
2
3
4
5
6
>>> server = tf.train.Server.create_local_server() 
2018-05-21 11:06:20.414739: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla P40, pci bus id: 0000:04:00.0, compute capability: 6.1)
2018-05-21 11:06:20.414780: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:1) -> (device: 1, name: Tesla P40, pci bus id: 0000:06:00.0, compute capability: 6.1)
E0521 11:06:20.415751398 12302 ev_epoll1_linux.c:1051] grpc epoll fd: 38
2018-05-21 11:06:20.420353: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job local -> {0 -> localhost:52551}
2018-05-21 11:06:20.420940: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:324] Started server with target: grpc://localhost:52551

查看server以及对应的targe信息

1
2
3
4
>>> print server.target
grpc://localhost:52551
>>> print server
<tensorflow.python.training.server_lib.Server object at 0x69bc610>

data parallelism ,worker has same model with different batch size data

图内复制

in-graph replication

between-graph replication

图间复制

TensorFlowOnSpark

Yahoo!开源的TFoS,集中tf以及spark,tfos支持GPU/CPU集群上的分布式深度学习。

支持spark上的training、支持inference。通过如下步骤管理tf

a、在executor上launch tf,同时监听数据/控制流信息。

b、数据读取方式有两种:Reader和QueueRunner,QueueRunner是 tf提供数据读取接口

leverage tf的reader接口从hdfs上直接读取数据;使用feed_dict机制,将RDD发送到feed_dict上。

tensorflow tutorial -神经网络模型

发表于 2018-05-18 | 分类于 tech |

从SimpleNeuralNetwork开始构建多层感知机到CNN再到LSTM,通过代码熟悉tf下DNN的模型构建方式。

构建一个包含2个隐含层hidden layers全连接网络,也即平常说的多层感知机multi layer perceptron,继续使用mnist数据集进行模型训练以及应用。

这里设置2层,每层256个神经节点neurons,输入为784dim的image,output为10 classes。

对于中间的hidden layer,需要的w为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
num_input = 784
n_hidden_1 = 256
n_hidden_2 = 256
num_classes = 10
weights = {
'h1' : tf.Variable(tf.random_normal([num_input, n_hidden_1]))
'h2' : tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2]))
'out': tf.Variable(tf.random_normal([n_hidden_2, num_classes]))
}
## 同样需要设置bais变量
baises = {
'h1': tf.Variable(tf.random_normal([n_hidden_1])),
'h2': tf.Variable(tf.random_normal([n_hidden_2])),
'out': tf.Variable(tf.random_normal([num_classes]))
}
阅读全文 »

tensorflow tutorial-入门

发表于 2018-05-17 | 分类于 tensorflow , tutorial , machine learning |

背景

在搜索tensorflow(TF)相关的资料时候,发现在github上有比较多的example,其实在学习其他新内容,总是会有类似effectiveC++,efftiveGo,effectiveScala等类似总结,尝试搜了下effectiveTensorflow,发现这里还是有一个可以参考

tf的effective

同时还有一个star较高的examples作为学习的tutorial,地址在这里

Tensorflow Examples

本文打算从example这里开始,打算以此作为基础,先将tf相关的所有api尽可能熟悉,然后基于effective系列来了解常规的code style,最后再深入tf的基础架构、设计原理去深层次的了解。

阅读全文 »

如何构建一个实时广告推荐系统

发表于 2018-05-16 | 分类于 tech |

背景

构建一个实时的广告推荐系统,如果从离线及实时的角度来分的话,可以分为离线模型训练部分以及实时在线学习、实时在线推荐两个部分。

TODO

End.

使用travis自动构建blog

发表于 2018-05-14 | 分类于 tech |

背景

在使用travis构建blog之前,对travis并没有系统的使用过,也仅仅停留在听过这个产品,听过其用途,随着总结欲望的增加,发现在跨多个机器上写blog的时候,总是需要安装hexo,这些环境通过github来作为中间者进行同步,时间长了,会逐渐忘记hexo的部署命令以及本机的部署环境,写blog的目录等,在往往在随着这些琐碎的事情的增加,而逐渐减少了写blog的欲望。

最近看到travis进行blog的自动构建,发现可以很大程度上减少对部署环境的依赖,而只要聚焦在写blog上即可。因此折腾了一个下午,将travis接入自己的blog构建,本篇文章记录了这个折腾的过程,同时也记录一些自己目前还没有解决掉的问题,期望后面会逐渐优化这个过程。

阅读全文 »

使用hexo构建支持latex的blog

发表于 2018-03-11 |

背景

​ 之前使用了jekyll构建静态blog,但是在公式配置上一直没有配置合理,导致文章中的公式显示经常出现问题。结果反而让自己变的更懒而不勤于书写文章。偶然间看到hexo这个东东更加方便,并且起NexT主题中默认支持mathjax,不用自己再设置各种plugin来支持(事实上没有使用NexT theme之前,也设置了好久来支持公式,但是无果)。

​ 因此打算将第一篇文章来描述如何使用hexo。

阅读全文 »

点击率预估算法survey之FTRL

发表于 2017-09-25 | 分类于 tech |

论文主要内容

参考的paper是。文章中给出了可以工程化的实践。

在LR算法训练中,在第t个instance上的logloss为

​ $logloss_t(w_t) = -y_tlog p_t - (1-y_t)log(1-p_t)$

其中$w_t$是训练当前这轮的权重,$y_t$是label,$p_t$是预估的结果,即sigmoid函数的计算结果。一般$y_t$是0或者1。因此这个公式可以简化为

​ $$ logloss_t(w_t)= \begin{cases} -log(1-p_t), & \text {if $y_t=0$} \ -logp_t, & \text{if $y_t=1$} \end{cases} $$

从而推倒出的gradient为

$g = (p_t-y_t)x_t$,而instance在预处理之后对应的$x_t$一般是libsvm的数据格式,即$featid:1$,所以$x_t$的值一般是1,因此这里可以等价为$g = p_t-y_t$。

阅读全文 »

基于libev的网络服务框架

发表于 2017-08-18 | 分类于 tech |

背景

​ 目前参与的几个后台服务都是基于libev构建的异步网络服务框架,我们将libev进行了简单的封装形成了Reactor类,并形成了自己稳定的异步服务框架,这里 针对当前网络服务框架进行剖析,以期望未来可以轻松的使用这个框架构建任意的高并发、稳定的后台服务。

阅读全文 »

machine learning tutorial summary

发表于 2017-06-16 |

背景

auc的可行性计算

理论上,基于(fpr,tpr)对图形进行累积可以计算出auc,但是需要进行累加矩形面积,略显啰嗦。实际中可以采用更易计算的公式直接推导即可。一个常用的计算公式如下图所示

其中M是正样本,N是负样本个数。

阅读全文 »
12

crafet

请坚持你的梦想

12 日志
5 分类
26 标签
© 2018 crafet
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4