首页 > 解决方案 > 推理期间的 XGBoost 延迟峰值

问题描述

我遇到了以下问题:包含 XGB 模型的已部署 python 服务(使用 Docker 的 Kubernetes)停止并导致较大的延迟(> 1 秒)-但是无法在 MacbookPro 2018 上本地运行该服务时重现此行为。

详细描述:我有一个 python 服务,它在每次调用时都运行一个 XGB 模型。在初始化服务时,我将训练好的模型加载到字典中,然后可以在预测期间访问模型。这些模型使用 Learning API 进行训练并存储为 JSON 文件(使用 1.3.3 版进行训练)。预测代码的实现如下:

#Touchdown
td_clf = models['drive_outcome']['touchdown']
td_prob_bin = td_clf.predict(DMatrix(to_predict[:, :-1]))
td_prob = float(td_prob_bin)

在整个服务中,有多个其他 XGB 模型以类似的方式使用,通常整个服务的预测延迟约为 5 毫秒。当将此服务部署到 Kubernetes 集群以实时执行预测时,就会出现问题。该服务打包在以下 docker 中:

FROM python:3.9.6-slim-buster

EXPOSE 6001
WORKDIR /american_football

ENV PYTHONPATH=..
ARG arg_league
ENV LEAGUE=$arg_league

RUN apt-get update && apt-get install make
RUN pip install 'xgboost==1.3.3' 'numpy==1.20.3' grpcio-tools graypy requests

此 docker 映像正在部署到运行具有 amd64 架构的 AWS 机器的 Kubernetes 集群。检测到的延迟首先使用 Grafana 测量,然后使用 cProfile(默认计时器)进行验证,并记录执行服务所花费的时间。

奇怪的地方是:

我不知道是否有人对我可以尝试的一些提示?以某种方式改进分析以确定发生了什么?该服务在集群中有一个工作人员,两个指定的 CPU,我已经尝试将操作系统的 nthread 限制为 1。也许有人有想法?感谢您阅读这面墙。

标签: pythondockerkubernetesxgboost

解决方案


推荐阅读