我一直在尝试在 Google 云构建中的构建时添加 GPU 支持(例如用于编译 Flash Attention),但遇到了一些问题。 (此处还讨论了:如何将 GPU 连接到 Google Cloud 构建?)
我们的想法是按照此存储库中的说明创建一个新的构建器https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/remote-builder。
我从构建 GPU 构建器开始:
steps:
- name: 'gcr.io/cloud-builders/docker'
env:
- ZONE=us-east5-b
args: ['build', '-t', 'grc.io/project/builder/gpu-builder:latest', '.']
images:
- 'grc.io/project/buider/gpu-builder:latest'
options:
machineType: 'E2_HIGHCPU_8'
我使用命令构建的:
gcloud builds submit --config=cloudbuild.yaml .
图像已推送,一切正常。
目标是使用此构建器并添加
--accelerator
参数以启用 GPU 作为实例,如远程构建器存储库中所述,因此我创建了以下配置文件:
steps:
- name: grc.io/project/builder/gpu-builder:latest
waitFor: ["-"]
env:
- INSTANCE_ARGS=--accelerator=type=nvidia-a100-80gb,count=1
- USERNAME=cloud-user
- COMMAND=docker run -v /home/cloud-user/workspace:/workspace ubuntu:16.04 bash -xe /workspace/test-scripts/no-op.sh
options:
machineType: 'E2_HIGHCPU_8'
PS:请注意,我已尝试更改机器类型,但并未考虑在内。
每当我尝试更改机器类型(因为需要在某个区域才能使用某些 GPU)时,它总是尝试采用
'n1-standard-1'
机器类型来构建。基本上这就是错误:
- Invalid value for field 'resource.machineType': 'https://compute.googleapis.com/compute/v1/projects/operation-405916/zones/us-east5-b/machineTypes/n1-standard-1'. Machine type with name 'n1-standard-1' does not exist in zone 'us-east5-b'.
当我尝试在具有
n1-standard-1
的区域中使用实例时,出现以下错误:
ERROR: (gcloud.compute.instances.create) Could not fetch resource:
- [n1-standard-1, nvidia-a100-80gb] features are not compatible for creating instance.
(当然,我验证了 A100 在所选区域可用)
[更新] 因此,它适用于将机器类型与
INSTANCE_ARGS
一起使用的答案,但是该技术也不起作用:
+ gcloud compute instances create --accelerator=type=nvidia-a100-80gb,count=1 --machine-type a2-ultragpu-1g builder-9821e1c9-58f1-4829-badb-4cf5a3e69a1f --metadata block-project-ssh-keys=TRUE --metadata-from-file ssh-keys=ssh-keys
ERROR: (gcloud.compute.instances.create) Could not fetch resource:
- Instances with guest accelerators do not support live migration.
ERROR
=> 可能是什么问题?我尝试过使用
--machine-type
参数进行更改,但也通过在配置文件中添加选项来更改。
=> 还有其他方法可以使用 GPU 进行云构建吗?
您必须在
INSTANCE_ARGS
中指定您的机器类型,就像这样
steps:
- name: grc.io/project/builder/gpu-builder:latest
waitFor: ["-"]
env:
- INSTANCE_ARGS=--accelerator=type=nvidia-a100-80gb,count=1 --machine-type e2-highcpu-8
- USERNAME=cloud-user
- COMMAND=docker run -v /home/cloud-user/workspace:/workspace ubuntu:16.04 bash -xe /workspace/test-scripts/no-op.sh
选项部分是为 Cloud Build 计算机制作的,而不是为远程构建器制作的。