GCP Cloud Batch自定义GPU实例模板任务失败及驱动版本指定问题
问题解决与方案
一、解决"cloudbatch/vmstate Guest Attribute not found"错误
这个错误是因为自定义镜像缺少Cloud Batch依赖的代理组件,导致Batch服务无法获取VM状态进而终止任务,解决步骤如下:
安装Cloud Batch Guest Agent
在自定义CentOS 7镜像的构建过程中,添加GCP官方yum源并安装Batch代理:# 添加GCP yum源 sudo tee /etc/yum.repos.d/google-cloud.repo << EOM [google-cloud-compute] name=Google Cloud Compute baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-compute-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM # 安装Batch代理并设置开机自启 sudo yum install -y google-cloud-batch-agent sudo systemctl enable --now google-cloud-batch-agent验证服务账号权限
确保任务使用的VM服务账号拥有roles/batch.agent角色,该权限允许代理与Cloud Batch服务通信并上报状态。确认Guest Agent功能正常
检查系统中google-guest-agent服务是否正常运行(Batch代理依赖它管理Guest Attributes):sudo systemctl status google-guest-agent如果未安装,通过yum安装:
sudo yum install -y google-guest-agent并启用。
二、为Cloud Batch GPU任务指定NVIDIA驱动版本
不需要手动构建自定义镜像,Cloud Batch原生支持指定GPU驱动版本,配置方式如下:
虚拟机任务配置示例(JSON)
在任务的vmInstancePolicy中启用驱动安装并指定版本:
{ "job": { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "nvidia-smi; catboost train ..." } } ], "vmInstancePolicy": { "installGpuDrivers": { "enabled": true, "driverVersion": "470.199.02" // 选择与K80兼容的470系列版本 } } }, "taskCount": 1, "computeResource": { "cpuMilli": 8000, "memoryMib": 32768, "gpuCount": 1, "gpuType": "nvidia-tesla-k80" } } ] } }
容器任务配置示例
如果使用容器运行CatBoost,可在containerOptions中指定驱动版本:
{ "taskSpec": { "runnables": [ { "container": { "imageUri": "your-catboost-image", "commands": ["catboost", "train", ...] } } ], "containerOptions": { "installGpuDrivers": { "enabled": true, "driverVersion": "470.199.02" } } } }
使用这种方式,Cloud Batch会自动在VM上安装指定版本的NVIDIA驱动,避免自定义镜像带来的组件缺失问题,同时保证驱动与K80 GPU兼容。
内容的提问来源于stack exchange,提问作者Sergii
相关产品推荐
相关产品推荐

