H2O-3 AI 无法将模型从 Google Cloud Storage 导入集群

问题描述

过去几天,我一直在尝试在 Google H2O 集群上运行保存的 H2O 模型。

我能够使用本指南部署并连接到集群 http://docs.h2o.ai/h2o/latest-stable/h2o-docs/cloud-integration/google-compute.html

h2o.cluster().show_status()

H2O_cluster_uptime:4 小时 38 分钟
H2O_cluster_timezone:等/UTC
H2O_data_parsing_timezone:UTC
H2O_cluster_version:3.32.1.2
H2O_cluster_version_age:12 天
H2O_cluster_name:root
H2O_cluster_total_nodes: 1
H2O_cluster_free_memory:6.220 Gb
H2O_cluster_total_cores:2
H2O_cluster_allowed_cores:2
H2O_cluster_status:锁定,健康

我将保存的模型上传到 Google Cloud Storage 并使用 Cloud Storage FUSE 融合到 VM 到此文件

/tmp/gcsModels/

现在,每当我尝试使用 .load_model 加载模型时:

models_path = "/tmp/gcsModels/serverless/v1/"
pca_model = h2o.load_model(os.path.join(models_path,"cust_PCA_DEMO_v1"))

我遇到了这个错误

H2OResponseError: Server error water.exceptions.H2OIllegalArgumentException:
  Error: Illegal argument: dir of function: importModel: water.api.FSIOException: FS IO Failure: 
 accessed path : file:/tmp/gcsModels/serverless/v1/cust_PCA_DEMO_v1 msg: File not found
  Request: POST /99/Models.bin/
    data: {'dir': '/tmp/gcsModels/serverless/v1/cust_PCA_DEMO_v1'}

经检查,models文件都在/tmp/gcsModels文件夹中

ls /tmp/gcsModels/serverless/v1/

cust_GBM_DEMO_LIKELIHOOD_v2
cust_GBM_DEMO_LIKELIHOOD_v2_cv5
cust_GBM_DEMO_LOGAMOUNT_v1_cv5
cust_PCA_DEMO_v1

我不知道我做错了什么。任何想法将不胜感激。

解决方法

您的 Python 客户端可能托管在与您的 H2O 服务器不同的位置。当您使用 h2o.connect(url="https://[external ip]:54321",auth=(username,password)) 连接时,您正在指定一个外部 IP 地址。因此,您使用 ls 看到的内容将位于不同的位置。

您的错误消息显示在运行 Python 的文件系统上找不到该文件:

accessed path : file:/tmp/gcsModels/serverless/v1/cust_PCA_DEMO_v1 msg: File not found.

尝试使用 gs:// to specify that the file location will be on Google Storage。我不知道你的确切路径是什么,但我希望它是这样的:

h2o.load_model("gs://<BUCKETNAME>/gcsModels/serverless/v1/cust_PCA_DEMO_v1")