【问题标题】:How to set up ray project autoscaling on GCP如何在 GCP 上设置射线项目自动缩放
【发布时间】:2019-07-31 03:10:39
【问题描述】:
我在谷歌云计算上设置光线自动缩放时遇到了很大的困难。我可以让它在 AWS 上运行没问题,但是在运行 ray up 时我一直遇到以下错误:
googleapiclient.errors.HttpError: https://cloudresourcemanager.googleapis.com/v1/projects?alt=json 返回“服务帐户无法在没有父级的情况下创建项目。”
我的项目是一个组织的一部分,所以我不明白这是从哪里来的,或者为什么它首先需要创建一个项目。我已经在 yaml 文件中输入了我的项目 ID,就像我通常为 AWS 所做的那样。
非常感谢。我很感激我能得到任何帮助!
【问题讨论】:
标签:
google-cloud-platform
ray
【解决方案1】:
引用服务帐户的错误消息以及该项目已经存在的事实表明,Ray Autoscaler 使用的 googlecloudapiclient 已针对无权访问该项目的服务帐户进行了身份验证。
如果这是真的,那么这就是我认为会发生的事情。通常,在运行 Ray GCP Autoscaler 时,它会首先检查具有给定 id 的项目是否存在。在您的情况下,此请求返回“未找到”,因为没有具有与服务帐户关联的给定 ID 的项目。现在,由于该项目不存在,Ray 会自动尝试为您创建一个。通常,如果我们使用用户帐户(即非服务帐户)创建新的 GCP 项目,则新创建的项目将与用户帐户的默认组织相关联。但是,服务帐户必须在创建新项目时明确指定父组织。如果我们查看 ray.autoscaler.config._create_project 函数,我们会看到传递给 projects.create 方法的参数省略了“父”参数,这就解释了为什么会出现错误。
要验证这是否属实(并希望能解决问题),您可以更改用于通过 googlecloudapiclient 进行身份验证的帐户。我相信用于 googlecloudapiclient 请求的凭据与 Google Cloud SDK 使用的凭据相同,因此您应该能够使用 gcloud auth login 命令配置帐户。
我认为 Ray Autoscaler 可以通过允许用户在创建新项目时明确指定父组织,或者至少通过为这种特殊情况提供更详细的错误消息来改进。
我希望这能解决您的问题。如果没有,并且您认为这是 Autoscaler 的问题,请随时向 Ray Issues page 提出问题或功能请求!