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

GCP AI Platform训练脚本部署新模型版本时的权限问题

解决AI Platform训练脚本内模型部署的403权限问题

你遇到的这个403问题,核心原因其实是训练实例默认使用的是Compute Engine默认服务账号,而不是你配置了权限的Cloud ML Engine Service Agent,而且这个默认账号的认证范围(scopes)不足以完成模型部署操作。下面是几个实用的解决方案:

1. 提交训练作业时显式指定服务账号与权限范围

这是最直接的解决方式——在提交AI Platform训练作业的命令里,强制指定使用你配置好权限的Cloud ML Engine Service Agent,同时赋予足够的OAuth scopes:

gcloud ai-platform jobs submit training YOUR_JOB_NAME \
  --service-account=service-xxxxxxxxx@cloud-ml.google.com.iam.gserviceaccount.com \
  --scopes=https://www.googleapis.com/auth/cloud-platform

这里--scopes用cloud-platform是因为它覆盖了AI Platform部署所需的所有权限,如果你需要更细粒度的控制,也可以换成https://www.googleapis.com/auth/ml.admin。这样训练实例就会用你指定的服务账号运行,而不是默认的Compute Engine账号。

2. 为训练实例的默认服务账号补充权限

如果你不想修改训练作业的提交参数,可以找到训练实例实际使用的Compute Engine默认服务账号(格式一般是[你的项目编号]-compute@developer.gserviceaccount.com),给它添加模型部署所需的权限:

  • 推荐添加roles/ml.admin角色(覆盖所有AI Platform管理操作),或者更细的roles/ml.modelCreator + roles/ml.versionManager组合权限
  • 同时要确保训练作业提交时的scopes包含https://www.googleapis.com/auth/ml.admin或者cloud-platform,否则即使权限够了,认证范围不足还是会报错

3. 在训练脚本内显式加载服务账号密钥

如果上面两种方式都不适合你的场景,你可以在训练脚本里直接加载服务账号的JSON密钥,强制用指定账号完成部署:

  1. 先把你的Cloud ML Engine Service Agent的JSON密钥上传到GCS存储桶
  2. 训练脚本启动时,把密钥文件下载到本地路径
  3. 在调用部署代码(不管是discovery.build还是gcloud命令)前,设置环境变量:
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/tmp/your-service-account-key.json'

这样代码会忽略训练实例的默认账号,直接用你指定的服务账号进行认证。

4. 检查训练与模型的区域一致性

有时候跨区域调用也会触发权限校验问题,确保你的训练作业所在的区域和要部署的模型区域完全一致,避免因为跨区域导致的权限限制。

另外你提到discovery.build('ml', 'v1')._http.credentials._service_account返回default,这正好验证了训练实例用的是默认服务账号,不是你配置的那个Cloud ML Engine Service Agent,所以调整训练作业的服务账号参数应该能最快解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:14:21