Я обучил модель с помощью встроенного образа докера RESnet18, и теперь я хочу развернуть модель на конечной точке и классифицировать ~ 1 миллион образов. У меня есть все мои обучающие, проверочные и тестовые изображения, хранящиеся на S3 в формате RecordIO (преобразованные с помощью im2rec.py). Согласно документам:
Алгоритм Amazon SageMaker Image Classification поддерживает для обучения типы контента RecordIO (application / x-recordio) и image (application / x-image). Алгоритм поддерживает только application / x-image для вывода.
Поэтому я не могу сделать вывод о моих тренировочных данных в формате RecordIO. Чтобы преодолеть это, я скопировал все необработанные изображения .jpg (~ 2 ГБ) в свой экземпляр 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...
Излишне говорить, что перенос всех данных в мой экземпляр Notebook занял много времени, и я бы предпочел не делать этого до выполнения логического вывода. Почему SageMaker Image Classification не поддерживает RecordIO для вывода? И что еще более важно, как лучше всего выполнить вывод для множества изображений, не перемещая их из S3?