2. 环境与项目初始化

在 Google Cloud 上做机器学习,第一步不是写模型代码,而是把“地基”打好。所谓环境与项目初始化,本质上是回答五个问题:资源放在哪个组织边界内、用哪个项目承载、谁有权操作、能用多少配额、以及钱会花在哪里。这五件事如果一开始没理顺,后面训练任务失败、权限报错、账单失控几乎都是必然的。本节按“组织 → 项目 → IAM → 配额 → API → 预算”的顺序,把这条初始化链路讲清楚。

一、资源层级:组织、文件夹与项目

Google Cloud 的资源是树状层级:组织(Organization)→ 文件夹(Folder)→ 项目(Project)→ 具体资源。组织节点对应一个 Workspace 或 Cloud Identity 账号,是权限和策略的最高继承点;文件夹用于按部门、环境(如 dev/staging/prod)或业务线分组;项目是启用 API、计费、配额和 IAM 的最小管理单元。ML 场景中,建议至少拆成三类项目:数据与特征项目、训练与实验项目、在线推理项目,这样配额、权限和成本可以分别治理。

创建项目时,项目 ID 全局唯一且创建后不可更改,命名建议带环境与用途,例如 ml-prod-train-2401。项目名称可改,但 ID 不要依赖它做脚本引用。

二、IAM:最小权限与角色绑定

IAM 的核心是“谁(成员)在什么资源上拥有什么角色”。成员可以是 Google 账号、群组、服务账号或 Workspace 域。ML 平台建设中最关键的是服务账号:训练任务、Vertex AI Pipeline、推理服务都应以服务账号身份运行,而不是个人账号。常见角色包括:

  • roles/aiplatform.user:提交训练、部署模型;
  • roles/storage.objectAdmin:读写 GCS 中的数据集与模型产物;
  • roles/bigquery.dataViewer:读取特征表;
  • roles/iam.serviceAccountUser:允许以某服务账号身份运行任务。

原则是“按需授予、优先群组、避免 Owner”。个人调试可用 gcloud auth application-default login,但生产任务必须绑定服务账号。

三、配额:先看上限,再谈规模

配额决定你能同时用多少资源。ML 相关配额主要有:GPU 配额(如 NVIDIA T4、A100 在各区域的 vCPU/GPU 数量)、Vertex AI 自定义训练并发任务数、在线预测节点数、CPU/内存等。配额是按区域计算的,例如 us-central1 的 A100 配额与 asia-east1 不通用。新建项目默认 GPU 配额通常为 0,需要提前在“IAM 与管理 → 配额”中提交调整申请,说明用途和预估用量,审批可能需要数小时到数天。

建议在项目初始化阶段就把训练、推理所需 GPU/TPU 配额一次性申请到位,避免实验中途被配额卡住。

四、启用 API:按需开启,避免默认全开

项目创建后,绝大多数 API 默认关闭。ML 平台常用 API 包括:aiplatform.googleapis.com(Vertex AI)、compute.googleapis.com、storage.googleapis.com、bigquery.googleapis.com、artifactregistry.googleapis.com、cloudbuild.googleapis.com、logging.googleapis.com、monitoring.googleapis.com。启用方式:

gcloud services enable aiplatform.googleapis.com \
  storage.googleapis.com \
  compute.googleapis.com \
  artifactregistry.googleapis.com \
  --project=ml-prod-train-2401

API 启用是幂等的,重复执行不会报错。建议把启用清单写进初始化脚本,保证环境可复现。

五、成本预算:让花费可见、可控

预算(Budget)绑定在计费账号上,可按项目、服务、标签过滤。设置时需指定:预算金额、时间范围(月/季/年)、阈值规则(如 50%、90%、100%)和通知渠道(邮件、Pub/Sub)。ML 成本大头通常是 GPU 训练时长、在线预测节点和存储。建议给训练项目打上 env=prod、team=ml 等标签,预算按标签过滤,便于归因。

预算只是“告警”,不会自动停止资源。若需硬性止损,应结合 Cloud Billing 的 Pub/Sub 通知 + Cloud Function 自动停用项目或删除节点。

六、初始化链路总览

下面这张图把本节六个环节串成一条可执行的初始化链路,并标出每一步的关键产物与依赖关系:

ML 项目初始化链路:从组织边界到成本可控 组织 / 文件夹 策略继承 · 环境分组 项目 Project ml-prod-train-2401 IAM 角色绑定 服务账号 · 最小权限 配额 Quota GPU / 并发 / 区域 启用 API aiplatform · storage · compute artifactregistry · logging 成本预算 Budget 阈值 50% / 90% / 100% 邮件 + Pub/Sub 告警 初始化完成后的可交付状态 项目可复现 ID / 标签 / 脚本 权限可审计 服务账号 / 角色 配额已就绪 GPU / 区域 成本可观测 预算 / 标签

七、可执行的初始化清单

把上述内容固化成一份可复用的初始化清单,能显著降低环境漂移。以下字段可直接作为团队内部模板使用:

环节关键动作示例值 / 判断依据
组织确认组织节点与文件夹结构org: example.com;folder: ml-prod
项目创建项目并绑定计费账号ml-prod-train-2401
IAM创建服务账号并绑定角色sa-train@…;aiplatform.user
配额申请 GPU / 并发配额us-central1 A100 × 4
API批量启用所需 APIaiplatform、storage、compute
预算设置预算与阈值告警月 5000 元,50/90/100%