在aws sagemaker模型培训中是否存在某种持久的本地存储?

时间:2018-01-18 11:10:39

标签: amazon-sagemaker

我使用aws sagemaker进行了一些实验,而S3的大型数据集的下载时间非常有问题,特别是当模型仍在开发中时,你想要某种初始反馈相对较快

是否有某种本地存储或其他方式来加快速度?

修改 我指的是批处理培训服务,它允许您将作业作为docker容器提交。

虽然此服务适用于通常运行很长时间的已经验证的作业(这使得下载时间不那么重要),但仍需要快速反馈

  1. 没有其他办法可以用sagemaker基础设施(配置文件,数据文件等)对你的工作进行“集成”测试。
  2. 在尝试模型的不同变化时,能够相对快速地获得初始反馈非常重要

2 个答案:

答案 0 :(得分:4)

SageMaker中有一些不同的服务,每个服务都针对特定用例进行了优化。如果您正在谈论开发环境,那么您可能正在使用笔记本服务。笔记本实例带有本地EBS(5GB),您可以使用它将一些数据复制到其中并运行快速开发迭代,而无需每次从S3复制数据。这样做的方法是从笔记本单元格或从目录列表页面打开的终端运行wgetaws s3 cp

尽管如此,建议不要将太多数据复制到笔记本实例中,因为这会导致您的培训和实验花费太长时间。相反,您应该使用SageMaker的第二部分,即培训服务。根据笔记本实例上小型数据集的快速迭代,一旦您对要训练的模型有了良好的认识,就可以指定模型定义在一组训练实例中并行查看更大的数据集。当您发送培训作业时,您还可以定义每个培训实例将使用多少本地存储,但您将从分布式培训模式中获益最多。

如果您想优化培训工作,您可以选择一些存储空间。首先,您可以为每个群集实例定义您希望模型训练的EBS卷的大小。您可以在启动培训作业(https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html)时指定它:

...
   "ResourceConfig": { 
      "InstanceCount": number,
      "InstanceType": "string",
      "VolumeKmsKeyId": "string",
      "VolumeSizeInGB": number
   },
...

接下来,您需要确定要训练的模型类型。如果您正在训练自己的模型,您就会知道这些模型如何在格式,压缩,源和其他因素方面获取数据,这些因素会影响将数据加载到模型输入中的性能。如果您更喜欢使用SageMaker所具有的内置算法,这些算法已经过优化,可以处理protobuf RecordIO格式。请在此处查看更多信息:https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-training.html

您可以从中受益的另一个方面(或者想要以更具可扩展性和优化的方式实现自己的模型)是 TrainingInputMode https://docs.aws.amazon.com/sagemaker/latest/dg/API_AlgorithmSpecification.html#SageMaker-Type-AlgorithmSpecification-TrainingInputMode):

  

类型:字符串

     

有效值:管道|文件

     

必填:是

您可以使用File模式从S3读取数据文件。但是,您也可以使用Pipe模式,这会打开很多选项来以流模式处理数据。它并不仅仅意味着使用AWS Kinesis或Kafka等流媒体服务的实时数据,而且您还可以从S3读取数据并将其流式传输到模型,并完全避免在本地存储数据的需要。训练实例。

答案 1 :(得分:0)

使用Amazon SageMaker自定义笔记本计算机的卷大小,最大16 TB

  

Blockquote Amazon SageMaker现在允许您在需要存储大量数据时自定义笔记本计算机的存储量。

     

Blockquote在开发机器学习模型时,为笔记本实例分配正确的存储空间很重要。您可以使用存储量在本地处理大型数据集或临时存储其他数据以供使用。

     

Blockquote您使用Amazon SageMaker创建的每个笔记本实例均带有5 GB的默认存储量。您可以选择5 GB到16384 GB之间的任意大小,以1 GB为增量。

使用Amazon SageMaker控制台创建笔记本实例时,可以定义存储量:

see the steps