1. Vertex AI平台概述
Vertex AI是Google Cloud推出的统一机器学习平台,它将原本分散的AutoML服务和AI Platform服务整合到一个统一界面中。这个平台最吸引人的地方在于,它把机器学习工作流中的各个环节——从数据准备、模型训练到部署和监控——都集成到了同一个环境中。
我最近在为客户部署一个图像分类项目时,全程使用了Vertex AI。相比之前需要在不同服务间切换的方式,工作效率提升了至少40%。特别是它的流水线功能,让整个机器学习生命周期管理变得异常清晰。
2. 账号开通与基础配置
2.1 Google Cloud账号准备
首先你需要一个Google Cloud账号。如果你已经有Gmail账号,可以直接使用它登录Google Cloud Console(console.cloud.google.com)。首次登录后,系统会提示你创建或选择项目。
重要提示:新注册的Google Cloud账号会赠送300美元的免费额度,有效期为90天。建议先用这个额度来熟悉各项服务。
创建项目时,建议采用有意义的命名规则。比如我通常会使用"项目用途-环境类型-日期"的格式,例如"image-classification-prod-202308"。
2.2 启用必要API服务
在项目创建完成后,需要启用以下API服务:
- Vertex AI API
- Compute Engine API(用于后台计算资源)
- Cloud Storage API(用于数据存储)
启用API的步骤:
bash复制# 使用gcloud命令行工具启用API
gcloud services enable aiplatform.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable storage.googleapis.com
2.3 计费账户设置
Vertex AI服务是按使用量计费的,所以必须设置有效的付款方式:
- 在Cloud Console导航菜单选择"结算"
- 点击"创建结算账号"
- 填写相关信息并添加信用卡
特别注意:设置预算提醒!我建议对新项目设置每日预算提醒,避免意外费用。可以在"预算和提醒"部分配置。
3. Vertex AI核心功能配置
3.1 工作区初始化
首次进入Vertex AI控制台(https://console.cloud.google.com/vertex-ai),系统会提示你初始化工作区。这个过程大约需要2-3分钟,系统会自动设置必要的存储桶和服务账号。
初始化完成后,你会看到主要功能模块:
- 数据集(Datasets)
- 训练(Training)
- 模型(Models)
- 端点(Endpoints)
- 流水线(Pipelines)
3.2 存储桶配置
Vertex AI使用Cloud Storage存储训练数据和模型文件。建议专门创建一个存储桶:
bash复制gsutil mb -l us-central1 gs://your-project-name-vertex-ai
设置适当的访问权限:
bash复制gsutil iam ch serviceAccount:your-service-account@your-project.iam.gserviceaccount.com:roles/storage.admin gs://your-bucket-name
3.3 服务账号权限设置
Vertex AI使用服务账号来访问其他GCP资源。建议创建一个专用服务账号:
bash复制gcloud iam service-accounts create vertex-ai-sa \
--description="Service account for Vertex AI" \
--display-name="Vertex AI Service Account"
然后授予必要权限:
bash复制gcloud projects add-iam-policy-binding your-project-id \
--member="serviceAccount:vertex-ai-sa@your-project-id.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
4. 数据准备与上传
4.1 数据集格式要求
Vertex AI支持多种数据类型:
- 表格数据(CSV, JSONL)
- 图像数据(分类、检测、分割)
- 文本数据
- 视频数据
以图像分类为例,数据应该组织成如下结构:
code复制gs://your-bucket/
├── train/
│ ├── class1/
│ │ ├── image1.jpg
│ │ └── image2.jpg
│ └── class2/
│ ├── image1.jpg
│ └── image2.jpg
└── validation/
├── class1/
└── class2/
4.2 创建数据集
在Vertex AI控制台:
- 导航到"数据集"部分
- 点击"创建数据集"
- 选择数据类型(如图像分类)
- 指定Cloud Storage路径
- 设置数据集名称和描述
或者使用Python SDK:
python复制from google.cloud import aiplatform
aiplatform.init(project="your-project", location="us-central1")
dataset = aiplatform.ImageDataset.create(
display_name="flowers-classification",
gcs_source="gs://your-bucket/path/to/data",
import_schema_uri=aiplatform.schema.dataset.ioformat.image.classification.single_label,
)
5. 模型训练选项
5.1 AutoML训练
对于没有机器学习经验的用户,AutoML是最佳选择:
- 在数据集页面选择"训练新模型"
- 选择"AutoML"选项
- 设置模型名称
- 选择训练预算(计算小时数)
- 启动训练
训练时间取决于数据量和复杂度。一个包含10,000张图像的数据集通常需要3-4小时。
5.2 自定义训练
对于需要更多控制的场景,可以使用自定义训练:
python复制from google.cloud import aiplatform
job = aiplatform.CustomTrainingJob(
display_name="custom-training-job",
script_path="training_script.py",
container_uri="gcr.io/cloud-aiplatform/training/tf-gpu.2-6:latest",
requirements=["tensorflow==2.6.0"],
model_serving_container_image_uri="gcr.io/cloud-aiplatform/prediction/tf2-cpu.2-6:latest",
)
model = job.run(
dataset=dataset,
model_display_name="custom-image-model",
args=["--epochs=20", "--batch_size=32"],
replica_count=1,
machine_type="n1-standard-4",
accelerator_type="NVIDIA_TESLA_T4",
accelerator_count=1,
)
6. 模型部署与预测
6.1 部署到端点
训练完成后,可以将模型部署为在线预测服务:
- 在模型页面选择"部署到端点"
- 设置端点名称
- 选择机器类型(如n1-standard-2)
- 设置最小节点数(通常从1开始)
- 点击部署
部署过程通常需要5-10分钟。
6.2 在线预测
部署完成后,可以通过多种方式调用预测服务:
Python SDK示例:
python复制endpoint.predict(instances=[
{"image_bytes": {"b64": base64.b64encode(image_data).decode()}},
{"image_bytes": {"b64": base64.b64encode(image_data2).decode()}}
])
REST API示例:
bash复制curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/your-project/locations/us-central1/endpoints/your-endpoint:predict \
-d '{
"instances": [
{"image_bytes": {"b64": "'$(base64 -i test.jpg)'"}}
]
}'
7. 成本优化技巧
7.1 计算资源选择
-
训练阶段:根据模型复杂度选择
- 小型模型:n1-standard-4(4vCPU, 15GB内存)
- 中型模型:n1-standard-8
- 大型模型:n1-highmem-32
-
预测阶段:
- 低流量:n1-standard-2
- 高流量:考虑自动扩缩
7.2 监控与调整
使用Cloud Monitoring设置告警:
- CPU利用率 >70%持续5分钟
- 预测延迟 >500ms
- 节点数自动扩缩事件
7.3 冷启动优化
对于间歇性使用的模型:
- 设置最小节点数为1
- 配置预热请求
- 考虑使用持续部署保持实例活跃
8. 常见问题排查
8.1 权限问题
错误示例:
code复制PermissionDenied: 403 The caller does not have permission
解决方案:
- 确认服务账号有足够权限
- 检查存储桶ACL设置
- 验证API是否已启用
8.2 资源不足
错误示例:
code复制ResourceExhausted: 429 Quota exceeded for quota metric
解决方案:
- 在配额页面申请提高配额
- 选择不同区域(有些区域资源更充足)
- 减少并发训练任务
8.3 模型部署失败
常见原因:
- 容器镜像不兼容
- 内存不足
- 健康检查超时
排查步骤:
- 检查日志中的错误详情
- 尝试更大型的机器
- 简化模型架构
9. 最佳实践建议
-
数据预处理:
- 图像数据建议调整为统一尺寸
- 表格数据建议进行标准化处理
- 文本数据建议先进行分词
-
版本控制:
- 为每个数据集和模型添加版本标签
- 使用描述性的命名约定
- 维护变更日志
-
自动化流水线:
- 使用Vertex AI Pipelines自动化训练-评估-部署流程
- 设置触发条件(如新数据到达时自动重新训练)
- 集成CI/CD工具进行版本管理
-
模型监控:
- 设置预测质量的监控指标
- 跟踪数据漂移和概念漂移
- 定期重新评估模型性能