Cloud Run Jobs에서 GPU로 Gemma 4 31B 미세 조정: 이미지 분류
Gemma 4 31B 모델을 Oxford-IIIT Pet 데이터셋으로 Cloud Run Jobs와 NVIDIA RTX PRO 6000에서 미세 조정했습니다. QLoRA 양자화와 LoRA(r=64)를 적용해 동물 품종 분류 정확도가 89%에서 94%로 향상됐습니다. 이 가이드에서는 아키텍처 변경 사항, 데이터 준비, Google Cloud 배포를 다룹니다.
Gemma 4 아키텍처 변경 사항
Gemma 4는 Apache 2.0 라이선스를 사용하며, 31B와 26B 파라미터를 가진 Mixture-of-Experts(MoE) 아키텍처를 채택했습니다. 컨텍스트 창이 256K 토큰으로 확장됐습니다. 이미지, 비디오, 오디오 등 멀티모달 입력을 지원합니다. 내장 함수 호출과 구조화된 JSON 생성 기능도 포함됩니다.
기존 Gemma 스크립트는 모델 로딩과 채팅 템플릿 변경으로 작동하지 않습니다. 멀티모달을 위해 AutoModelForMultimodalLM을 사용하세요.
메모리 및 GPU 요구 사항
NVIDIA RTX PRO 6000은 96GB VRAM을 제공합니다. bfloat16 형식의 Gemma 4 31B는 62GB를 차지합니다. bitsandbytes를 통한 4비트 QLoRA 양자화로 18-20GB로 줄여 더 긴 컨텍스트를 처리할 여유를 만듭니다.
Gemma 4 코드 적응
입력 데이터 형식
이미지는 텍스트 앞에 배치됩니다. 지시문은 사용자 프롬프트와 병합됩니다. 프로세서에서 이미지 토큰 위치를 {"type": "image"} 플레이스홀더로 표시합니다.
레이블 마스킹
동적 이미지 토큰 수로 인해 input_ids 배열 끝에서부터 스캔해 응답 경계를 찾아야 합니다. 별도 텍스트 토큰화는 길이 불일치를 초래합니다.
LoRA 설정
아키텍처는 Gemma4ClippableLinear를 사용합니다. target_modules="all-linear"로 설정해 래퍼를 우회하고 훈련 오류를 피하세요.
미세 조정 결과
700장 이미지에서 중간 정확도는 기본 모델과 맞먹었습니다. 전체 Oxford-IIIT Pet 데이터셋으로 94%까지 끌어올렸습니다:
- Rank 64 / Alpha 64
- 학습률 5e-5
기본 정확도: 89%.
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"
Job 실행:
gcloud beta run jobs execute gemma4-finetuning-job --region $REGION --async
주요 요약
- QLoRA로 31B 모델 VRAM 20GB로 축소 (RTX PRO 6000).
- 이미지-텍스트 순서에 AutoModelForMultimodalLM 필수.
input_ids끝부터 마스킹으로 동적 토큰 처리.target_modules="all-linear"로 Gemma4ClippableLinear에서 LoRA 안정화.- Oxford-IIIT Pet에서 정확도 5% 상승해 94% 달성.
— Editorial Team
아직 댓글이 없습니다.