优化机器学习模型部署:多模型端点、弹性推理与模型编译
1. 多模型端点部署
在处理大量模型时,将每个模型部署到单独的端点可能并不合理。例如,一家SaaS公司为其10,000个客户分别构建回归模型,管理和支付10,000个端点的成本是巨大的。此时,多模型端点就派上了用场。
1.1 多模型端点理解
多模型端点可以基于CPU为存储在S3中的任意数量的模型提供预测服务(撰写本文时暂不支持GPU)。在每个预测请求中传递要使用的模型工件的路径。模型会根据使用情况和端点上的可用内存动态加载和卸载。通过在S3中复制或删除工件,还可以向端点添加或删除模型。
为了服务多个模型,推理容器必须实现一组特定的API,端点将调用这些API,包括:LOAD MODEL、LIST MODEL、GET MODEL、UNLOAD MODEL和INVOKE MODEL。详情可查看:https://docs.aws.amazon.com/sagemaker/latest/dg/mms-container-apis.html。
目前,最新的scikit - learn、TensorFlow、Apache MXNet和PyTorch内置容器原生支持这些API。XGBoost、kNN、线性学习器和随机切割森林等内置算法也支持。对于其他算法和框架,最佳选择是构建包含SageMaker推理工具包的自定义容器,因为它已经实现了所需的API(https://github.com/aws/sagemaker - inference - toolkit)。该工具包基于多模型服务器(https://github.com/awslabs/multi - model - server),也可以直接从