User Guide on Alibaba Cloud
简介
本文档用示例说明如何在阿里云上使用GraphLearn-for-pytorch(GLT)来训练GNN模型。
环境准备
产品官网
数据和代码准备
可提前创建NAS资源,并在NAS中克隆GLT的代码库。也可在下文DSW和DLC任务运行过程中准备代码和数据,具体步骤在后续章节详细描述。
DSW
在机器学习PAI产品控制台左侧选择交互式模式(DSW),进入DSW。 使用DSW可运行GLT的单机单卡和单机多卡的训练任务。
1. 创建实例
点击“创建实例”,进行配置。
“地域及可用区”、“所属工作空间”、“实例名称”、“是否仅自己可见”参考DSW文档。
“资源组”:可以选择CPU规格,也可以选择GPU规格。多卡GPU规格的配置下,GraphLearn-for-torch能获得更优的性能,建议选择GPU规格。
“数据集”:数据集创建和挂载为可选。数据集用于存储GraphLearn-for-Pytorch任务运行的输入图数据、运行过程中的日志。当输入数据需要在多个DSW的任务中反复使用时,需要根据系统提示创建数据集。建议创建数据集并进行挂载,下文将以挂载路径为”/mnt/data”示例。
“选择镜像”:选择“镜像URL”,填入 graphlearn/graphlearn_for_pytorch:1.0.0-ubuntu20.04-py3.8-torch1.13-cuda11.6。
warning 注意,该镜像要求“资源组”为“GPU”规格,我们暂时未提供预装GLT的CPU镜像,如需要使用CPU规格,请预先准备CPU镜像,并根据文档提示安装依赖的库和CPU版本的GLT。
2. 运行任务
安装wheel包
pip install graphlearn_torch ogb
# 在notebook中运行:!pip install graphlearn_torch ogb
Clone代码(如挂载的数据集中已存在,则可忽略此步骤)
git clone https://github.com/alibaba/graphlearn-for-pytorch.git
运行单机任务
DLC
在机器学习PAI产品控制台左侧选择容器训练(DLC),进入DLC。 我们使用DLC演示GLT多机多卡的训练任务。多机训练时,GLT的输入数据需要提前进行分片,因此,我们需要提交两个DLC任务:
训练数据准备
运行GNN训练任务
1. 训练数据准备
训练使用相同数据时,此任务只需要运行一次。
1.1. 任务参数配置
“资源组”:参考DLC文档
“任务名称”:自定义
“节点镜像”: 选择“镜像地址”,填写graphlearn/graphlearn_for_pytorch:1.0.0-ubuntu20.04-py3.8-torch1.13-cuda11.6
“任务类型”: PyTorch
“数据集配置”: 根据系统提示创建数据集并进行挂载,下文以挂载路径“/mnt/data”为例进行说明。
“代码配置”:可忽略
“执行命令”:
pip install graphlearn-torch && pip install ogb &&
cd /mnt/data/code/ &&
git clone https://github.com/alibaba/graphlearn-for-pytorch.git &&
cd graphlearn-for-pytorch/examples/distributed &&
echo "y\ny" > input.txt &&
python partition_ogbn_dataset.py < input.txt --dataset=ogbn-products --num_partitions=2
说明:
git clone ...:
克隆graphlearn-for-pytorch的代码,如果挂载的文件系统中已经存在,则不再需要运行。
echo "y\ny" > input.txt && python partition_ogbn_dataset.py < input.txt:
partition_ogbn_dataset.py运行时会接受interactive的输入,询问用户是否下载数据,如数据已经存在可不再重复下载。由于DLC运行时无法interactive输入,我们将输入重定向为文件input.txt;
echo -e "y\ny" | python XXX的方式在DLC上不work。
warning 注意,
--num_partitions参数填写必须和后续“运行GNN训练任务”中的Worker数一致。
“三方库配置”:忽略
“容错监控”:可选,详细参考DLC用户文档
“专有网络配置”:可选,详细参考DLC用户文档
1.2. 任务资源配置
“节点数量”:1
“节点配置”:GPU实例, 建议选择 ecs.gn6v-c8g1.2xlarge。
1.3. 提交任务
点击“提交”,等待任务运行完成。此任务大概需要运行10分钟,受网络状态影响。
2. 运行GNN训练任务
2.1. 任务参数配置
“资源组”:参考DLC文档
“任务名称”:自定义
“节点镜像”:选择“镜像地址”,填写graphlearn/graphlearn_for_pytorch:1.0.0-ubuntu20.04-py3.8-torch1.13-cuda11.6
“任务类型”: PyTorch
“数据集配置”: 配置NAS数据集,并挂载和任务1中相同的路径
“代码配置”:可忽略
“执行命令”:
pip install graphlearn-torch && pip install ogb &&
cd /mnt/data/code/graphlearn-for-pytorch/examples/distributed &&
python dist_train_sage_supervised.py --master_addr=$MASTER_ADDR \
--training_pg_master_port=12345 \
--train_loader_master_port=12346 \
--test_loader_master_port=12347 \
--num_training_procs=1 \
--num_nodes=$WORLD_SIZE \
--node_rank=$RANK
参数说明详见代码。
2.2. 任务资源配置
“节点数量”:2(此参数和“训练数据准备”中的“num_partitions”参数需一致。)
“节点配置”:GPU实例, 多机单卡可选择ecs.gn6v-c8g1.2xlarge,多机多卡可选择ecs.gn6v-c8g1.8xlarge。
2.3. 提交任务
点击“提交”,等待任务运行完成。此任务多机单卡默认参数配置大概需要运行20分钟。