自定义 xgb 模型在 GCP 上的批量预测挂起

Batch predictions on GCP for custom xgb model hangs

我已经在 Vertex AI 的 GCP 中成功 运行 我的模型,但是当我尝试获取批量预测时,它挂起。

当我在本地环境中 运行 模型时,它在几秒钟内完成。该模型在 GCP 上计算确实需要 8 分钟。

我的模型代码在这里:

from google.cloud import storage
import os
import gcsfs
import pandas as pd
import pickle
#read in the file
print("Mod script starts")
ds = pd.read_csv("gs://shottypeids/ShotTypeModel_alldata.csv")

print("Data read in success")#model
import xgboost as xgb
from sklearn.model_selection import train_test_split

y=ds[["Label_Num","ShotPlus"]]
#y["Player"]=shots2["Player"]
#adjust in i
X=ds.drop(["ShotPlus", "Label_Num",
              #,"DSL_Available_Bandwidth","Band_2_DSL_rel","DSL_vals"
             ],axis=1)

X_train, X_test, y_train1,y_test1=train_test_split(X,y, test_size=0.3, random_state=785)

y_test = y_test1[["Label_Num"]]
y_train = y_train1[["Label_Num"]]

dtrain=xgb.DMatrix(X_train,label=y_train)
dtest=xgb.DMatrix(X_test,label=y_test)
params={
        'max_depth':6,
    'min_child_weight': 4,
    'eta':0.1,
    'subsample': 0.8,
    'colsample_bytree': 0.8,
#     "scale_pos_weight" : 8, #change me
    # Other parameters
#     'eval_metric' : "auc",
    'objective':'multi:softprob',
    "num_class":7,
    'seed':123
}
num_boost_round = 999

print("Mod Prep Success")
mod_addK=xgb.train(params,
             dtrain,
             num_boost_round=num_boost_round,
             evals=[(dtest, "Test")],
             early_stopping_rounds=10)

print("Mod Run")
artifact_filename = 'ShotTypeModel_2pt1.pkl'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
with open(local_path, 'wb') as model_file:
    pickle.dump(mod_addK, model_file)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)
print("Model artefacts saved")

我查看了日志,有一些关于 pip 的错误,但它 运行s 并完成了。

然后我在 GCP 的模型选项卡中拥有该模型,并将其作为工件保存在 Cloud Storage 中。 我在 csv 文件上设置了一个批处理作业,但它挂了很长时间。我想也许它挣扎是因为我没有立即将它放入容器中,所以我重新 运行 并将它加载到我用来训练 (xgb 1.1)

的同一个容器中

它现在已经 运行 超过 45 分钟,而之前的尝试已经超过半小时。我取消了最后的作业,它说这是由于启动模型服务器超时,我应该检查容器规范。我还没有找到任何关于我应该在那里做什么的信息。

我已严格按照说明 here 进行操作,但它只是悬而未决。我无法让 API 工作,但我只是 运行 在云端 shell,而不是虚拟机,所以接下来会尝试。

欢迎任何提示, J

对此的简单回答似乎是文件必须按字面意思保存为“model.pkl”。我假设扩展名之前的名称可能会有所不同,但不会。

我仍在努力生成预测,但现在 returns 15 分钟左右就失败了