title: “使用预训练XGBoost模型的批量评分(Parquet格式)” weight: 4
模型训练完成后,如果目标是对大型数据集生成预测,且延迟不是主要考虑因素,那么SageMaker批量转换 就是解决方案。从功能上讲,批量转换使用与实时托管相同的机制来生成预测。它需要一个Web服务器,每次接收一个观察值或小批量的HTTP POST请求。然而,与实时托管端点保持持久硬件(实例一直运行直到您关闭它们)不同,批量转换集群在作业完成时会被拆除。
在本笔记本中,我们将演示如何使用Athena CTAS查询从特征存储准备批量数据集,并使用Amazon S3上可用的测试数据执行批量转换。
注意:本模块依赖于模块1 中准备的数据集和创建的特征组,以及基于前一个笔记本中训练作业的模型。
我们使用Athena CREATE TABLE AS SELECT (CTAS)查询 从离线特征存储中提取特征,创建用于批量转换的测试数据集。CTAS查询从另一个查询的SELECT语句结果创建Athena中的新表。Athena将CTAS语句创建的数据文件存储在Amazon S3的指定位置。
我们基于前一个笔记本中的训练作业创建模型。我们使用describe_training_job boto3 API调用获取模型数据URI和用于训练作业的容器。我们使用SageMaker SDK中的XGBoostModel 类(Framework Model)为批量转换创建模型。
最后,我们使用ml.m5.xlarge实例类型运行批量转换作业,并将预测结果与相应的输入记录关联。虽然批量转换支持将预测结果与输入关联,并可以在输入数据为支持的格式时过滤输入数据中的列。但PARQUET数据类型默认不受支持(支持的输入数据格式为JSON或CSV),因此,我们将批量策略设置为SingleRecord,这将整体读取每个parquet文件,并将有效负载发送给模型进行推理。