הסקת מסקנות של MaxDiffusion ביחידות TPU v6e

במדריך הזה נסביר איך להפעיל מודלים של MaxDiffusion ב-TPU v6e. במדריך הזה, תלמדו איך ליצור תמונות באמצעות מודל Stable Diffusion XL.

לפני שמתחילים

הכנה להקצאת TPU v6e עם 4 שבבים:

  1. כדי להגדיר פרויקט, להגדיר את Google Cloud CLI, להפעיל את Cloud TPU API ולוודא שיש לכם גישה לשימוש ב-Cloud TPU, פועלים לפי המדריך הגדרת סביבת Cloud TPU Google Cloud .

  2. מאמתים את Google Cloud הפרויקט ואת האזור שמוגדרים כברירת מחדל ב-Google Cloud CLI.

    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 באמצעות GKE, באמצעות GKE ו-Cluster Toolkit, או כמשאבים בתור.

דרישות מוקדמות

  • מוודאים שלפרויקט יש מספיק TPUS_PER_TPU_FAMILY מכסת שימוש, שמציינת את המספר המקסימלי של שבבים שאפשר לגשת אליהם ב Google Cloud פרויקט.
  • מוודאים שיש בפרויקט מכסת 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

רשימה מלאה של סטטוסים של בקשות למשאבים שנמצאים בתור זמינה במאמר בנושא משאבים בתור.

התחברות ל-TPU באמצעות SSH

   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. מוסיפים את Miniconda למשתנה PATH:

    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 ב-GitHub ועוברים לספרייה 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 -i https://us-python.pkg.dev/ml-oss-artifacts-published/jax/simple/ -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