在 Sagemaker GPU 上训练太慢

时间:2021-04-22 12:32:48

标签: computer-vision pytorch amazon-sagemaker

我在 Sagemaker Studio 中使用 PyTorch 启动了 CelebA 数据集的二元分类训练。

我已确保所有模型、张量都发送到 cuda()。

我的图像数据集在 S3 中,我正在通过此导入和代码访问它:

from PIL import Image
import s3fs

fs = s3fs.S3FileSystem()

# example
f = fs.open(f's3://aoha-bucket/img_celeba/dataset/000001.jpg')

当然还有我的 PyTorch DataLoader 类,它使用 s3fs 将数据加载到 DataLoader 中。

class myDataset(Dataset):
    def __init__(self, csv_file, root_dir, target, length, adv = None, transform=None):
        self.annotations = pd.read_csv(csv_file).iloc[:length,:]
        self.root_dir = root_dir
        self.transform = transform
        self.target = target
        self.length = length
        self.adv = adv

    def __len__(self):
        return len(self.annotations)

    def __getitem__(self, index):
        img_path = fs.open(os.path.join(self.root_dir, self.annotations.loc[index, 'image_id']))
        image = Image.open(img_path)
        image = np.array(image)

        if self.transform:
            image = self.transform(image=image)["image"]

        image = np.transpose(image, (2, 0, 1)).astype(np.float32)
        image = torch.Tensor(image)

        y_label = torch.tensor(int(self.annotations.loc[index, str(self.target)]))

        if self.adv is None:
            return image, y_label

        if self.adv :
            z_label = torch.tensor(int(self.annotations.loc[index, 'origin']))
            return image, y_label, z_label

当我运行这个函数时,我得到真:

next(model.parameters()).is_cuda

我的问题是,我不知道训练太慢,甚至比我的本地 CPU 还慢(不是那么强大)。例如,它说一个 epoch 需要 1h45 分钟,这太多了。

我使用的是经过 GPU 优化的 Studio 的 PyTorch 实例。

您是否曾经使用 PyTorch 在 Sagemaker 中启动过 GPU 培训? 你能帮忙吗?

非常感谢, 哈比

0 个答案:

没有答案