Je-vie

Results 11 comments of Je-vie

> set_in_neighbor,在这版本里面没有用,你可以把这行注释掉 > json2partdat.py 是将json明文数据转换成二进制数据,方便euler快速加载,shard_num 是比partition_num 更上层的概念,partition_num 是实际物理上的分片数,shard_num是euler加载的时候的逻辑分片数 > zk_path 主要使用zk来同步euler上的meta信息 我按照如下的流程进行了工作: 1. 源码编译 euler2.0 2. 跑了run_gat.py 脚本,跑通了,该过程准备了数据,且将cora的原始数据转换成了一个convert_data.json文件 3. 我基于这个json文件,使用自己编写的脚本进行拆分成两个json文件(按照边和其src节点分配到同一个json文件的原则) 4. 接下来将各个json文件转换成二进制文件,按照你说的,我将set_in_neighbor注释掉。依次执行如下: 其中meta为一个只包含 {} 两个字符的文件, shard 设置为2,最后运行成功,在./temp文件中生成了三个文件Edge euler.meta Node, Edge...

> 分布式生成数据这块应该是有个bug,我们会尽快解决 再问几个问题: 1. 我跑的例子,是将切分好的数据直接放到tf的每个worker的机器上(directory = "./temp/euler", 通过类似TONY的分布式训练平台),而没有使用hdfs,我理解这种方式也是可以的吧。 2. 在tf的模型分布式部署的时候,我的理解是: euler将完整的一张图分布存储在多个机器上,每个机器上启动了一个euler的graph engine,这个图引擎将该机器分到的子图全部加载到内存中。 一个上层的GNN算法,需要采样一个batch的数据,这个采样操作可能是多个采样op组成的一个图(比如是samplenode + sampleedge + sampleneighbor +...),该请求图被发送给C++后端的时候,会被解析拆分几个并行的op(指不存在前后依赖的op),然后去各个分布式机器上请求,最后汇总成一个batch数据,返回给模型做为输入。 那么是不是每个机器上的图引擎都将该机器分配到的子图都加载到了内存?还是加载了一部分?这个一部分是不是就是一个.dat ? 此外这些图引擎所在的机器是不是同worker的机器是同一个,能不能比较详细一点的解答一下 shard_num 和tf_worker 和 分片 ,以及最后的.dat 文件,这几个概念,然后解释一下 euler2.0后端是一个什么结构吗?

> 分布式生成数据这块应该是有个bug,我们会尽快解决 这个bug 实在哪里,可以提前告知,我自己改一下,然后能不能出一个分布式部署某个算法的具体的文档例子啊

> 分布式生成数据这块应该是有个bug,我们会尽快解决 想借助euler2.0 来部署公司的分布式,对euler的技术 内幕不是很清楚,可以介绍一下吗,或者有没有博客介绍之类的

> > > 分布式生成数据这块应该是有个bug,我们会尽快解决 > > > > > > 这个bug 实在哪里,可以提前告知,我自己改一下,然后能不能出一个分布式部署某个算法的具体的文档例子啊 > > 目前分布式生成数据的问题是meta生成的不对,这个需要先全部过一遍数据生成meta,然后再过一遍数据生成dat文件 > 如果全量数据不大的话 可以参考这个https://github.com/alibaba/euler/wiki/Euler-2.0-%E6%95%B0%E6%8D%AE%E5%87%86%E5%A4%87#%E4%BD%BF%E7%94%A8build%E5%B7%A5%E5%85%B7%E7%94%9F%E6%88%90euler%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6 > 把全量数据用一个json来处理 是的,我暂时想把你们的gat的例子跑成分布式,你的意思是,可以不用将gat用到的cora的json文件拆分成多个吗?我现在单机本地跑通了 gat 发现生成了一个convert_data.json 文件,意思我可以不用将 其分成多个json,而是直接将其转成二进制文件dat就可以了吗?然后我不把dat推到hdfs(暂时hdfs还有问题,想先跑通数据在本地的情况),而是在每个tf的worker机器上都保存一份数据,就可以使用euler.start()(是否ps chief 和worker 都要跑这个代码) 和tf_euler.initialize_grap()(是否只要worker和chief跑这个代码就好了)就将数据load到每个worker的内存中,并由euler的graph engine来管理其各自的子图了吗?

> 你好,我想问下你的shard_idx 是怎么来的? > shard_num(s) 应该怎样确定? 我是这么理解的,shard_num = 2,是自己定的,我看有10个dat文件,那么我打算用两个机器来load这些子图,两个机器上的shard_idx 分别为 0 和1,这样,连个机器分别处理 0.dat 2.dat 4.dat 6.dat 8.dat 和 1.dat 3.dat 5.dat 7.dat 9.dat

> 我先贴上我的分布式运行脚本: > 我先跑了example/gat/run_gat.py 成功,过程中产生了 cora文件,里面 包含euler/Node euler/Edge等,各包含10个.dat 文件 > 我将euler文件作为data_dir > > ``` > def main(_): > flags_obj = tf.flags.FLAGS > if flags_obj.local: > local_test() > if flags_obj.tfdist: >...

> gat_euler_htj.py 文件是你自己写的吗? 是的

> gat_euler_htj.py 文件是自己写的吗? 就是我贴出来这个代码

> 噢噢,那上面没有导包啥的吗,上来就是main函数吗? 只是摘了部分内容,