v6e TPU VM에서 JetStream MaxText 추론
이 튜토리얼에서는 JetStream을 사용하여 TPU v6e에서 MaxText 모델을 제공하는 방법을 보여줍니다. JetStream은 XLA 기기 (TPU)에서 대규모 언어 모델 (LLM) 추론을 위한 처리량 및 메모리 최적화 엔진입니다. 이 튜토리얼에서는 Llama2-7B 모델의 추론 벤치마크를 실행합니다.
시작하기 전에
칩 4개가 있는 TPU v6e를 프로비저닝할 준비를 합니다.
- Google 계정에 로그인합니다. 아직 계정이 없다면 새 계정을 만듭니다.
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
- Google Cloud 프로젝트에 결제를 사용 설정합니다. Google Cloud를 사용하려면 결제가 필요합니다.
- gcloud alpha 구성요소를 설치합니다.
다음 명령어를 실행하여 최신 버전의
gcloud
구성요소를 설치합니다.gcloud components update
Cloud Shell을 사용하여 다음
gcloud
명령어를 통해 TPU API를 사용 설정합니다. Google Cloud 콘솔에서도 사용 설정할 수 있습니다.gcloud services enable tpu.googleapis.com
TPU VM의 서비스 ID를 만듭니다.
gcloud alpha compute tpus tpu-vm service-identity create --zone=ZONE
TPU 서비스 계정을 만들고 Google Cloud 서비스에 대한 액세스 권한을 부여합니다.
서비스 계정을 사용하면 Google Cloud TPU 서비스가 다른 Google Cloud 서비스에 액세스할 수 있습니다. 사용자 관리형 서비스 계정이 권장됩니다. 다음 가이드를 따라 역할을 만들고 부여합니다. 다음 역할이 필요합니다.
- TPU 관리자: TPU를 만드는 데 필요합니다.
- 스토리지 관리자: Cloud Storage에 액세스하는 데 필요합니다.
- 로그 작성자: Logging API를 사용하여 로그를 작성하는 데 필요
- 모니터링 측정항목 작성자: Cloud Monitoring에 측정항목을 쓰는 데 필요
Google Cloud로 인증하고 Google Cloud CLI의 기본 프로젝트와 영역을 구성합니다.
gcloud auth login gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
용량 확보
Cloud TPU 영업팀 또는 계정팀에 문의하여 TPU 할당량을 요청하고 용량에 관해 문의하세요.
Cloud TPU 환경 프로비저닝
v6e TPU는 GKE, GKE 및 XPK 또는 대기열에 추가된 리소스로 프로비저닝할 수 있습니다.
기본 요건
- Google Cloud 프로젝트 내에서 액세스할 수 있는 최대 칩 수를 지정하는
TPUS_PER_TPU_FAMILY
할당량이 프로젝트에 충분한지 확인합니다. - 이 튜토리얼은 다음 구성으로 테스트되었습니다.
- Python
3.10 or later
- Nightly 소프트웨어 버전:
- nightly JAX
0.4.32.dev20240912
- nightly LibTPU
0.1.dev20240912+nightly
- nightly JAX
- 안정화 소프트웨어 버전:
- JAX +
v0.4.35
의 JAX 라이브러리
- JAX +
- Python
- 프로젝트에 다음에 충분한 TPU 할당량이 있는지 확인합니다.
- TPU VM 할당량
- IP 주소 할당량
- 하이퍼디스크 균형 할당량
- 사용자 프로젝트 권한
- XPK와 함께 GKE를 사용하는 경우 XPK를 실행하는 데 필요한 권한은 사용자 또는 서비스 계정의 Cloud 콘솔 권한을 참고하세요.
환경 변수 만들기
Cloud Shell에서 다음 환경 변수를 만듭니다.
export NODE_ID=TPU_NODE_ID # TPU name export PROJECT_ID=PROJECT_ID export ACCELERATOR_TYPE=v6e-4 export ZONE=us-central2-b export RUNTIME_VERSION=v2-alpha-tpuv6e export SERVICE_ACCOUNT=YOUR_SERVICE_ACCOUNT export QUEUED_RESOURCE_ID=QUEUED_RESOURCE_ID export VALID_DURATION=VALID_DURATION # Additional environment variable needed for Multislice: export NUM_SLICES=NUM_SLICES # Use a custom network for better performance as well as to avoid having the # default network becoming overloaded. export NETWORK_NAME=${PROJECT_ID}-mtu9k export NETWORK_FW_NAME=${NETWORK_NAME}-fw
명령어 플래그 설명
변수 | 설명 |
NODE_ID | 큐에 추가된 리소스 요청이 할당될 때 생성되는 TPU의 사용자 할당 ID입니다. |
PROJECT_ID | Google Cloud 프로젝트 이름. 기존 프로젝트를 사용하거나 새 프로젝트를 만듭니다. |
ZONE | 지원되는 영역에 대해서는 TPU 리전 및 영역 문서를 참조하세요. |
ACCELERATOR_TYPE | 지원되는 모든 가속기 유형은 가속기 유형 문서를 참고하세요. |
RUNTIME_VERSION | v2-alpha-tpuv6e
|
SERVICE_ACCOUNT | Google Cloud 콘솔 -> IAM -> 서비스 계정에서 찾을 수 있는 서비스 계정의 이메일 주소입니다.
예: tpu-service-account@<your_project_ID>.iam.gserviceaccount.com.com |
NUM_SLICES | 생성할 슬라이스 수입니다 (멀티슬라이스에만 필요). |
QUEUED_RESOURCE_ID | 큐에 추가된 리소스 요청의 사용자 할당 텍스트 ID입니다. |
VALID_DURATION | 대기열에 추가된 리소스 요청이 유효한 기간입니다. |
NETWORK_NAME | 사용할 보조 네트워크의 이름입니다. |
NETWORK_FW_NAME | 사용할 보조 네트워크 방화벽의 이름입니다. |
TPU v6e 프로비저닝
gcloud alpha compute tpus queued-resources create QUEUED_RESOURCE_ID \ --node-id TPU_NAME \ --project PROJECT_ID \ --zone ZONE \ --accelerator-type v6e-4 \ --runtime-version v2-alpha-tpuv6e \ --service-account SERVICE_ACCOUNT
list
또는 describe
명령어를 사용하여 큐에 추가된 리소스의 상태를 쿼리합니다.
gcloud alpha compute tpus queued-resources describe ${QUEUED_RESOURCE_ID} \
--project ${PROJECT_ID} --zone ${ZONE}
대기열에 추가된 리소스 요청 상태의 전체 목록은 대기열에 추가된 리소스 문서를 참고하세요.
SSH를 사용하여 TPU에 연결
gcloud compute tpus tpu-vm ssh TPU_NAME
TPU에 연결되면 추론 벤치마크를 실행할 수 있습니다.
Llama2-7B 추론 벤치마크 실행
JetStream 및 MaxText를 설정하고, 모델 체크포인트를 변환하고, 추론 벤치마크를 실행하려면 GitHub 저장소의 안내를 따르세요.
추론 벤치마크가 완료되면 TPU 리소스를 삭제해야 합니다.
삭제
TPU를 삭제합니다.
gcloud compute tpus queued-resources delete QUEUED_RESOURCE_ID \ --project PROJECT_ID \ --zone ZONE \ --force \ --async