Managed Service for Apache Spark מאפשר לצרף יחידות לעיבוד גרפי (GPU) לצמתי ה-master וה-worker ב-Compute Engine באשכול Managed Service for Apache Spark. אתם יכולים להשתמש במעבדי ה-GPU האלה כדי להאיץ עומסי עבודה ספציפיים במופעים, כמו למידת מכונה ועיבוד נתונים.
מידע נוסף על האפשרויות לשימוש ב-GPU ועל סוגי חומרת ה-GPU שזמינים אפשר לקרוא במאמר GPU ב-Compute Engine.
לפני שמתחילים
- ל-GPU נדרשים דרייברים ותוכנה מיוחדים. הפריטים האלה
מותקנים מראש בתמונות של Managed Service for Apache Spark
-ml(מומלץ להשתמש בתמונות של-ml), ואפשר להתקין אותם באופן ידני כשצריך. - כדאי לקרוא על תמחור של יחידות GPU ב-Compute Engine כדי להבין את העלות של שימוש ביחידות GPU במופעים.
- במאמר בנושא הגבלות על מקרים עם GPU מוסבר איך המקרים האלה פועלים באופן שונה ממקרים ללא GPU.
- כדי לוודא שיש לכם מכסת GPU מספקת (
NVIDIA_T4_GPUS, NVIDIA_P100_GPUSאוNVIDIA_V100_GPUS) בפרויקט, כדאי לעיין בדף המכסות של הפרויקט. אם יחידות ה-GPU לא מופיעות בדף המכסות או שאתם צריכים מכסת GPU נוספת, שולחים בקשה להגדלת המכסה.
סוגים של יחידות GPU
השירות Managed Service for Apache Spark תומך בסוגי ה-GPU הבאים. כשמצרפים יחידות GPU לאשכול Managed Service for Apache Spark, צריך לציין את סוג ה-GPU.
-
nvidia-tesla-l4- NVIDIA® Tesla® L4 -
nvidia-tesla-a100- NVIDIA® Tesla® A100 -
nvidia-tesla-p100- NVIDIA® Tesla® P100 -
nvidia-tesla-v100- NVIDIA® Tesla® V100 -
nvidia-tesla-p4- NVIDIA® Tesla® P4 -
nvidia-tesla-t4- NVIDIA® Tesla® T4 -
nvidia-rtx-pro-6000- NVIDIA® RTX® PRO 6000 -
nvidia-tesla-p100-vws- תחנות עבודה וירטואליות של NVIDIA® Tesla® P100 -
nvidia-tesla-p4-vws- NVIDIA® Tesla® P4 Virtual Workstations -
nvidia-tesla-t4-vws- NVIDIA® Tesla® T4 Virtual Workstations
צירוף יחידות GPU לאשכול
כדי לצרף יחידות GPU לאשכול Managed Service for Apache Spark, כשיוצרים את האשכול צריך לציין תמונת -ml (מומלץ) או להשתמש בפעולת אתחול כדי להתקין מנהלי התקנים של GPU.
בדוגמאות הבאות מצוין או מניחים שימוש בתמונה 2.3-ml-ubuntu כשיוצרים אשכול.
מסוףGoogle Cloud
כדי לצרף יחידות GPU לאשכול Managed Service for Apache Spark, מבצעים את השלבים הבאים:
- פותחים את הדף Create cluster.
- בקטע Worker configuration (הגדרות של Worker), לוחצים על הכרטיסייה GPUs (מעבדים גרפיים) ומציינים את הסוג והמספר של המעבדים הגרפיים.
- כברירת מחדל, ההגדרות של צומת ה-driver (הצומת הראשי) זהות להגדרות של ה-primary worker. בקטע Additional configuration (הגדרות נוספות), אפשר ללחוץ על Driver node (צומת של מנהל התקן) כדי לבטל את הסימון של התיבה Default driver node to the same as primary worker (צומת ברירת המחדל של מנהל ההתקן זהה לצומת העובד הראשי) ולציין את סוג המכונה לצומת של מנהל ההתקן.
CLI של gcloud
כדי לצרף GPU לצומת הראשי ולצומתי העובד הראשי והמשני באשכול Managed Service for Apache Spark, יוצרים את האשכול באמצעות הדגלים gcloud dataproc clusters create
‑‑master-accelerator,
‑‑worker-accelerator ו-
‑‑secondary-worker-accelerator. הדגלים האלה מקבלים את הערכים הבאים:
- סוג ה-GPU לצירוף לצומת
- מספר ה-GPU לצירוף לצומת
חובה לציין את סוג ה-GPU, ומספר ה-GPU הוא אופציונלי (ברירת המחדל היא GPU אחד).
לדוגמה:
gcloud dataproc clusters create cluster-name \ --image-version=2.3-ml-ubuntu \ --region=region \ --master-accelerator type=nvidia-tesla-t4 \ --worker-accelerator type=nvidia-tesla-t4,count=4 \ --secondary-worker-accelerator type=nvidia-tesla-t4,count=4 \ ... other flags
API בארכיטקטורת REST
כדי לצרף יחידות GPU לצומת הראשי ולצומתי העובדים הראשיים והמשניים באשכול Managed Service for Apache Spark, ממלאים את השדות InstanceGroupConfig.AcceleratorConfig acceleratorTypeUri ו-acceleratorCount כחלק מבקשת ה-API cluster.create. הערכים האפשריים בשדות האלה הם:
- סוג ה-GPU לצירוף לצומת
- מספר ה-GPU לצירוף לצומת
התקנת דרייברים של GPU
כדי להשתמש ב-GPU שמצורפים לצמתים של Managed Service for Apache Spark, צריך להתקין דרייברים של GPU.
במקום להשתמש בדרייברים של GPU שמותקנים בתמונות של Managed Service for Apache Spark
-ml, אפשר להשתמש בפעולות האתחול הבאות כדי להתקין דרייברים של GPU כשיוצרים אשכול:
אימות ההתקנה של הדרייבר של ה-GPU
כדי לוודא שהתקנתם את מנהל ההתקן של ה-GPU באשכול, מתחברים באמצעות SSH לצומת הראשי של האשכול ומריצים את הפקודה הבאה:
nvidia-smi
אם מנהל ההתקן פועל בצורה תקינה, בתוצאה יוצגו הגרסה של מנהל ההתקן ונתונים סטטיסטיים של ה-GPU (ראו אימות ההתקנה של מנהל ההתקן של ה-GPU).
הגדרות של Spark
כששולחים עבודה ל-Spark, אפשר להשתמש במשתנה הסביבה LD_PRELOAD עם המאפיין spark.executorEnv של הגדרות Spark runtime environment property כדי לטעון מראש את הספריות הנדרשות.
דוגמה:
gcloud dataproc jobs submit spark --cluster=CLUSTER_NAME \ --region=REGION \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --properties=spark.executorEnv.LD_PRELOAD=libnvblas.so,spark.task.resource.gpu.amount=1,spark.executor.resource.gpu.amount=1,spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh
דוגמה למשימת GPU
אתם יכולים לבדוק את ה-GPU ב-Managed Service for Apache Spark על ידי הפעלת אחת מהמשימות הבאות, שמועילות כשמפעילים אותן עם GPU:
- מריצים אחת מהדוגמאות של Spark ML.
- כדי להריץ חישוב מטריצה, מריצים את הדוגמה הבאה עם
spark-shell:
import org.apache.spark.mllib.linalg._
import org.apache.spark.mllib.linalg.distributed._
import java.util.Random
def makeRandomSquareBlockMatrix(rowsPerBlock: Int, nBlocks: Int): BlockMatrix = {
val range = sc.parallelize(1 to nBlocks)
val indices = range.cartesian(range)
return new BlockMatrix(
indices.map(
ij => (ij, Matrices.rand(rowsPerBlock, rowsPerBlock, new Random()))),
rowsPerBlock, rowsPerBlock, 0, 0)
}
val N = 1024 * 4
val n = 2
val mat1 = makeRandomSquareBlockMatrix(N, n)
val mat2 = makeRandomSquareBlockMatrix(N, n)
val mat3 = mat1.multiply(mat2)
mat3.blocks.persist.count
println("Processing complete!")