為了簡化用戶使用深度學習框架PyTorch,取用訓練資料的復雜度,AWS發(fā)布適用于PyTorch的Amazon S3擴展組件,這是一個開源函數(shù)庫,讓PyTorch程序能夠從S3存儲服務流媒體資料,因此開發(fā)者就可以在AWS的PyTorch深度學習容器中,使用S3存儲桶中的資料以及資料加載API,而不需要先把訓練資料加載到本地存儲中。
AWS提到,這個適用于PyTorch的S3擴展組件,目的是要作為高性能PyTorch資料集函數(shù)庫,以低延遲提供高吞吐量,讓PyTorch程序能夠高性能訪問S3存儲桶中的資料,對任何大小的資料進行流媒體訪問,而這也消除配置本地端容量存儲資料集的需求。
該擴展組件提供了一種從S3平行傳輸資料的方法,開發(fā)者不需要擔心線程安全或是S3多連接,此外,開發(fā)者也可以從.zip或.tar文件流媒體資料,并根據(jù)需要在分片內或是跨分片切換資料集,官方提到,之所以該擴展組件能夠與PyTorch程序代碼庫無縫協(xié)作,是因為其所提供的S3Dataset和S3IterarableDataset,是PyTorch內部Dataset和IterableDataset接口的實例,因此開發(fā)者不需要改變現(xiàn)有程序代碼,就能夠轉而與S3搭配使用。
而且該函數(shù)庫無關于文件格式,能夠將S3中的對象以二進制緩沖區(qū)(Blob)呈現(xiàn),因此可以轉換接受自S3的各種資料,同時還能擴展S3Dataset或S3IterableDataset以使用來自S3的資料,或是按需求額外處理資料。適用于PyTorch的S3擴展組件支持Map形式和迭代形式的資料集接口,也就是說,開發(fā)者除了能夠以索引或是鍵值訪問資料之外,也能夠以低成本迭代訪問批次資料。
AWS提到,使用這個新的擴展組件,并不會增加原有程序代碼的復雜度,其依賴AWS SDK,并使用底層AWS_SDK_CPP組件中的TransferManager API和S3溝通,提供高吞吐量和可靠性,該組件還使用Pybind11來打包C函數(shù),使其可用作為PyTorch資料集結構。用戶現(xiàn)在已經(jīng)可以通過預配置的PyTorch Docker鏡像文件取用擴展組件,或是直接從GitHub存儲庫中下載。