跳到主要内容

分布式训练任务

在分布式训练任务中,用户可以将任务提交到潞晨云平台上,我们会在计算资源可用时运行这些任务。用户可以支付低于按需使用云主机的费用,同时获得满足其需求的计算资源。

先修条件

在使用此功能之前,您需要为此次任务配置环境。我们推荐两种配置环境的方法:

  1. 使用自定义镜像:

    • 用户启动一个实例,并在实例中安装所有必要的库。
    • 要将实例保存为镜像,请去往所选实例的“操作”列,点击 更多 → 保存镜像。 img_save.png
    • 输入镜像名称和描述以保存镜像。 img_environment.png
    • 在启动任务时,您可以使用您的自定义镜像。 img_jobstart.jpg
  2. 手动安装环境命令:

    • 您可以手动输入安装环境的命令,在执行实际任务命令之前配置任务所需的库。

以下将通过一个示例任务来说明这一新功能。

准备工作

机器: 在一台8卡H800上,使用1worker * 8gpu的PyTorchJob。

镜像: 采用Deepspeed镜像。

代码及数据集:

  • 使用mnist-distributed,训练和测试一个简单的 CNN 模型在 FashionMNIST 公开数据集上的表现,具体代码在这里

  • 我们提供不同类型存储(filesystem 或者 highspeed)用来存放代码及数据集,以filesystem为例:

img_store.png

  • 用户可通过创建机器实例修改不同类型存储,该目录已提前配置好上述代码文件mnist.py。

流程

用户自主提交job进行训练,如下:

  • 选择合适的机器配置: img_config.png

  • 添加job相关信息,我们使用deepspeed镜像: img_deepspeed.png

  • 框架采用PyTorchDDPimg_framework.png

  • 挂载之前准备好的共享存储,输入必要命令:

pip install tensorboardX
python /root/highspeedstorage/test-mnist-highspeed/mnist.py --backend=nccl

img_mount.png

  • 创建后开始训练,一段时间后显示succeeded。 img_succ.png

单独配置数据集

  • 上述流程使用的是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
  • 新的任务配置如下: img_new.png