ML 引擎:"Bad model detected... No module named trainer" 创建模型版本时

ML Engine: "Bad model detected... No module named trainer" when creating a model version

我已经在 ML Engine 上成功地训练了一个模型。我可以从我的云存储桶中获取 model.joblib 文件并加载它,还可以使用 gcloud 获取本地预测。但是我无法创建模型版本。

JOB_DIR=$(gcloud ml-engine jobs describe "$JOB" \
    --format="value(trainingInput.jobDir)")

gcloud ml-engine versions create "$VERSION" \
  --model "$MODEL_NAME" \
  --origin "$JOB_DIR" \
  --framework scikit-learn \
  --runtime-version 1.10 \
  --python-version 3.5

Returns:

错误:(gcloud.ml-engine.versions.create)检测到错误模型错误:"Failed to load model: Could not load the model: /tmp/model/0001/model.joblib. No module named 'trainer'. (Error code: 0)"

我该如何解决这个错误?

我的模型是一个 sklearn 管道。它使用 FunctionTransformer 调用 trainer.model 模块中的函数。我想知道提供预测服务的 VM 是否没有安装 trainer 包。但是,我无法 confirm/reject 这个假设,也无法在文档中找到指向包的方法。

你的假设是正确的。允许您上传自定义包以在预测时间使用的功能目前仅作为 alpha 功能提供。您可以通过此注册表单访问它: https://docs.google.com/forms/d/e/1FAIpQLSc6fxgXQIyA6BDLfCKOJPu5CyCuOB_M_rGTws0629od5mlznw/viewform?usp=sf_link