我想从 s3 存储桶读取多个文本文件,该文件将组成 10M 记录和 900 列的数据帧。 但使用ml.p3.2xlarge实例读取数据花费的时间太长。此外,我想知道是否有更好的方法来读取aws大型实例中所有可用资源的数据。
以下是我现在使用的代码。
def get_data(prefix_objs = prefix_objs, bucket = bucket, i = 0, prefix_df = [], cols = col):
for obj in prefix_objs:
i += 1
key = obj.key
file_path = 's3://' + bucket.name +'/'+str(key)
temp = pd.read_csv(file_path,
sep = "|",
usecols = col)
print("File No: {}".format(i))
prefix_df.append(temp)
return pd.concat(prefix_df)
使用 python boto3 客户端或异步版本 aioboto3 从 AWS S3 下载文件
这是在 SageMaker 笔记本实例还是 SageMaker 训练作业(异步作业)中?
对于培训工作,请参阅此指南。
对于笔记本实例,您可以通过首先使用 CLI 命令:
aws s3 sync s3://... /tmp
在本地复制所有文件,然后从磁盘读取它们来获得更好的性能。
附注 - 尝试切换 P3->G5 实例 - p3.2xlarge 是一种非常旧的实例类型。使用 g5 实例,您将获得更好的成本/效率和更多的 GPU RAM,而且 g5 具有本地 SSD 驱动器,其中 p3.xlarge 使用较慢的 EBS 卷。