发布于: Oct 30, 2022

    

对于输入通道的具体配置,您可以在 Amazon SageMaker 控制台的训练任务创建过程中通过集成界面来具体指定:

以下是 S3 作为输入通道数据源的配置:

以下是 EFS 作为输入通道数据源的配置:

以下是使用 Amazon FSx for Lustre 作为输入通道数据源的配置:

如果您使用编程的方式来创建和提交 Amazon SageMaker 的训练任务,您可以使用以下的 API 来构建不同的输入数据源:

from sagemaker.inputs import FileSystemInput
from sagemaker.inputs import TrainingInput

content_type = 'application/x-image'


fs_train = FileSystemInput(file_system_id='fs-c0de3680',
                                    file_system_type='EFS',
                                    directory_path='/caltech/256_ObjectCategories',
                                    content_type=content_type,   
                                    file_system_access_mode='ro')
fs_validation = FileSystemInput(file_system_id='fs-c0de3680',
                                    file_system_type='EFS',
                                    directory_path='/caltech/256_ObjectCategories',
                                    content_type=content_type,
                                    file_system_access_mode='ro')

fs_train_lst = TrainingInput(s3train_lst, content_type=content_type)

fs_validation_lst = FileSystemInput(file_system_id='fs-0cd42e47a9d3be5e1',
                                    file_system_type='FSxLustre',
                                    directory_path='/k4jhtbmv/image-classification/validation_lst',
                                    content_type=content_type,
                                    file_system_access_mode='ro')


data_channels = {'train': fs_train, 'validation': fs_validation, 
                 'train_lst': fs_train_lst, 'validation_lst':fs_validation_lst}

在以上的代码例子中训练集和验证集都以文件对象形式存储于 Amazon S3 上。考虑到 lst 文件的使用特点,将用于训练集的 .lst 列表文件存放于 EFS 上,将用户验证集的 .lst 列表文件存放于 Amazon FSx for Lustre 上。

通过以上代码创建的训练任务会从来自于 3 个不同的数据源获取训练所需的输入数据,增加了训练任务数据准备的灵活性。 

Amazon SageMaker 可以同时使用 Amazon S3Amazon EFS Amazon FSx for Lustre 三种不同的存储服务类型作为输入通道的数据源。在具体的机器学习场景中如何选择合适的存储服务呢?

我们建议从确定当前您的训练数据保存的位置开始入手:

如果您的训练数据已经在 Amazon S3 上,并且对完成目前训练任务的时间感到满意,那您可以继续使用 Amazon SageMakerAmazon S3 进行训练任务。然而,如果您需要更快地启动训练任务,更短的训练时间,我们建议您可以使用与 Amazon S3 原生集成的文件系统 Amazon FSx for Lustre.

通过 Amazon FSx for LustreAmazon SageMaker 可以高速访问您在 Amazon S3上的训练数据,从而加速您的机器学习训练任务。在您第一次运行训练任务时,Amazon FSx for Lustre 会自动把训练数据从 Amazon S3 下载并提供给 Amazon SageMaker。此外,训练任务的后续迭代可以继续使用这些数据,避免了重复从 Amazon S3 多次下载同样的数据。正因为如此,对于训练数据存放于 Amazon S3,并需要多次使用不同的训练算法和训练参数来进行训练任务以评价最优结果的场景来说,使用 Amazon FSx for Lustre 会有带来非常大的好处。

如果您的训练数据已经在 Amazon EFS 文件系统中,我们建议您使用 Amazon EFS 作为数据源。训练任务可以直接使用 Amazon EFS 上的数据,无需额外的数据搬运工作,加速了训练的启动时间。一些典型的场景包括:数据科学家已经在 Amazon EFS 上有所属目录,并且在不断引入新的数据来对模型进行快速迭代,同时可能需要在同事之间进行数据分享,在数据的字段或标注上进行各种试验。

其次,机器学习训练数据集,尤其是训练数据的索引文件(上文提到的.lst文件)是否会频繁地进行内容变更也是需要考虑的因素:

通常来说 Amazon S3 作为对象存储,更适合存放内容不会发生变化的数据文件;

如果文件内容需要频繁进行增减或者部分修改,那么我们建议您可以考虑使用 Amazon EFS Amazon FSx for Lustre 来存放您的数据文件。作为共享文件系统 Amazon EFSAmazon FSx for Lustre 提供了 POSIX 的文件操作接口并具备块级别的修改能力,方便与现有的机器学习工作流程进行集成。 

Amazon SageMaker 可以同时使用 Amazon S3Amazon EFSAmazon FSx for Lustre 三种不同的存储服务类型作为输入通道的数据源,用户可以根据自己的使用场景、工作流程以及各个存储的特点,灵活组合各种数据来源,实现机器学习训练任务的高效运行。

相关文章