이 문서의 목적에 따라 배치 워크로드는 완료될 때까지 실행되고 Pathways 컨트롤러 구성요소 (IFRT 프록시 서버 및 Pathways 리소스 관리자)와 함께 특히 Pathways 클러스터와 동일한 GKE 클러스터 내에 배포되는 JAX 워크로드로 정의됩니다. JAX 워크로드가 완료되면 Pathways 클러스터 구성요소가 종료됩니다. 이 가이드에서는 JAX 학습 워크로드를 사용하여 이를 보여줍니다.
시작하기 전에
다음 사항이 필요합니다.
Maxtext를 사용하여 학습 이미지 빌드
MaxText는 Google에서 개발한 오픈소스 대규모 언어 모델 (LLM) 프로젝트입니다. JAX로 작성되었으며 Google Cloud TPU 및 GPU에서 효율적으로 실행되도록 고성능 및 확장성을 갖추도록 설계되었습니다.
OSS GitHub 저장소의 최신 안정화 JAX 버전을 사용하여 MaxText Docker 이미지를 빌드하려면 다음 명령어를 실행하세요.
git clone https://github.com/AI-Hypercomputer/maxtext cd maxtext/dependencies/scripts gcloud config set project PROJECT_ID bash ./docker_build_dependency_image.sh MODE=stable gcloud auth configure-docker bash ./docker_upload_runner.sh CLOUD_IMAGE_NAME=USER_runner # This script needs bash version >= 4.2 to execute.
이 명령어는 MaxText Kubernetes 이미지를 gcr.io/$PROJECT_ID/${USER}_runner에 푸시합니다.
이 Docker 이미지를 사용하여 Pathways 백엔드를 통해 TPU에서 학습을 실행할 수 있습니다.
Cluster Toolkit으로 일괄 워크로드 실행
gcluster job submit 명령어를 사용하여 사전 빌드된 MaxText Docker 이미지를 제출합니다.
gcluster job submit \
--pathways \
--pathways-gcs-location="gs://BUCKET_NAME/pathways-artifacts" \
--name=WORKLOAD \
--cluster=CLUSTER \
--project=PROJECT_ID \
--location=ZONE \
--num-slices=WORKLOAD_NODEPOOL_COUNT \
--compute-type=COMPUTE_TYPE \
--topology=TOPOLOGY \
--image="gcr.io/PROJECT_ID/USER_runner" \
--command="python3 -m MaxText.train /deps/src/MaxText/configs/base.yml base_output_directory=gs://BUCKET_NAME per_device_batch_size=1 enable_checkpointing=false remat_policy=full global_parameter_scale=1 steps=20 max_target_length=2048 use_iota_embed=true reuse_example_batch=1 dataset_type=synthetic attention=flash gcs_metrics=True enable_single_controller=True run_name=RUN_NAME-pathways-job"
작업 제출 옵션에 대한 자세한 내용은 Cluster Toolkit 작업 제출 가이드를 참고하세요.
다음을 바꿉니다.
WORKLOAD: 워크로드를 식별하는 고유한 이름입니다. DNS 라벨 제한으로 인해 22자 이하여야 합니다.CLUSTER: GKE 클러스터의 이름WORKLOAD_NODEPOOL_COUNT: TPU 슬라이스 노드 풀 수COMPUTE_TYPE: TPU 머신 유형 (예:ct6e-standard-4t). 각 TPU 버전에서 지원되는 TPU 유형에 대한 자세한 내용은 TPU 버전을 참고하세요.TOPOLOGY: TPU 배치 토폴로지 (예:2x4)PROJECT_ID: Google Cloud 프로젝트 IDZONE: 워크로드를 실행할 계획인 영역USER: Google Cloud 사용자 IDBUCKET_NAME: 출력을 위한 Cloud Storage 버킷RUN_NAME: 워크플로 실행을 식별하는 사용자 할당 이름
gcluster job logs 명령어를 사용하여 워크로드의 진행 상황을 확인합니다.
gcluster job logs WORKLOAD \
--cluster=CLUSTER \
--project=PROJECT_ID \
--location=ZONE \
--main-only=false
completed step: 1, seconds: 0.484, TFLOP/s/device: 87.349, Tokens/s/device: 2117.382, total_weights: 2945, loss: 10.888 completed step: 2, seconds: 0.407, TFLOP/s/device: 103.699, Tokens/s/device: 2513.735, total_weights: 3253, loss: 9.697 completed step: 3, seconds: 0.248, TFLOP/s/device: 170.300, Tokens/s/device: 4128.167, total_weights: 3154, loss: 9.641 completed step: 4, seconds: 0.216, TFLOP/s/device: 195.122, Tokens/s/device: 4729.880, total_weights: 3119, loss: 9.547 completed step: 5, seconds: 0.272, TFLOP/s/device: 155.298, Tokens/s/device: 3764.512, total_weights: 2837, loss: 10.179 completed step: 6, seconds: 0.472, TFLOP/s/device: 89.489, Tokens/s/device: 2169.266, total_weights: 3069, loss: 9.776
워크로드가 완료되기 전에 취소하려면 gcluster job cancel 명령어를 사용합니다.
gcluster job cancel WORKLOAD --cluster=CLUSTER --project=PROJECT_ID --location=ZONE
다음 단계
- 경로를 사용하여 GKE 클러스터 만들기
- Pathways를 사용한 멀티 호스트 추론
- 학습 여정 대화형 모드
- JAX 워크로드를 Pathways로 포팅
- Pathways를 사용한 복원력 있는 학습
- 클라우드에서 학습 과정 문제 해결