返回首页

在 Cloud Run 上使用 GPU 微调 Gemma 4

本文描述了在 Cloud Run Jobs 上使用 NVIDIA RTX PRO 6000 微调 Gemma 4 31B,用于从 Oxford-IIIT Pet 数据集分类动物品种。准确率使用 QLoRA 和 LoRA rank 64 从 89% 提高到 94%。提供了代码更改、部署命令以及多模态数据的主要适配。

Gemma 4 31B:在 Cloud Run GPU 上微调准确率高达 94%
Advertisement 728x90

在 Cloud Run Jobs 上使用 GPU 微调 Gemma 4 31B 进行图像分类

Gemma 4 31B 模型使用 Cloud Run Jobs 和 NVIDIA RTX PRO 6000 在 Oxford-IIIT Pet 数据集上进行微调。动物品种分类准确率从 89% 提升至 94%,得益于 QLoRA 量化与 rank 64 的 LoRA。本指南详解架构变更、数据准备及 Google Cloud 部署。

Gemma 4 架构变更

Gemma 4 采用 Apache 2.0 许可,基于专家混合 (MoE) 架构,总参数 31B 和 26B。上下文窗口扩展至 256K 令牌。支持多模态输入:图像、视频、音频。内置函数调用和结构化 JSON 生成。

以往 Gemma 脚本因模型加载和聊天模板变更而失效。多模态需使用 AutoModelForMultimodalLM

Google AdInline article slot

内存与 GPU 需求

NVIDIA RTX PRO 6000 提供 96 GB 显存。Gemma 4 31B 在 bfloat16 下占 62 GB。结合 bitsandbytes 的 4 位 QLoRA 量化,仅需 18-20 GB,释放资源支持更长上下文。

Gemma 4 代码适配

输入数据格式

图像置于文本之前。指令与用户提示合并。{"type": "image"} 占位符标记处理器中图像令牌位置。

标签掩码

动态图像令牌数量需从 input_ids 数组末尾扫描,定位响应边界。单独文本分词会导致长度不匹配。

Google AdInline article slot

LoRA 配置

架构使用 Gemma4ClippableLinear。设置 LoRA target_modules="all-linear",绕过包装器避免训练错误。

微调结果

在 700 张图像上,中间准确率与基线模型相当。完整 Oxford-IIIT Pet 数据集将准确率提升至 94%,参数如下:

  • Rank 64 / Alpha 64
  • 学习率 5e-5

基线准确率:89%。

Google AdInline article slot

Google Cloud 环境配置

在计费项目中启用 Cloud Run 和 Cloud Build API。获取 Hugging Face 令牌。

  • 克隆仓库:
git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd devrel-demos/ai-ml/finetune_gemma/
  • 使用 2B 模型在 CPU 上测试:
python3 finetune_and_evaluate.py \
  --model-id google/gemma-4-e2b-it \
  --device cpu \
  --train-size 20 \
  --num-epochs 1

将权重上传至目标区域的 GCS 存储桶。

构建并运行镜像

构建 Docker 镜像:

gcloud builds submit --tag $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest .

创建带 GPU 的 Job:

gcloud beta run jobs create gemma4-finetuning-job \
  --region $REGION \
  --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$IMAGE_NAME:latest \
  --gpu 1 \
  --gpu-type nvidia-rtx-pro-6000 \
  --cpu 30.0 \
  --memory 120Gi \
  --add-volume name=model-volume,type=cloud-storage,bucket=$BUCKET_NAME \
  --add-volume-mount volume=model-volume,mount-path=/mnt/gcs \
  --args="--model-id","/mnt/gcs/google/gemma-4-31b-it/","--output-dir","/mnt/gcs/gemma4-finetuned"

运行任务:

gcloud beta run jobs execute gemma4-finetuning-job --region $REGION --async

关键要点

  • QLoRA 将 31B 模型显存降至 20 GB,适配 RTX PRO 6000。
  • AutoModelForMultimodalLM 必备,支持图像先行文本。
  • 从 input_ids 末尾掩码 处理动态令牌。
  • target_modules="all-linear" 稳定 Gemma4ClippableLinear 的 LoRA。
  • 准确率提升 5% 至 94%,针对 Oxford-IIIT Pet。

— Editorial Team

Advertisement 728x90

继续阅读