이 튜토리얼에서는 단일 호스트, 다중 GPU Google Kubernetes Engine (GKE) 클러스터에서 Google Cloud Gemma 4 대규모 언어 모델 (LLM)을 파인 튜닝하는 방법을 보여줍니다. 이 클러스터는 8개의 NVIDIA B200 GPU가 연결된 단일 A4 가상 머신 (VM) 인스턴스를 사용합니다.
이 튜토리얼에서 설명하는 두 가지 주요 프로세스는 다음과 같습니다.
- GKE Autopilot을 사용하여 고성능 GKE 클러스터를 배포합니다. 이 배포의 일부로 Cloud Build를 사용하여 필요한 소프트웨어가 사전 설치된 커스텀 컨테이너 이미지를 빌드합니다.
- 클러스터가 배포된 후 완전 샤딩된 데이터 병렬 (FSDP)을 사용하여 단일 A4 (
a4-highgpu-8g) 노드의 8개 GPU 모두에서 모델을 샤딩하는 파인 튜닝 작업을 실행합니다. 작업은 이 튜토리얼과 함께 제공되는 스크립트 집합을 사용하고 Hugging Face Accelerate 라이브러리를 활용합니다.
이 튜토리얼은 Google Cloud LLM 학습을 위해 GKE 클러스터를 배포하는 데 관심이 있는 머신러닝 (ML) 엔지니어, 연구원, 플랫폼 관리자 및 운영자, 데이터 및 AI 전문가를 대상으로 합니다.
목표
Hugging Face를 사용하여 Gemma 4 모델에 액세스합니다.
환경을 준비합니다.
A4 GKE 클러스터를 만들고 배포합니다.
완전 샤딩된 데이터 병렬 (FSDP)을 사용하여 Hugging Face Accelerate 라이브러리로 Gemma 4 모델을 파인 튜닝합니다.
작업 모니터링
삭제
비용
이 문서에서는 비용이 청구될 수 있는 구성요소를 사용합니다 Google Cloud.
- Compute Engine
- Google Kubernetes Engine (GKE)
- Artifact Registry
- Cloud Build
- Cloud Storage
- Cloud Logging
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
필요한 API가 아직 사용 설정되지 않았으면 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한을 이미 보유하고 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법을 알아보세요.gcloud services enable compute.googleapis.com
container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com Google Cloud 프로젝트의 기본 서비스 계정을 사용 설정합니다.
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_ID
기본 서비스 계정이 파인 튜닝 워크로드를 실행하는 데 필요한 역할을 부여합니다.
ROLES=("roles/artifactregistry.writer" "roles/cloudbuild.builds.builder" "roles/logging.logWriter" "roles/monitoring.metricWriter" "roles/monitoring.viewer" "roles/stackdriver.resourceMetadata.writer" "roles/storage.objectViewer") for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" 1>/dev/null done unset ROLES
역할이 부여되었는지 확인하려면 다음 명령어를 실행합니다.
gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --format="table(bindings.role)"사용자 계정의 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
프로젝트에 대한 OS 로그인을 사용 설정합니다.
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
이 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
- Kubernetes Engine 관리자 (
roles/container.admin) - Compute 관리자 (
roles/compute.admin) - 스토리지 관리자 (
roles/storage.admin) - Artifact Registry 관리자 (
roles/artifactregistry.admin) - Cloud Build 편집자 (
roles/cloudbuild.builds.editor) - 서비스 계정 사용자 (
roles/iam.serviceAccountUser) - 서비스 계정 관리자 (
roles/iam.serviceAccountAdmin) - 프로젝트 IAM 관리자 (
roles/resourcemanager.projectIamAdmin) - 서비스 사용량 관리자 (
roles/serviceusage.serviceUsageAdmin)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
Hugging Face를 사용하여 Gemma 4에 액세스
Hugging Face를 사용하여 Gemma 4에 액세스하려면 다음 단계를 따르세요.
- Hugging Face에 로그인합니다.
- Hugging Face
write액세스 토큰을 만듭니다.
내 프로필 > 설정 > 액세스 토큰 > +새 토큰 만들기 를 클릭합니다. write access토큰 값을 복사하여 저장합니다. 이 튜토리얼의 뒷부분에서 사용합니다.
환경 준비
환경을 준비하려면 다음을 설정합니다.
다음을 바꿉니다.
YOUR_PROJECT_ID: GKE 클러스터를 만들 Google Cloud 프로젝트 의 ID입니다.
YOUR_CLUSTER_NAME: 만들 GKE 클러스터 의 이름입니다.
YOUR_REGION: GKE 클러스터를 만들 리전입니다. 예약이 있는 리전에서만 클러스터를 만들 수 있습니다.
YOUR_RESERVATION_NAME: 예약된 용량의 식별자입니다.
YOUR_HF_TOKEN: 이전 섹션에서 만든 Hugging Face 액세스 토큰입니다.
YOUR_ARTIFACT_REGISTRY_LOCATION: Artifact Registry 저장소를 만들 Google Cloud 리전 입니다. 이미지 가져오기 지연 시간을 최소화하려면 YOUR_REGION에 사용한 것과 동일한 리전을 사용하는 것이 좋습니다.
Autopilot 모드로 GKE 클러스터 만들기
Autopilot 모드로 GKE 클러스터를 만들려면 다음 명령어를 실행합니다.
GKE 클러스터를 만드는 데 다소 시간이 걸릴 수 있습니다. 클러스터 생성이 완료되었는지 Google Cloud 확인하려면 콘솔 Google Cloud 에서 Kubernetes 클러스터 로 이동합니다.
Hugging Face 사용자 인증 정보용 Kubernetes 보안 비밀 만들기
Hugging Face 사용자 인증 정보용 Kubernetes 보안 비밀을 만들려면 다음 단계를 따르세요.
GKE 클러스터와 통신하도록
kubectl을 구성합니다.Hugging Face 토큰을 저장할 Kubernetes 보안 비밀을 만듭니다.
워크로드 준비
워크로드를 준비하려면 다음을 수행하세요.
워크로드 스크립트 만들기
파인 튜닝 워크로드에서 사용하는 스크립트를 만들려면 다음 단계를 따르세요.
워크로드 스크립트의 디렉터리를 만듭니다. 이 디렉터리를 작업 디렉터리로 사용합니다.
Google Cloud Build를 사용할
cloudbuild.yaml파일을 만듭니다. 이 파일은 워크로드 컨테이너를 만들고 Artifact Registry에 저장합니다.Dockerfile파일을 만들어 파인 튜닝 작업을 실행합니다.accel_fsdp_gemma4_config.yaml파일을 만듭니다. 이 구성 파일은 FSDP를 사용하여 단일 호스트의 8개 로컬 GPU에서 튜닝 작업을 분할하도록 Hugging Face Accelerate에 지시합니다.finetune.yaml파일을 만듭니다.finetune.py파일을 만듭니다.
Docker 및 Cloud Build를 사용하여 파인 튜닝 컨테이너 만들기
Artifact Registry Docker 저장소를 만듭니다.
이전 단계에서 만든
llm-finetuning-gemma디렉터리에서 다음 명령어를 실행하여 파인 튜닝 이미지를 만들고 Artifact Registry에 푸시합니다.이미지 URL을 내보냅니다. 이 튜토리얼의 뒷부분에서 사용합니다.
파인 튜닝 워크로드 시작
파인 튜닝 워크로드를 시작하려면 다음 단계를 따르세요.
finetune 매니페스트를 적용하여 파인 튜닝 작업을 만듭니다.
GKE Autopilot 모드에서 클러스터를 사용하므로 GPU 지원 노드를 시작하는 데 몇 분 정도 걸릴 수 있습니다.
다음 명령어를 실행하여 작업을 모니터링합니다.
포드가 실행된 후 작업의 로그를 확인합니다.
작업 리소스는 모델 데이터를 다운로드한 후 8개 GPU 모두에서 모델을 파인 튜닝합니다. 다운로드하는 데 약 5분이 걸립니다. 다운로드가 완료되면 파인 튜닝 프로세스를 완료하는 데 약 45분이 걸립니다. 작업은 20단계마다 체크포인트를 저장하고 파인 튜닝된 LoRA (Low-Rank Adaptation) 어댑터를
gemma-31b-text-to-sql이라는 비공개 Hugging Face 저장소에 푸시합니다.작업이 완료되면 Hugging Face에서 파인 튜닝된 모델의 URL을 가져온 후 브라우저에서 URL을 엽니다.
워크로드 모니터링
GKE 클러스터에서 GPU 사용량을 모니터링하여 파인 튜닝 작업이 효율적으로 실행되고 있는지 확인할 수 있습니다. 이렇게 하려면 브라우저에서 다음 링크를 엽니다.
워크로드를 모니터링할 때 다음을 확인할 수 있습니다.
- GPU 사용량: 정상적인 파인 튜닝 작업의 경우 학습 전반에 걸쳐 8개 GPU의 사용량이 증가하고 높은 수준으로 안정화되는 것을 확인할 수 있습니다.
- 작업 기간: 지정된 A4 클러스터에서 작업을 완료하는 데 약 45분이 걸립니다.
삭제
추가 요금이 발생하지 않도록 하려면 이 튜토리얼 중에 만든 리소스를 삭제합니다.
리소스 삭제
파인 튜닝 작업을 삭제하려면 다음 명령어를 실행합니다.
GKE 클러스터를 삭제하려면 다음 명령어를 실행합니다.
Artifact Registry 저장소를 삭제하려면 다음 명령어를 실행합니다.