- 博客(40)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 zero-copy加速GNN训练笔记
前言: 好久没更新博客了,添加一篇旧文。该文内容实际有点过时了,DGL最近把data pipeline重构了一下(https://github.com/dmlc/dgl/pull/3665),应该比文中内容更丰富一些了。导言: 最近工作需要调研一下DGL社区的一些动态,发现了这篇针对GNN训练的论文: Large Graph Convolutional Network Training with GPU-Oriented Data Communication Architecture,这里对此做一
2022-04-15 19:19:55
1269
6
原创 DGL中minibatch训练子图Prefetch到GPU中加速
导读: 这两天在研究怎么加速DGL上GNN的训练,使用line_profiler工具发现,除了forward和backward之外,最耗时的是CPU与GPU之间的数据传输(即mini batch训练时将当前batch的子图及对应的feature和label传输到GPU中)。因此尝试使用prefetch,希望在当前batch进行GPU计算的同时,将数据从CPU传到GPU。本文使用的例子是:https://github.com/dmlc/dgl/tree/master/examples/pytorch/ogb.
2021-04-20 19:06:43
1584
3
原创 DGL-kernel的变更(3)
导读: DGL kernel中针对Graph的计算几个版本有了不小的变动。 v0.3-0.4使用的是minigun, v0.3和v0.4源码中主要相关部分则是在对应分支dgl/src/kernel目录下。 v0.5中对kernel代码进行了重写,并不再继续使用minigun,可以参见pull 1644。此时DGL将GNN主要抽象为了SPMM和SDDMM两个接口,这里也可以参考DGL v0.5的论文。 后来AWS DGL团队又提出了一个新的基于tvm的kernel FeatGraph并发表在了S.
2021-03-30 15:35:16
383
原创 DGL-kernel的变更(2)
导读: DGL kernel中针对Graph的计算几个版本有了不小的变动。 v0.3-0.4使用的是minigun, v0.3和v0.4源码中主要相关部分则是在对应分支dgl/src/kernel目录下。 v0.5中对kernel代码进行了重写,并不再继续使用minigun,可以参见pull 1644。此时DGL将GNN主要抽象为了SPMM和SDDMM两个接口,这里也可以参考DGL v0.5的论文。 后来AWS DGL团队又提出了一个新的基于tvm的kernel FeatGraph并发表在了S.
2021-03-30 15:34:30
512
原创 DGL kernel的变更(1)
导读: DGL kernel中针对Graph的计算几个版本有了不小的变动。 v0.3-0.4使用的是minigun, v0.3和v0.4源码中主要相关部分则是在对应分支dgl/src/kernel目录下。 v0.5中对kernel代码进行了重写,并不再继续使用minigun,可以参见pull 1644。此时DGL将GNN主要抽象为了SPMM和SDDMM两个接口,这里也可以参考DGL v0.5的论文。 后来AWS DGL团队又提出了一个新的基于tvm的kernel FeatGraph并发表在了S.
2021-03-30 15:31:40
420
原创 edge_softmax时间和显存对比
接上一篇spmm之后针对edge_softmax的实验:三者的结果上实验注意:当两个结点之间有多条边时,dgl和torch.sparse中的softmax上是会有点区别的,torch构建的稀疏矩阵会直接累加两个结点之间的边上的值,dgl则会分别对待,可以参考:https://github.com/dmlc/dgl/issues/2311。import torchimport numpy as npimport torch_sparseimport dglimport torch_geometr
2021-03-30 15:27:59
823
原创 torch、torch_sparse、dgl三者spmm显存占用对比
简单比较一下torch原生,torch_sparse(pyG依赖模块)以及DGL中spmm的显存占用和时间torch原生,显存占用主要是对结点敏感(bakward的时候用的稠密张量)。# -*- coding: utf-8 -*-"""@Author: @Time: 2020/12/1@Description: """import torchimport numpy as npimport torch_sparseimport dglimport timen = 60000nn
2021-03-30 15:21:01
3701
1
原创 DGL0.5中的g-SpMM和g-SDDMM
DGL0.5中的g-SpMM和g-SDDMM导读:之前对DGL0.5论文中的g-SpMM和g-SDDMM做了个简单的笔记,这次去DGL源码中看一下其相关的使用。使用pytorch中的GATConv作为入口。 论文中提到说:users can invoke the g-SpMM and g-SDDMM kernels via theg.update_all($\phi$,$\rho$) and g.apply_edges($\phi$) calls on a DGLGraph. 正好GA
2021-03-30 15:17:09
1079
1
原创 DGL0.5中的g-SpMM和g-SDDMM
DGL0.5中的g-SpMM和g-SDDMM导读:DGL0.5版本发布时,其团队也对应发表了一篇论文(https://arxiv.org/abs/1909.01315),较为详细了介绍了DGL的设计、优化以及性能。其中的重要部分就是DGL认为GNN的计算可以归纳为两种,g-SpMM(generalized sparse-dense matrix multiplication)和g-SDDMM(generalized sampled dense-dense matrix mutiplication)。这里
2021-03-30 15:05:47
3309
原创 CentOS7离线安装Docker+Nvidia Container
导读:服务器需要使用Docker,但无法连接外网,因此只能离线安装。系统版本为CentOS7.1.安装Docker一种方式是在有网的机器上,下载相应的包,具体参考:https://yeasy.gitbook.io/docker_practice/install/offline以及:https://docs.docker.com/engine/install/centos/值得注意的是,如果有网的机器系统是Ubuntu(个人用户较多),也可以下载yum后使用上述第一个链接中的方法进行安装。最终下.
2020-10-18 12:55:45
1835
原创 利用matlab处理tiff格式的遥感图像
需求:需要对tiff格式的sar遥感图像进行检测,因此通过matlab进行预处理,将tiff格式转化为jpg格式,并且提取其中的经纬度信息到txt中。最后将检测完毕的图像写回遥感图像。实现:利用matlab完成1.tiffToJPG.m 作用:将tiff转为jpg并提取信息到txt%This function is used to extract remote sensing image ...
2020-09-02 23:45:40
2061
原创 GraphSAGE无监督学习DGL实现简单梳理
DGL中master分支2020.08.20版本的GraphSAGE无监督的实现梳理。因为master分支变化很大,所以可能以后代码会不太一样。代码地址:https://github.com/dmlc/dgl/blob/master/examples/pytorch/graphsage/train_sampling_unsupervised.py1.采样是根据边的id来采的,而且使用了整个graph的所有边。n_edges = g.number_of_edges()train_seeds = n.
2020-08-23 11:00:35
4375
5
原创 TensorFlow多机分布式训练
TF分布式训练导读:记录如何使用tensorflow进行分布式训练,主要参考文档:https://tensorflow.google.cn/tutorials/distribute/multi_worker_with_keras?hl=en环境:Hadoop 3.2.1Tensorflow 2.1.0python 3.7.6使用的是CPU进行分布式训练准备 各软件安装完成后...
2020-04-01 14:13:25
1127
1
原创 TensorFlowOnSpark运行demo
TensorFlowOnSpark运行demo导读:记录正常运行tensorflowOnSpark的数据转换、模型训练、模型inference的流程,只看官方的文档很难成功运行。主页:https://github.com/yahoo/TensorFlowOnSpark环境:Spark 2.4.5Hadoop 3.2.1Tensorflow 2.1.0TensorflowOnSpa...
2020-03-31 20:19:11
1511
8
原创 matlab画柱状图并填充
导读:记录一下如何使用matlab画柱状图,并进行填充。版本: matlab 2017b.注意:使用matlab2016版本似乎会有bug。1.辅助函数makehatch.mfunction A = makehatch(hatch)%MAKEHATCH Predefined hatch patterns% MAKEHATCH(HATCH) returns a matrix ...
2019-06-20 23:04:45
13230
16
原创 ubuntu16.04下teamviewer启动不显示界面
导读:在Ubuntu下使用teamviewer的时候,通过命令行输入 teamviewer ,不会出现界面。就像这样,没有显示teamviewer的界面:[adminuser@adminuser-pc ~]$ teamviewerInit...CheckCPU: SSE2 support: yesChecking setup...Launching TeamViewer ...La...
2019-05-15 21:48:44
18971
23
原创 Flink读取HDFS中的数据源码分析
Flink版本:1.4.2 目的:本文主要是了解Flink中DataSource是如何从HDFS中读取数据的。梳理一下大致流程: 在JobManager处,通过提交得来的JobGraph生成ExecutionGraph时,会将JobGraph中的每个JobVertex都转换成ExecutionJobVertex(注意ExecutionJobVertex和ExecutionVertex...
2019-03-08 13:49:25
5640
1
原创 Ubuntu下安装Gurobi
环境: Ubuntu16.04 Gurobi8.1step1. 去官网下载gurobi,网址:http://www.gurobi.com/downloads/gurobi-optimizerstep2: 解压下载的文件,命令如下:tar xvfz gurobi8.1.0_linux64.tar.gzstep3: 设置环境变量,注意这部分"/home/hadoop/...
2019-01-12 15:24:39
4711
1
原创 Flink中的RangePartition
Flink中的RangePartition导读: RangePartition是Flink批处理中的一个算子,用于数据分区。 在Flink批处理的优化器中,会专门针对RangePartition算子进行一次优化,主要是通过采样算法对数据进行估计,并修改原job生成的OptimizedPlan。本文通过一个示例,对这个过程进行相关介绍。示例如下:其主要功能是先进行RangePart...
2019-01-01 21:02:42
1325
原创 对Flink集群进行远程调试
导读:在学习或者使用各个大数据框架的时候,往往想对runtime层次的代码进行调试或者跟踪阅读,但其往往部署在其他机器上,因此需要进行远程调试。本文以Flink为例,介绍如何通过IDEA进行Flink的runtime层次的远程调试。环境: Flink1.4.2 IntelliJ IDEA 虚拟机模拟的Flink集群先对Flink的作业提交过程进行简单介绍(以批处理为例)...
2019-01-01 16:14:55
7405
5
原创 Flink集群的启动
导读:记录一下Flink源码的阅读过程Flink版本:1.4.21.start-cluster.sh 集群启动的脚本,在脚本中通过运行jobmanager.sh和TMSlaves start来启动JobManager和TaskManager。其中TMSlaves定义在config.sh中。2.config.sh 这里只看一下TMSlaves()函数,可以看到其是通过调用ta...
2019-01-01 14:17:35
5014
原创 Ubuntu下Java调用matlab
导读:记录一下java调用matlab遇到的问题环境:Ubuntu16.04java 1.8matlab 2017a1.matla打jar包:参考:https://blog.youkuaiyun.com/cs_fang_dn/article/details/502391152.注意装完后要添加环境变量:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u...
2018-12-26 20:44:32
283
原创 通过Apache Beam官方实例User Score实验流式join
不建议阅读,太乱了使用UserScore例子中的Input.UnboundedGenerator()不使用window的时候,无界数据是不能和有界数据join的。Join需要使用相同的窗口。不能一个是globalWindow一个是fixedWindowException in thread "main" java.lang.IllegalStateException: GroupByK...
2018-12-25 16:43:05
687
原创 Beam中流的join之kafka和文件join
导读:读取文件中的数据和kafka读取的数据进行join虽然可以从kafka读,但写入文件不能采用Unbounded的形式,因此只能读前几条记录或者一段时间的记录进行处理(代码第112-114行左右)。完整代码:/** * 利用kafka进行 Join 测试 * Beam版本:2.3 * @author: maqy * @date: 2018.09.22 */import ...
2018-12-25 16:35:56
499
原创 Beam中的join
++Beam版本:2.3++Beam中默认的API中没有提供join算子,但是提供了一个额外的库,可以进行join。将以下添加到pom.xml文件中即可使用:<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-sdks-ja
2018-12-25 16:21:31
441
原创 IDEA打jar包
Step1:File–>Project Structure–>Artifacts–> + -->JAR–>Create JAR from Module注意:同一个界面中的 Directory for META-INF/MANIFEST>MF:中的目录,可能需要把最后的 /src/main/java 改为 /src ,否则打的jar包中会缺少文件,运行会报...
2018-12-25 15:54:59
181
原创 将Flink中的批处理的WordCount转化为流处理的WordCount
将Flink中的批处理的WordCount转化为流处理的WordCount目的:将Flink中批处理的WordCount转化为流处理的WordCount作用:感觉毫无用处如何实现:将批的environmentBatch中的各个算子,在流的environmentStream中重写一遍代码如下:package org.apache.flink.examples.java.maqy;/...
2018-12-25 15:16:23
993
原创 水塘采样(Reservoir sampling)算法
最近看了Flink中的rangePartition使用了水塘采样算法,因此参考维基百科详细了解了一下。采样的关键在于对每个元素的选取需要是等概率的。水塘采样其目的在于从包含n个项目的集合S中选取k个样本,其中n为一很大或未知的数量,尤其适用于不能把所有n个项目都存放到主内存的情况。适用问题:1.可否在一未知大小的集合中,随机取出k个元素?2.在不知道文件总行数的情况下,如何从文件中随机的...
2018-12-22 01:11:32
1474
原创 Tensorflow Object Detection API分布式训练模型
说明:Tensorflow官方的models项目(https://github.com/tensorflow/models)中已经支持了各种模型的训练和验证,并且有详细的教程,但是在models/research/Object_detection的教程中并没有提及如何进行分布式训练,本文旨在介绍如何进行分布式的Object_detection训练。环境: - 3台ubuntu 16....
2018-03-08 14:54:58
3219
7
原创 文档
SAR舰船识别文档 输入:HDFS的待检测SAR图像(.tiff文件)路径 如:/test 输出:检测出的舰船经纬度具体流程 1.通过调用命令行将HDFS上的.tiff图像下载到本地。 2.通过matlab封装的jar包,对.tiff图像进行预处理,得到jpg和经纬度的txt文件。 3.将所有jpg的图像路径通过脚本写入到 path.txt文件中 4.通过脚本调用yolo检测
2017-11-27 10:12:46
270
原创 yolo2 检测到的物体输出2
说明检测到的物体被box所标记,输出box所在的位置,并存储到txt中。上次是在src/image.c的代码中修改的,相当于是在画出检测出的物体的框的同时把坐标存入了txt,这次修改的是examples/detector.c文件。先来看一下主函数 examples/darknet.c官网上运行的示例测试代码为:其中运行的主函数的源码就是examples/darknet.c,后面的detecto
2017-11-03 16:14:24
1047
3
转载 联想笔记本安装ubuntu16.04没WiFi
http://www.linuxidc.com/Linux/2015-04/116077.htm
2017-07-20 16:13:04
3034
原创 yolo2检测到的物体位置输出
说明检测到的物体被box所标记,输出box所在的位置,并存储到txt中。(待完善,如何根据每个图片名字存储不同的txt)进入src/image.c,修改void draw_detections函数。void draw_detections(image im, int num, float thresh, box *boxes, float **probs, float **masks, char
2017-07-20 15:54:55
1692
2
原创 制作自己的yolo2数据集进行训练
说明本文承接上一篇修改yolo2相关配置的博客,用来说明如何制作自己的训练数据,。主要流程就是手动标注目标信息了,当然,图片首先要自己准备好。注意:本文的识别类型只有1类工具- 画框程序 https://github.com/puzzledqs/BBox-Label-Tool - 格式转换程序https://github.com/Guanghan/darknet?files=1
2017-07-20 15:40:59
1981
原创 yolo2修改配置文件训练自己的数据集
说明本文主要介绍用yolo2训练自己的数据集时要修改的配置文件。(自己也在摸索中,以后会慢慢修改)Markdown和扩展Markdown简洁的语法环境- ubuntu 16.04 - cuda 8.0 - opencv 3.2 - darknet(17年7月) ps:安装darknet的时候,并没有带着opencv编译,编译出来opencv有6个多g,编译需要快1小时。带opencv编
2017-07-20 13:42:59
2773
原创 联想拯救者r720自带win10安装linux(ubuntu)双系统
联想拯救者R720自带win10安装linux(ubuntu)双系统准备事项 - ubuntu的u盘启动(网上有教程,下个比较新的版本,本人用的ubuntu16.04) - 关闭win10的快速启动(也可以不关闭,不关闭的话可能会导致以后ubuntu不能读取windows里的盘符。) - 在磁盘管理器中压缩出给ubuntu的空闲空间,然后关闭计算机。我是128gSSD+1THDD,win10作
2017-07-13 09:06:32
30595
6
原创 命令行压缩jar包cvfm和cvfe
初学Java,在学习JAR压缩时,corejava教材中看似长篇大论,实讲没有讲清楚,这里作下笔记,说明实际使用中体会到的参数“cvfm” 和”cvfe”的区别: 两者主要区另在于”m”和”e”(m即先写好MANIFEST.MF文件,然后打包,e则是打包时指定主函数的类名,自动填入MANIFEST.MF中):cvfm用法如:jar cvfm Myprogram.jar MANIFEST.MF *.
2017-05-13 10:04:51
7117
转载 ArcGisOnline入门
1.图层管理:惯用方法是将点(例如火山)放置在线的上方,将线(例如高速公路)放置在面的上方。点、线和面均为要素图层:它们通常表示离散的地理对象,这些对象具有或多或少的精确位置和边界。Terrain 图层(例如地形底图)是切片图层。切片图层是图像,不能采用与要素图层相同的方式对其进行操作。它们通常表示大型的连续表面,而不是离散对象。不能在地图中将切片图层移动至要素图层上方。2.从CSV文
2017-04-29 15:52:32
4403
转载 hadoop安装配置中的一些问题
1.安装配置java时 程序 ‘java’ 已包含在下列软件包中: * default-jre * gcj-4.8-jre-headless * gcj-4.9-jre-headless * openjdk-7-jre-headless * openjdk-6-jre-headless * openjdk-8-jre-headless 请尝试:apt-get instal
2017-04-17 11:31:17
493
1
原创 hadoop2.7.3的安装
1. 准备工作1.已安装的linux系统,我安装的是ubuntu16.04.2。可以用虚拟机进行安装。 jdk和hadoop的安装包。我的版本是jdk-8u121-linux-x64和hadoop-2.7.3。 2. 在linux系统下创建hadoop用户 创建hadoo用户是为了更加方便,如果只是为了实验,也可以不创建。 创建hadoop用户的命令:sudo useradd -m
2017-04-16 00:59:36
459
C语言中 c=fgetc(fp)!=EOF这个表达式的结合顺序是什么?
2015-08-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人