v6e TPU에서 MaxDiffusion 추론

이 튜토리얼에서는 TPU v6e에서 MaxDiffusion 모델을 제공하는 방법을 보여줍니다. 이 튜토리얼에서는 Stable Diffusion XL 모델을 사용하여 이미지를 생성합니다.

시작하기 전에

칩 4개가 있는 TPU v6e를 프로비저닝할 준비를 합니다.

  1. Cloud TPU 환경 설정 가이드를 따라 Google Cloud 프로젝트를 설정하고, Google Cloud CLI를 구성하고, Cloud TPU API를 사용 설정하고, Cloud TPU를 사용할 수 있는 액세스 권한이 있는지 확인합니다.

  2. 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 할당량
  • 사용자 프로젝트 권한

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 환경 만들기

  1. Miniconda의 디렉터리를 만듭니다.

    mkdir -p ~/miniconda3
  2. Miniconda 설치 프로그램 스크립트를 다운로드합니다.

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
  3. Miniconda를 설치합니다.

    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
  4. Miniconda 설치 프로그램 스크립트를 삭제합니다.

    rm -rf ~/miniconda3/miniconda.sh
  5. PATH 변수에 Miniconda를 추가합니다.

    export PATH="$HOME/miniconda3/bin:$PATH"
  6. ~/.bashrc를 새로고침하여 PATH 변수에 변경사항을 적용합니다.

    source ~/.bashrc
  7. 새 Conda 환경을 만듭니다.

    conda create -n tpu python=3.10
  8. Conda 환경을 활성화합니다.

    source activate tpu

MaxDiffusion 설정

  1. MaxDiffusion 저장소를 클론하고 MaxDiffusion 디렉터리로 이동합니다.

    git clone https://github.com/google/maxdiffusion.git && cd maxdiffusion
  2. mlperf-4.1 브랜치로 전환합니다.

    git checkout mlperf4.1
  3. MaxDiffusion을 설치합니다.

    pip install -e .
  4. 종속 항목을 설치합니다.

    pip install -r requirements.txt
  5. 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
  6. 추가 종속 항목을 설치합니다.

     pip install huggingface_hub==0.25 absl-py flax tensorboardX google-cloud-storage torch tensorflow transformers 

이미지 생성

  1. TPU 런타임을 구성할 환경 변수를 설정합니다.

    LIBTPU_INIT_ARGS="--xla_tpu_rwb_fusion=false --xla_tpu_dot_dot_fusion_duplicated=true --xla_tpu_scoped_vmem_limit_kib=65536"
  2. 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