הסקת מסקנות של MaxDiffusion ביחידות TPU v6e
במדריך הזה נסביר איך להפעיל מודלים של MaxDiffusion ב-TPU v6e. במדריך הזה, תלמדו איך ליצור תמונות באמצעות מודל Stable Diffusion XL.
לפני שמתחילים
הכנה להקצאת TPU v6e עם 4 שבבים:
כדי להגדיר פרויקט, להגדיר את Google Cloud CLI, להפעיל את Cloud TPU API ולוודא שיש לכם גישה לשימוש ב-Cloud TPU, פועלים לפי המדריך הגדרת סביבת Cloud TPU Google Cloud .
מאמתים את 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
- הרשאות משתמשים בפרויקט
- אם אתם משתמשים ב-GKE עם Cluster Toolkit, כדאי לעיין במאמר בנושא דרישות מוקדמות ל-Cluster Toolkit.
הקצאת 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
יוצרים ספרייה בשביל 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
מוסיפים את Miniconda למשתנה
PATH:export PATH="$HOME/miniconda3/bin:$PATH"
טוענים מחדש את
~/.bashrcכדי להחיל את השינויים על המשתנהPATH:source ~/.bashrc
יוצרים סביבת Conda חדשה:
conda create -n tpu python=3.10
מפעילים את סביבת Conda:
source activate tpu
הגדרת MaxDiffusion
משכפלים את מאגר MaxDiffusion ב-GitHub ועוברים לספרייה 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 -i https://us-python.pkg.dev/ml-oss-artifacts-published/jax/simple/ -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