Skip to content
/ CLIC-GCN Public

基于图卷积网络的自动平台选择器

Notifications You must be signed in to change notification settings

NKcqx/CLIC-GCN

Repository files navigation

基于 GCN 的平台选择器

QuickStart

一、合成训练数据

foo@bar:CLIC-GCN$ python NetCreator.py batch local 10

参数解释:python NetCreator.py [paradigm] [scale] [amount]

  • paradigm: 合成的 Logical Plan 的计算模式,str 类型,可选项: [‘batch’, 'linear', 'streaming']
  • scale: 数据规模,str 类型,可选项: ['local', 'small', 'medium', 'large']
  • amount: 合成的数据量,int 类型

二、训练 GCN 模型

foo@bar:CLIC-GCN$ python train.py -b 16 -emb 512 -e 4096 -lr 0.0001

参数解释参见 python train.py --help

该命令运行流程:

  1. ./data/ 目录下搜索 operator_embedding.ebd 文件,即预训练好的 operator_embedding 模型,若不存在则重新合成数据并训练;
  2. 合成后的 Logical Plan 数据保存在 ./data/Logical Plans/generated 目录下,每个文件表示一个 Logical Plan,以 Pickle 序列化的格式保存;
  3. (增量式)构造 NetDataset 将上述合成的数据集处理为受 pytorch_geometric 支持的格式并聚合至 ./data/Logical Plans/processed/myData.pt 文件中
  4. 使用NetDataset作为训练数据集来训练 GCN 模型,每次训练过程都保存为 tf_event 文件用于 TensorBoard 的可视化并包装入一个目录中保存在 ./log/ 路径下

组件

配置文件

operator.py, platforms.py 中描述了所有运算符和计算平台的元信息,用于后续合成数据。

platform.py 手动定义了所有计算平台,每个计算平台的信息包括支持的计算模式、是否为分布式、计算规模等。

operator.py 手动定义了所有运算符,每个运算符包括计算模式、被支持的计算平台(Platform类)等信息,并在文件末尾按照计算模式分类;

合成器

generator.py, NetCreator.py组成。

generator.py 文件中分别定义了 批处理、流处理、机器学习、图计算的有限状态自动机。 该自动机可根据传入的状态转移概率合成不同规模的 Pipeline 形式的 Logical Plan。 该 Pipeline 中仅包含输入、输出参数数量均为 1 的运算符。

NetCreator.py 是合成数据的重要文件,其利用 generator.py 文件中的自动机合成不同形状、规模、计算模式的 Logical Plan。 以机器学习的 MLFSM 为例,其首先合成了不同长度的 Pipeline(代码中称为 PathNet),然后使用多输入或多输出的运算符作为 Juncture 来链接两条 Pipeline,以此构建一个带分支的 Net。根据 (输入、输出)参数数量的不同,代码中将由(2,1)运算符作为 juncture 的 Net 称为 UpforkNet,(1,2)的为 DownforkNet。 若重复上述过程,同时融合 PathNet, UpforkNet 和 DownforkNet,便可以合成结构更加复杂的 Logical Plan。

OperatorEmbedding

该文件使用 skip-gram 算法训练运算符的 embedding。 为了得到运算符间的关系,代码中将合成的 Logical Plan 的拓扑排序序列看作是运算符的“语句”。

NetDataSet

GCN 的重要组件,用于读取所有合成的 Physical Plan,并将其转为受 pytorch_geometric 支持的格式。 转换过程包括:

  1. 反序列化 Logical Plan 文件为 network.DiGraph
  2. 将图的每个节点编码为特征向量(可使用 onehot 或 embedding)存储在内存
  3. 将每条边存储为 COO 格式的对象,和节点一起,创建为一个 Data 对象保存
  4. 聚合所有 Data 对象并保存

MyGCN

就是构造了个基础的 GCN 网络。

About

基于图卷积网络的自动平台选择器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published