使用 Amazon SageMaker 进行云训练和部署¶
为了帮助 AutoGluon 模型训练和部署,AWS 开发了一套训练和推理深度学习容器。这些容器可用于在 CPU 和 GPU 实例上训练模型,并可部署为 SageMaker 端点或用作批量转换作业。
完整的端到端示例可在amazon-sagemaker-examples仓库中找到。
训练其他类型的预测器¶
这些示例主要关注 TabularPredictor
。对于训练其他类型的 AutoGluon 预测器,例如 MultiModalPredictor
,您提供的训练脚本将与上面的类似。您需要将 TabularPredictor
替换为 MultiModalPredictor
。
为确保容器可以在没有外部网络访问的情况下加载模型(SageMaker 容器可能无法从 HuggingFace 获取模型),MultiModalPredictor
类型的模型 artifacts 需要使用 standalone=True
保存:predictor.save(path='MY_PATH', standalone=True)
。
请记住,您想要训练的特定预测器类型可能不支持与 TabularPredictor
相同的功能集。例如,并非所有预测器都存在 leaderboard
功能。
关于图像模态的注意事项¶
要在图像模态上进行推理,您需要将图像信息(例如以字节形式)嵌入到测试数据的某一列中。然后在推理容器中,如果您使用的是 MultiModalPredictor
,您只需解码上述图像列并将测试数据馈送到其中即可。
例如,编码图像
def read_image_bytes_and_encode(image_path):
image_obj = open(image_path, 'rb')
image_bytes = image_obj.read()
image_obj.close()
b85_image = base64.b85encode(image_bytes).decode("utf-8")
return b85_image
def convert_image_path_to_encoded_bytes_in_dataframe(dataframe, image_column):
assert image_column in dataframe, 'Please specify a valid image column name'
dataframe[image_column] = [read_image_bytes_and_encode(path) for path in dataframe[image_column]]
return dataframe
test_data_image_column = "YOUR_COLUMN_CONTAINING_IMAGE_PATH"
test_data = convert_image_path_to_encoded_bytes_in_dataframe(test_data, test_data_image_column)
解码图像
test_data[image_column] = [base64.b85decode(bytes) for bytes in test_data[image_column]]
请注意,如果您使用的是 TabularPredictor
,您需要将图像保存到磁盘,并相应地使用图像路径更新测试数据。
例如,在推理容器中解码图像并保存到磁盘
image_index = 0
def _save_image_and_update_dataframe_column(bytes):
global image_index
im = Image.open(BytesIO(base64.b85decode(bytes)))
im_name = f'Image_{image_index}.png'
im.save(im_name)
image_index += 1
return im_name
test_data[image_column] = [_save_image_and_update_dataframe_column(bytes) for bytes in test_data[image_column]]