v6e TPU에서 MaxDiffusion 추론
이 튜토리얼에서는 TPU v6e에서 MaxDiffusion 모델을 제공하는 방법을 보여줍니다. 이 튜토리얼에서는 Stable Diffusion XL 모델을 사용하여 이미지를 생성합니다.
시작하기 전에
칩 4개가 있는 TPU v6e를 프로비저닝할 준비를 합니다.
Cloud TPU 환경 설정 가이드를 따라 Google Cloud 프로젝트를 설정하고, Google Cloud CLI를 구성하고, Cloud TPU API를 사용 설정하고, Cloud TPU를 사용할 수 있는 액세스 권한이 있는지 확인합니다.
Google Cloud 로 인증하고 Google Cloud CLI의 기본 프로젝트 및 ZONE을 구성합니다.
gcloud auth login gcloud config set project PROJECT_ID gcloud config set compute/zone ZONE
용량 확보
TPU 용량을 확보할 준비가 되면 Cloud TPU 할당량에서 Cloud TPU 할당량에 관해 자세히 알아보세요. 용량 확보에 관해 더 궁금한 점이 있으면 Cloud TPU 영업팀 또는 계정팀에 문의하세요.
Cloud TPU 환경 프로비저닝
TPU VM은 GKE, GKE 및 XPK 또는 대기열에 추가된 리소스로 프로비저닝할 수 있습니다.
기본 요건
- 프로젝트에Google Cloud 프로젝트 내에서 액세스할 수 있는 최대 칩 수를 지정하는
TPUS_PER_TPU_FAMILY
할당량이 충분한지 확인합니다. - 프로젝트에 다음에 충분한 TPU 할당량이 있는지 확인합니다.
- TPU VM 할당량
- IP 주소 할당량
- Hyperdisk Balanced 할당량
- 사용자 프로젝트 권한
- XPK와 함께 GKE를 사용하는 경우 XPK를 실행하는 데 필요한 권한은 사용자 또는 서비스 계정의 Cloud 콘솔 권한을 참고하세요.
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
Conda 환경 만들기
Miniconda의 디렉터리를 만듭니다.
mkdir -p ~/miniconda3
Miniconda 설치 프로그램 스크립트를 다운로드합니다.
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
Miniconda를 설치합니다.
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
Miniconda 설치 프로그램 스크립트를 삭제합니다.
rm -rf ~/miniconda3/miniconda.sh
PATH
변수에 Miniconda를 추가합니다.export PATH="$HOME/miniconda3/bin:$PATH"
~/.bashrc
를 새로고침하여PATH
변수에 변경사항을 적용합니다.source ~/.bashrc
새 Conda 환경을 만듭니다.
conda create -n tpu python=3.10
Conda 환경을 활성화합니다.
source activate tpu
MaxDiffusion 설정
MaxDiffusion 저장소를 클론하고 MaxDiffusion 디렉터리로 이동합니다.
git clone https://github.com/google/maxdiffusion.git && cd maxdiffusion
mlperf-4.1
브랜치로 전환합니다.git checkout mlperf4.1
MaxDiffusion을 설치합니다.
pip install -e .
종속 항목을 설치합니다.
pip install -r requirements.txt
JAX를 설치합니다.
pip install jax[tpu]==0.4.34 jaxlib==0.4.34 ml-dtypes==0.2.0 -f https://storage.googleapis.com/jax-releases/jax_nightly_releases.html -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
추가 종속 항목을 설치합니다.
pip install huggingface_hub==0.25 absl-py flax tensorboardX google-cloud-storage torch tensorflow transformers
이미지 생성
TPU 런타임을 구성할 환경 변수를 설정합니다.
LIBTPU_INIT_ARGS="--xla_tpu_rwb_fusion=false --xla_tpu_dot_dot_fusion_duplicated=true --xla_tpu_scoped_vmem_limit_kib=65536"
src/maxdiffusion/configs/base_xl.yml
에 정의된 프롬프트와 구성을 사용하여 이미지를 생성합니다.python -m src.maxdiffusion.generate_sdxl src/maxdiffusion/configs/base_xl.yml run_name="my_run"
이미지가 생성되면 TPU 리소스를 삭제해야 합니다.
삭제
TPU를 삭제합니다.
gcloud compute tpus queued-resources delete QUEUED_RESOURCE_ID \ --project PROJECT_ID \ --zone ZONE \ --force \ --async