【问题标题】:No such file or directory: '/tmp/model/0001' google cloud ai platform when using the custom prediction routine使用自定义预测例程时没有这样的文件或目录:'/tmp/model/0001' google cloud ai platform
【发布时间】:2020-12-11 19:17:52
【问题描述】:

gcloud 实例上的 /tmp/model 文件夹似乎是空的。看起来文件没有从存储帐户正确复制,即使标准错误日志另有说明。

请问我该怎么做,我错过了什么。当我发出预测请求时,我能够成功创建模型版本。

这是用于创建模型版本的命令:

gcloud beta ai-platform versions create $VERSION_NAME  --model $MODEL_NAME  --runtime-version 1.15  --python-version 3.7  --origin gs://$BUCKET_NAME/custom_prediction_routine/model/  --package-uris gs://$BUCKET_NAME/custom_prediction_routine/custom_predict_code-0.1.tar.gz  --prediction-class predictor.MyPredictor

这是from_path类方法:

@classmethod
def from_path(cls, model_dir):
    sys.stderr.write(str(model_dir))
    return cls(model_dir)

【问题讨论】:

  • 我不认为是人工智能平台,但你能告诉我们你是如何设置它来复制文件的吗?如果这是 stderr 日志并且您的意思是 '/tmp/model/0001/ ,我猜这只是在追踪它期望在哪个目录中找到模型,而不是确认它已复制文件 - 除非你可以向我们展示生成该日志的代码吗?
  • @Rup,创建模型版本时,您要指定模型的谷歌云存储桶链接。他们自动处理复制,我不必指定如何复制。在预测的时候,他们反过来给你一个你的模型被复制到的目录。现在的问题是他们在预测时返回的目录实际上是空的
  • 好的,谢谢。我主要是要求您向我们展示您实际在做什么,因此知道这一点的人可以告诉您您做错了什么,因为您没有向我们展示任何配置或代码。但听起来它完全不在你的掌控之中,所以我认为你必须向 Google 寻求支持。
  • 能否提供用于部署版本的命令,以及“from_path”类方法的代码?
  • @Tlaquetzal ,这是我在创建模型版本时使用的命令gcloud beta ai-platform versions create $VERSION_NAME --model $MODEL_NAME --runtime-version 1.15 --python-version 3.7 --origin gs://$BUCKET_NAME/custom_prediction_routine/model/ --package-uris gs://$BUCKET_NAME/custom_prediction_routine/custom_predict_code-0.1.tar.gz --prediction-class predictor.MyPredictor 这是来自路径类的方法def from_path(cls, model_dir): sys.stderr.write(str(model_dir)) return cls(model_dir) 这是给出错误路径的方法

标签: google-cloud-platform google-ai-platform


【解决方案1】:

根据您共享的代码,您似乎没有直接在 from_path 中加载模型,而是直接将路径发送到您的 Predictor 实例。

尝试直接在from_path 中加载模型,例如,使用 keras 模型:

@classmethod
def from_path(cls, model_dir):
    model = keras.models.load_model(model_dir) # Load with Keras, or the appropriate format
    return cls(model)

如果问题仍然存在,请尝试从 from_path 函数内部发出预热预测请求。例如:

@classmethod
def from_path(cls, model_dir):
    model = keras.models.load_model(model_dir)
    predictor = cls(model)
    outputs = predictor.predict([[1,2,3,4,5]]) # Here goes your warm up prediction request 
    return predictor

编辑

该问题已在 Google 问题跟踪器中以 here 报告。响应是,模型和将在 model_dir 中使用的所有工件都需要在 from_path 的执行期间加载,并存储在预测器类中,如果它们将在预测期间使用。

【讨论】:

  • @Tiaqueztal,谢谢你的建议,我会试试的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2018-10-01
  • 2019-12-31
  • 2014-07-09
  • 2019-03-22
  • 1970-01-01
相关资源
最近更新 更多