如何使用 Google Compute Python API 创建自定义机器类型或带有 GPU 的实例?

How to use Google Compute Python API to create custom machine type or instance with GPU?

我正在考虑使用 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 和处理器等的机器?

您可以使用 Compute Engine API 创建一个 Compute Engine 实例。具体来说,我们可以使用insertAPI请求。这会在 REST 请求中接受一个 JSON 有效负载,该请求描述了您想要的虚拟机实例。在文档中可以找到请求的完整规范。它包括:

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

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

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

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

Python API 基本上是 REST API, so in the example code you are using, the config object is being built using the same schema as would be passed in the insert request.

的包装

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

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

[GENERATION]custom-[NUMBER_OF_CPUs]-[RAM_IN_MB]

生成指的是预定义名称中的"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 的倍数这一事实。

最后,控制台 "create instance" 页面底部有一个简洁的小功能:

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