分布式训练任务
在分布式训练任务中,用户可以将任务提交到潞晨云平台上,我们会在计算资源可用时运行这些任务。用户可以支付低于按需使用云主机的费用,同时获得满足其需求的计算资源。
先修条件
在使用此功能之前,您需要为此次任务配置环境。我们推荐两种配置环境的方法:
使用自定义镜像:
- 用户启动一个实例,并在实例中安装所有必要的库。
- 要将实例保存为镜像,请去往所选实例的“操作”列,点击 更多 → 保存镜像。
- 输入镜像名称和描述以保存镜像。
- 在启动任务时,您可以使用您的自定义镜像。
手动安装环境命令:
- 您可以手动输入安装环境的命令,在执行实际任务命令之前配置任务所需的库。
以下将通过一个示例任务来说明这一新功能。
准备工作
机器: 在一台8卡H800上,使用1worker * 8gpu的PyTorchJob。
镜像: 采用Deepspeed镜像。
代码及数据集:
使用mnist-distributed,训练和测试一个简单的 CNN 模型在 FashionMNIST 公开数据集上的表现,具体代码在这里。
我们提供不同类型存储(filesystem 或者 highspeed)用来存放代码及数据集,以filesystem为例:
- 用户可通过创建机器实例修改不同类型存储,该目录已提前配置好上述代码文件mnist.py。
流程
用户自主提交job进行训练,如下:
选择合适的机器配置:
添加job相关信息,我们使用deepspeed镜像:
框架采用
PyTorchDDP
:挂载之前准备好的共享存储,输入必要命令:
pip install tensorboardX
python /root/highspeedstorage/test-mnist-highspeed/mnist.py --backend=nccl
- 创建后开始训练,一段时间后显示succeeded。
单独配置数据集
- 上述流程使用的是FashionMNIST公开数据集。用户也可自行配置数据集到共享存储上。我们进入instance,修改上述代码的数据集目录到实际挂载的目录下:
train_loader = torch.utils.data.DataLoader(
datasets.FashionMNIST('/root/filesystem/test-mnist/data/fashion', train=True, download=False,
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])),
batch_size=args.batch_size, shuffle=True, **kwargs)
test_loader = torch.utils.data.DataLoader(
datasets.FashionMNIST('/root/filesystem/test-mnist/data/fashion', train=False, transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])),
batch_size=args.test_batch_size, shuffle=False, **kwargs)
- 将真正的数据集放到共享存储,这里直接提前下载好公开数据集:
cd /root/filesystem/test-mnist
// git clone https://github.com/zalandoresearch/fashion-mnist.git
wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz
wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz
wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz
wget http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz
gunzip train-images-idx3-ubyte.gz
gunzip train-labels-idx1-ubyte.gz
gunzip t10k-images-idx3-ubyte.gz
gunzip t10k-labels-idx1-ubyte.gz
cp -r ~/filesystem/test-mnist/fashion-mnist/data/fashion/ ~/filesystem/test-mnist/data
- 新的任务配置如下: