AWS发布PyTorch用S3扩展组件,让用户直接流媒体S3资料训练模型

为了简化用户使用深度学习框架PyTorch,取用训练资料的复杂度,AWS发布适用于PyTorch的Amazon S3扩展组件,这是一个开源函数库,让PyTorch程序能够从S3存储服务流媒体资料,因此开发者就可以在AWS的PyTorch深度学习容器中,使用S3存储桶中的资料以及资料加载API,而不需要先把训练资料加载到本地存储中。

AWS提到,这个适用于PyTorch的S3扩展组件,目的是要作为高性能PyTorch资料集函数库,以低延迟提供高吞吐量,让PyTorch程序能够高性能访问S3存储桶中的资料,对任何大小的资料进行流媒体访问,而这也消除配置本地端容量存储资料集的需求。

该扩展组件提供了一种从S3平行传输资料的方法,开发者不需要担心线程安全或是S3多连接,此外,开发者也可以从.zip或.tar文件流媒体资料,并根据需要在分片内或是跨分片切换资料集,官方提到,之所以该扩展组件能够与PyTorch程序代码库无缝协作,是因为其所提供的S3Dataset和S3IterarableDataset,是PyTorch内部Dataset和IterableDataset接口的实例,因此开发者不需要改变现有程序代码,就能够转而与S3搭配使用。

而且该函数库无关于文件格式,能够将S3中的对象以二进制缓冲区(Blob)呈现,因此可以转换接受自S3的各种资料,同时还能扩展S3Dataset或S3IterableDataset以使用来自S3的资料,或是按需求额外处理资料。适用于PyTorch的S3扩展组件支持Map形式和迭代形式的资料集接口,也就是说,开发者除了能够以索引或是键值访问资料之外,也能够以低成本迭代访问批次资料。

AWS提到,使用这个新的扩展组件,并不会增加原有程序代码的复杂度,其依赖AWS SDK,并使用底层AWS_SDK_CPP组件中的TransferManager API和S3沟通,提供高吞吐量和可靠性,该组件还使用Pybind11来打包C函数,使其可用作为PyTorch资料集结构。用户现在已经可以通过预配置的PyTorch Docker镜像文件取用扩展组件,或是直接从GitHub存储库中下载。