自定义 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 分钟左右就失败了
我已经在 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 分钟左右就失败了