从 Google Cloud Storage 加载保存的 CatBoost 模型 (.cbm)

问题描述

我正在尝试创建一个脚本,该脚本从 Cloud Storage 存储桶加载已保存的 CatBoost 模型,并使用它进行预测。但是,我无法成功加载文件。 CatBoost 抛出模型文件不存在的错误,尽管我已经直接从 UI 复制了路径。

我使用的是 Google 云平台。该脚本位于与存储模型的存储桶位于同一项目中的 AI Platform JupyterLab 笔记本中。我用来进行预测的特征集与模型存储在同一个存储桶中,我能够成功地将特征集文件读入数据帧 (X_eval)。

我尝试同时使用 URI(“gs://...”)和经过身份验证的 URL(“https://...”),但都抛出相同的错误。

#Specify model path
path = 'gs://bucket_id/model-name'

# Load model
from_file = CatBoostClassifier()
model = from_file.load_model(path)

model.predict(X_eval)
---------------------------------------------------------------------------
CatBoostError                             Traceback (most recent call last)
<ipython-input-9-f7a6068f5718> in <module>
     70 
     71 if __name__ == "__main__":
---> 72     main('data','context')

<ipython-input-9-f7a6068f5718> in main(data,context)
     42     # Load model
     43     from_file = CatBoostClassifier()
---> 44     from_file.load_model(path)
     45 
     46     model.predict(X_eval)

/opt/conda/lib/python3.7/site-packages/catboost/core.py in load_model(self,fname,format,stream,blob)
   2655 
   2656         if fname is not None:
-> 2657             self._load_model(fname,format)
   2658         elif stream is not None:
   2659             self._load_from_stream(stream)

/opt/conda/lib/python3.7/site-packages/catboost/core.py in _load_model(self,model_file,format)
   1345             raise CatBoostError("Invalid fname type={}: must be str().".format(type(model_file)))
   1346 
-> 1347         self._object._load_model(model_file,format)
   1348         self._set_trained_model_attributes()
   1349         for key,value in iteritems(self._get_params()):

_catboost.pyx in _catboost._CatBoost._load_model()

_catboost.pyx in _catboost._CatBoost._load_model()

CatBoostError: catboost/libs/model/model_import_interface.h:19: Model file doesn't exist: gs://bucket_id/model-name

如果我将相同的模型文件上传到本地文件系统(例如,运行 JupyterLabs 笔记本的 VM 的文件系统),则模型加载成功。例如,这有效:

#Specify model path
path = 'model-name'

# Load model
from_file = CatBoostClassifier()
model = from_file.load_model(path)

model.predict(X_eval)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)