【问题标题】:How to use Google Compute Python API to create custom machine type or instance with GPU?如何使用 Google Compute Python API 创建带有 GPU 的自定义机器类型或实例?
【发布时间】:2020-02-20 03:58:00
【问题描述】:

我只是在研究将 GCP 用于云计算的东西。到目前为止,我一直在使用 AWSboto3 库,并尝试使用 google python 客户端 API 来启动实例。

所以我遇到的一个例子来自他们的文档here。实例机器类型指定为:

machine_type = "zones/%s/machineTypes/n1-standard-1" % zone

然后它传递给配置为:

config = {
        'name': name,
        'machineType': machine_type,
....

我想知道如何从 python API 指定具有 GPU 和自定义 RAM 和处理器等的机器?

【问题讨论】:

    标签: google-cloud-platform google-compute-engine google-api-python-client


    【解决方案1】:

    Python API 基本上是REST API 的包装器,因此在您使用的示例代码中,正在使用与insert request 中传递的相同架构构建配置对象。

    阅读该文档表明guestAccelerators 结构与 GPU 相关。

    自定义 RAM 和 CPU 更有趣。有一种用于指定自定义机器类型名称的格式(您可以在 gcloud documentation 中看到它以创建机器类型)。格式为:

    [GENERATION]自定义-[NUMBER_OF_CPUs]-[RAM_IN_MB]

    Generation 指的是预定义名称中的“n1”或“n2”。对于n1,这个块是空的,对于n2,前缀是“n2-”。也就是说,尝试 gcloud 似乎表明“n1-”作为前缀也可以按您的预期工作。

    因此,对于具有 5GB 内存的 1 CPU n1 机器,它将是 custom-1-5120。这就是您将在示例中替换 n1-standard-1 的内容。

    当然,您必须遵守limits of how to specify a custom machine,例如 RAM 必须是 256MB 的倍数。

    最后,控制台“创建实例”页面底部有一个简洁的小功能:

    单击相关链接将向您显示创建您当时在控制台中定义的机器所需的确切 REST 对象,因此查看特定参数的使用方式非常有用。

    【讨论】:

      【解决方案2】:

      您可以使用 Compute Engine API 创建一个 Compute Engine 实例。具体来说,我们可以使用insert API 请求。这将接受 REST 请求中的 JSON 有效负载,该负载描述您所需的所需 VM 实例。请求的完整规范可在文档中找到。它包括:

      • machineType - 不同(常见)机器的规格,包括 CPU 和内存
      • disks - 要添加的磁盘规格,包括大小和类型
      • guestAccelerators - 要添加的 GPU 规格
      • 更多选项...

      您还可以创建所需机器结构的模板描述,并通过命名要使用的模板来简化实例的创建,从而将配置细节从代码中抽象出来并放入配置中。

      除了使用 REST 请求(可以从 python 传递)之外,您还可以通过以下方式创建计算引擎:

      • GCP Console - 网页界面
      • gcloud - 命令行(我怀疑也可以从 Python 中驱动)
      • Deployment Manager - 配置驱动部署,包括 Python 作为模板语言
      • Terraform - 用于创建基础架构即代码环境的流行环境

      【讨论】:

        猜你喜欢
        • 2021-04-01
        • 1970-01-01
        • 2018-10-09
        • 1970-01-01
        • 2014-08-10
        • 2019-05-06
        • 1970-01-01
        • 2017-12-25
        • 1970-01-01
        相关资源
        最近更新 更多