You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在GCP VM实例内部创建TPU,报PERMISSION_DENIED错误如何解决?

GCP VM内创建TPU权限报错排查步骤

1. 优先确认gcloud活跃身份(核心坑点)

你配置的GOOGLE_APPLICATION_CREDENTIALS是应用默认凭证(ADC)的环境变量,仅被GCP客户端SDK调用,gcloud命令本身不会读取该变量获取身份,所以之前的配置无效。
在VM内执行如下命令查看当前gcloud使用的账号:
gcloud config get-value account
如果返回的不是你本地使用的有权限的账号/服务账号,执行以下命令激活你上传的服务账号密钥:
gcloud auth activate-service-account --key-file=$HOME/.credentials/service-account.googleapis.com.json
激活后重新执行TPU创建命令测试。

2. 校验VM实例访问范围

你提到的「授予所有云API的完全访问权限」是VM实例的访问范围(Access Scope)配置,该配置会限制VM上的身份可调用的API范围:

  • 执行命令查看当前VM的访问范围:
    gcloud compute instances describe [你的VM实例名] --zone [VM所在可用区] --format="value(serviceAccounts[].scopes)"
  • 如果返回结果中没有https://www.googleapis.com/auth/cloud-platform,需要先关闭VM,将实例的访问范围修改为「允许对所有Cloud API的完全访问」,重启后再测试。

3. 确认服务账号本身的IAM权限

访问范围只是API调用的放行开关,服务账号本身需要具备TPU创建权限才能操作:

  • 先确认当前gcloud使用的服务账号邮箱,执行命令查看该账号已被授予的角色:
    gcloud projects get-iam-policy $PROJECT_NAME --filter="bindings.members:serviceAccount:[你的服务账号邮箱]" --format="value(bindings.role)"
  • 如果返回结果中没有roles/tpu.admin或roles/tpu.editor角色,执行以下命令授权:
    gcloud projects add-iam-policy-binding $PROJECT_NAME --member="serviceAccount:[你的服务账号邮箱]" --role="roles/tpu.admin"
    授权后等待1-2分钟权限生效,再执行TPU创建命令。

4. 校验项目变量配置

执行echo $PROJECT_NAME确认VM内的项目变量值和你本地使用的项目ID完全一致,避免因变量指向错误项目导致权限报错。

内容的提问来源于stack exchange,提问作者dragon18456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:54:00