我用内置的 RESnet18 docker 镜像训练了一个模型,现在我想将该模型部署到一个端点并分类大约 100 万张图像。我的所有训练、验证和测试图像都以 RecordIO 格式(使用im2rec.py转换)存储在 S3 上。根据文档:
Amazon SageMaker 图像分类算法支持 RecordIO (application/x-recordio) 和图像 (application/x-image) 内容类型进行训练。该算法仅支持 application/x-image 进行推理。
所以我无法对 RecordIO 格式的训练数据进行推理。为了克服这个问题,我将所有原始 .jpg 图像(约 2GB)复制到我的 Sagemaker Jupyter Notebook 实例上,并按以下方式一次执行一个推理:
img_list = os.listdir('temp_data') # list of all ~1,000,000 images
for im in img_list:
with open('temp_data/'+im, 'rb') as f:
payload = f.read()
payload = bytearray(payload)
response = runtime.invoke_endpoint(EndpointName=endpoint_name,
ContentType='application/x-image',
Body=payload)
etc...
不用说,将所有数据传输到我的笔记本实例需要很长时间,我宁愿在运行推理之前不必这样做。为什么 SageMaker 图像分类不支持 RecordIO 进行推理?更重要的是,在无需将图像从 S3 中移出的情况下,对许多图像进行推理的最佳方法是什么?